LibAOM与AV1的最新研发进展
# Editorial Note #
本次分享我們邀請到了來自Google Open Codec Team的韓敬寧博士,他向我們分享了AV1解碼器的覆蓋,AV1編碼器性能的提升包括AV1壓縮性能的提升和運算復雜度的降低,AV1實時編碼器的應用和基于AV1的圖像編碼器格式AVIF的最新研究進展。
文 / 韓敬寧
整理 / LiveVideoStack
大家好,我是Google Open Codec Team韓敬寧,很高興能有這樣的機會與大家分享關于LibAOM和AV1的最新研發進展。
本次分享主要分為一下幾個部分:AV1解碼器的覆蓋、AV1編碼器性能的提升(AV1壓縮性能的提升和運算復雜度的降低)、AV1實時編碼器的應用、?基于AV1的圖像編碼器格式(AVIF的最新研究進展)。
#1. AV1解碼器的覆蓋
現在主要的支持AV1軟件解碼器的瀏覽器有Chrome、Edge、Firefox、Opera。操作系統中Android、ChromeOS、Linux、Windows都有支持AV1解碼的原生library。為了進一步推動AV1軟件解碼器在移動端的覆蓋,我們團隊還研發了Libgav1 library,它的主要目標是Android設備,在實測的Android設備中Libgav1 library的解碼運行速度相對于Libaom而言能提高2.5倍以上。在硬件解碼器方向通常的最低要求是4K/60fps,大多數硬件解碼器能夠達到8K/60fps的性能。在現有和即將上市的電視中LG、三星、索尼和TCL都是已經有AV1硬件解碼器的覆蓋,手機端則是LG、OPPO、三星、Vivo和小米有AV1硬件解碼器的覆蓋。再GPU、CPU方向AMD、Nvidia和lntel在現在和未來會有更多的AV1硬件解碼器支持。
#2. AV1編碼器的性能
2.1 AV1編碼器的壓縮性能
AV1是在2018年中旬finalize bit-stream經過團隊兩年多的研究和嘗試AV1的壓縮性能在過去兩年中有了顯著的提高,現在相對于VP9而言能達到的peak compression performance是在以PSNR或SSIM這樣的客觀指標條件下能提高36%以上。相對于2018年bit-stream finalization的時候Libaom的AV1的壓縮性能peak (compression) performance在PSNR條件下是能夠提高超過14%,而在SSIM條件下是能夠提高超過17%。這些數字的測試條件是基于通常的standard test set,在YouTube視頻條件下實測壓縮性能增益遠遠大于在此列舉的數字。
2.2 編碼器的速度和內存需求
相對于2018年bit-stream finalization的時候Libaom編碼器的速度提升150倍以上,與此同時在4K的視頻壓縮條件下我們對內存的需求下降了80%。為了更好的支持不同的實際應用場景,Libaom支持不同的一個系列的speed setting(speed setting的數字越高就意味著編碼器的運行速度越快)相對壓縮性能增益會有所損耗。上圖的表格中,speed setting3和3以下通常是比較高的壓縮性能,運行速度5相對于VP9而言更慢一些;speed setting在5以上時,實際AV1的壓縮性能運行速度更高于VP9運行速度,與此同時它會提供19%、16%的壓縮性能增益。在比較encoding time時AV1和VP9都是用single thread進行處理;在speed6條件下,AV1比VP9的壓縮性能提高了16%與此同時它實際的encoder復雜度只有VP9的40%。
2.3 技術亮點
關于編碼器的優化,在很多層面都有新的算法出現包括group of picture level、frame coding level、coding block level,本次在每個層面選一到兩個例子做簡述。我們的codebase是完全開源的,如果大家感興趣,非常歡迎大家能夠參考我們的codebase,如果有新的想法也非常歡迎與我們一起合作。
2.3.1 Group of picture level
在group of picture level 中AV1 Libaom基于的算法是2-pass encoding,通常會有一非常快速的first pass encode去生成一些frame level statistics,2-pass encoding會對它做出一個更好的分析,例如動態的group of picture decision。通常對first pass statistics的分析會試圖提取inter frame correlation和每個frame的acquisition noise的強度,基于這兩個數據去分析當前一系列的frame是否屬于相對穩定、相對靜態或運動非常快、variance非常高的區間。基于這些分析再去決定實際的group of picture會包括多少個frame,在這當中一定要保證當出現scene-cut時,group of picture不會go across the scene-cut point。
2.3.2 Frame level
在frame level Libaom會對所有的long-term reference frame做decomposition。Decomposition的方法是把一個long term reference frame,如果一個 reference frame把它作為long term reference frame,通常會把它分解成Alternate reference frame(ARF)和Overlay frame。ARF會被作為一個正常的frame去encode和decode,在decoder端它不會給用戶playback,它只是作為一個internal reference給后面的frame提供motion compensating prediction。Overlay frame是和ARF處于同一個位置的frame,但是Overlay frame相當于ARF到實際original frame的residual,它會去code這些residual作為實際能夠playback的frame。ARF的好處是它允許對原始信號濾波能夠降低frame里面的noise level,可以對濾波以后的frame做更高reconstruction quality的coding。在Libaom中采用的生成ARF的temporal filtering的non-local mean filter。它的reference patch是通過motion estimation從周圍的frame找到。Filter的kernel會根據當前frame的estimated noise level進行調整。通常概念是,如果noise level越高相對的filter的強度就會更大。
上圖是long-term reference frame就premium coding structure而言,最底層的frame會被分解成ARF和Overlay frame。對于long-term reference frame都是被當成兩個frame去做process。
2.3.3 Coding block level
在coding block level為了更好的平衡編碼器的速度和編碼器的壓縮性能采取了multi-winner multi-stage的搜索philosophy。基本的概念是我們在更靠前的early stage,比如試圖找到prediction mode時會采取比較簡單的rate decision cost estimate去分析在所有可能的prediction mode中找出小部分相對可以提供更好的prediction quality,換句話說更有可能提供更低的RD cost的prediction mode 。在選中的subset當中在下一個stage會對他們進行更精確的rate decision cost estimation,例如transform kernel selection等逐級地選到最好的、最有可能成為最優的coding mode。在motion estimation方向對傳統的diamond shape motion search、center-biased search 和square search算法進行了調整。例如在Libaom中我們采用polar coordinate的sampling approach,就是對在motion search當中的sampling的distribution做了重新調整,使它在搜索密度的方向能夠更加均勻分布,也能提高壓縮性能。
除此之外Libaom也支持對一系列不同的metric的optimization mode,包括SSE、VMAF/VMAF-NEG等。VMAF是近年出現的比較popular的metric。它相對于PSNR也能夠更好的接近實際用戶的視覺感受。在Libaom中對VMAF和VMAF的衍生版本VMAF-NEG也有相應的優化模式,在這個模式下,會允許用戶采取動態的pre-processing filter,也就是說有一個option是可以對原始的視頻信號做pre-filter去增強關鍵的對比度,在安全區間相對降低一些noise level。可以根據VMAF metric在不同的block、不同context下對reconstruction error的penalty不同,對此采取不同的adapt rate trade-off,基于此條件下相對于base line的Libaom也就是對PSNR SSIM Optimization,VMAF mode會在VAMF條件下提高壓縮性能30%-40%,對VMAF-NEG提高大概7%-9%的空間,這些數字是相對于PSNR based Libaom optimization的運行結果。
#3. AV1實時編碼器
Libaom AV1實時編碼器是從Chrome M90開始被enable by default。
在desktop方向,它相對于VP9的壓縮性能提高15%-20%,相對復雜度控制在1.25倍以內。相對于VP9而言,AV1的實時編碼器會提供更好的主觀壓縮指標。在移動端,目前Libaom AV1的實時壓縮器主要的目標是對低分辨率,比如QVGA 的resolution可以支持非常低的比特率條件下進行視頻通信,最低可以達到15kbps。從2020年8月份開始逐漸把Libaom AV1實時編碼器放到production開始roll out。得到的用戶反饋是相對于VP8/H264的軟件編碼器和HEVC的硬件編碼器而言反饋是更好的,有更高的frame rate,更少的freeze,用戶給的quality rating 也更高。Overall在移動端讓用戶有更長的視頻通話時間。
#4. 圖像壓縮格式AVIF
AVIF是基于AV1的圖像壓縮格式,相當于AV1的bitstream在一個HEIF container形式出現,相對于傳統的JPEG 而言,AVIF的壓縮性能要提高超過80%,在同樣的質量條件下,同樣reconstruction quality條件下AVIF所需要的file size 應該是JPEG的五分之一以下。我們團隊正在積極的推進AVIF編碼器的性能優化,在編碼器復雜度方向加速了8倍,與此同時造成的壓縮性能損耗控制在5%左右,對內存的需求降低了5倍。從去年秋天開始Chrome M85已經支持使用AVIF圖像格式,在今年會有更多的運算平臺會支持AVIF格式,比如Android、Firefox和Safari。
#5. Libaom v3.0版本的release
今年3月我們進行了Libaom v3.0版本發布。它相對2.0版本壓縮性提高大約5%以上,編碼器速度進一步加快,如果目標是實時編碼器的話實際會產生的binary size會變小,對VOD setting和Real-time setting做了更好的多線程優化,同時也對整個codebase 做了更系統化的文檔,希望能夠幫助更廣泛的developer society,更容易去讀懂codebase design并方便大家的使用和contribute Libaom的codebase。
以上就是我的全部分享,謝謝大家!
The cover from?creativeboom.com
講師招募?LiveVideoStackCon 2021 北京站
LiveVideoStackCon 2021 北京站(9月3-4日)正在面向社會公開招募講師,歡迎通過?speaker@livevideostack.com?提交個人及議題資料,無論你的公司大小,title高低,老鳥還是菜鳥,只要你的內容對技術人有幫助,其他都是次要的,我們將會在24小時內給予反饋。
總結
以上是生活随笔為你收集整理的LibAOM与AV1的最新研发进展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 流媒体的未来——视频技术如何演变
- 下一篇: 探讨TensorRT加速AI模型的简易方