本文整理自 Google 視頻壓縮核心算法組軟件工程師陳誠在 RTC 2018 實時互聯網大會編解碼技術專場上的演講分享。他在演講中主要分享了 AV1 的研發現狀,詳細分享了 AV1 的編碼算法、編碼效果。算法
歡迎訪問 RTC 開發者社區,與更多 RTC 開發者交流經驗。
瀏覽器
根據思科公司今年發佈的報告稱,預計 2021 年,視頻將會成爲互聯網產品的主要需求,超過80%的互聯網流量將會被視頻佔據。屆時,與視頻相關的服務與需求將提高約50%,而其中對超高清的需求將提高約30%。同時,互聯網對直播和其它實時視頻服務的需求將會是目前的15倍。微信
如此快速的發展和快速增加的需求,正是互聯網公司推進新一代視頻編解碼技術的動力。markdown
1、AV1 與 AOM 的概況框架
新一代編解碼技術 AV1 已於2018年6月定稿,它有四個特色:機器學習
AV1 是一個開源、免費的生態系統,開放媒體聯盟(AOM)的成員都將支持 AV1工具
AOM 爲 AV1 準備了資金進行法律方面的援助和專利保護性能
AV1 相對於前一代產品使用了更前沿的編碼技術,並取得了較好的壓縮效率學習
在 AOM 的合做框架內爲 AV1 提供了合做開放的環境測試
衆所周知,AV1 的前身是 Google 推出的 VP9。相對於 VP9,AV1 有三個特色:Performance、Platform、Potential。AOM 的框架使得 AV1 ,以及將來視頻的發展都更有活力。儘管 AV1 目前還處於研發和推廣初期,咱們相信它在業界的廣大支持下,會得到比 VP9 更普遍的應用。
開源媒體聯盟 AOM 由 Google、亞馬遜、思科等公司聯合牽頭成立,致力於推廣和研發多媒體的視頻編解碼技術。除了當前與視頻行業緊密相連的互聯網公司外,該聯盟內還有硬件設備廠商、內容供應商、主流瀏覽器廠商等。最近蘋果也加入了 AOM。業界的生態系統也都將支持 AV1。
AV1 工做組共有四個:軟件研發組、硬件研發組、Tapas 組、測試組。軟件和硬件研發組聯合進行 AV1 的研發,同時測試組會對 AV1 的一致性進行檢測。而 Tapas 組則進行專利審覈,並提供法律問題諮詢。
AV1 的研發組是個頗有活力的社區。在整個 AV1 的研發過程當中,已經發表超過15篇學術論文,約有 100 多個研發提案被 AV1 採用。目前你們能夠在網上下載到參考代碼,大約有30萬行代碼,而且平均天天會有15個代碼被提交上來。
AV1 從研發到推廣,將會分爲四個階段:
第一階段,標準的研發與制定
第二階段,桌面瀏覽器對解碼的支持
第三階段,推廣 AV1 在更多硬件與軟件的支持
第四階段,在 AOM 生態系統中支持 AV1 的軟硬件編碼
從2015年的研發開始,到2018年6月的定稿,咱們已經完成了第一階段的目標。目前,咱們正處於第二階段,Google 的 Chrome 瀏覽器上已經實現了軟件解碼。在將來的第3、第四階段中,咱們的主要任務就是硬件設備與內容供應商對 AV1 的支持。預計2020年 AV1 將得到更普遍的應用。
2、AV1 的編碼與算法
與其它視頻編碼軟件類似,AV1 的也分爲一系列連續的模塊,包括分割、預測、變換、量化、熵編碼、環內濾波等。在單元塊劃分上,AV1 支持更多的劃分模式和更大的劃分塊。其前身 VP9 支持最大劃分塊爲 64x64,對每一個方塊能夠遞歸地進行四個子塊的劃分。AV1 支持最大劃分塊爲 128x128,對方塊遞歸的劃分有10種類型,最小的劃分塊爲 4x4。
預測模式分爲幀間預測和幀內預測。在幀內預測主要包含了四個主要工具:
支持更多多種的預測模式
支持從亮度值預測色度值
調色板模式
幀內拷貝模式
AV1 支持56個方向的預測,利用當前塊的上邊界和左邊界,重建的圖像,經過方向的差值來預測當前塊的像素值。它的角度的表達方式是從8個主要的差值方向中,選擇其中之一,並用一個 Delta 值來肯定精確的角度。
除了方向的預測以外,AV1還支持其它的方式對單個像素或當前漸變塊生成預測。以下圖所示,有四種不一樣的差值方法對當前值進行預測,當前值P將會由深藍色模塊的像素差值得到。值得一提的是,另一種遞歸的方式對漸變塊進行預測,利用濾波的方式遞歸地對每一個像素值進行預測,在編解碼方面複雜度會有所提高。
從亮度值預測色度值的工具,它利用了視頻圖像當中亮度值通道與色度值通道具備高度類似性的特色,經過選擇適當的參數再以重建亮度值通道來預測色度值,這個工具對於遊戲視頻具備很好的壓縮效果。
調色板模式將塊內的元素當作幾種離散的顏色,不一樣於直接傳輸像素自己的參數值,而是經過傳輸色塊的顏色編號實現壓縮的目的。AV1支持從8×8到64×64的塊,支持調色板模式,編碼器會自動根據視頻內容選擇是否使用調色板模式,如圖所示的例子,左邊是一個當前模塊被劃分紅了3種不一樣的顏色塊,根據波前的方式逐個編碼塊內的方塊,它的左側和上側的顏色信號將做爲信息在熵編碼中被使用。調色板模式對於當前塊有單一色調的場景十分有用,通常這種場景出如今屏幕內容的壓縮當中。
另外一個對於屏幕內容壓縮很重要的工具叫作幀內拷貝。它的工做原理就是,在預測當前塊時它會去搜索當前幀已重建的圖像部分,好比下圖1中第二個字母 A 和第三個字母 A,它將找到第一個已經被編碼的字母A預測塊,它的預測會很是準確,能夠達到提升壓縮效率的目的。圖形中包含了很是多的字母,就會經過幀內拷貝的模式搜索到很是好的預測效果,大大提升了視頻壓縮效率,僅這幅圖來講,壓縮效率就提高了 50%。
幀間的壓縮工具比幀內的壓縮工具更豐富。AV1 比 VP9 在參考幀的數量和結構上有了進一步的優化,支持8個參考幀,並可以使用其中的7個參考幀進行預測,而 VP9 只使用了其中三個。AV1 還支持分層結構進行雙向預測。
在如今的視頻壓縮標準中,運動估計在比特率中佔有很大一部分,運動的估計通常經過搜尋一個運動向量找到參考幀中對應的塊對當前塊進行預測。在 AV1 裏咱們採用了一種方法叫作運動場投影的方法來獲取運動向量,它的工做原理是經過當前幀的兩個參考幀,而且找到參考幀的對應參考幀得到一個運動軌跡,將運動軌跡投影到當前來幀得到兩個運動向量。當物體是線性運動時,這兩個運動向量將能很好預測到物體的運動軌跡,並得到更精準的預測,從而幫咱們得到更好的壓縮效果。
在咱們有了這些運動向量以後,咱們還須要傳輸它們。而在現有視頻標準中,傳輸運動向量已經佔據了很大的比例。因此咱們 AV1 中採起了一種叫作動態運動向量索引的方法,它不直接傳輸運動向量的具體座標值,而是傳輸它在運動列表中的序號,而後經過查詢得知所用的運動向量。運動向量經過運動場投影的方式得到並加入到運動列表中。咱們經過運動估計的測算將運動列表的向量值進行排序,再經過編碼器選擇對好的序號傳輸給解碼器。
如今的視頻壓縮標準都支持雙向預測,當咱們有了兩個參考幀以後如何把它們融合在一塊兒生成預測塊是值得探討的問題。AV1 在這個方面支持了多種不一樣的方式來生成預測塊,包括平均值運動補償、加權運動補償、楔形分割預測等。
運動塊補償早在 H.263 時代就被提出,在這裏被 AV1 採用。它的原理是利用平滑濾波的方式將兩個運動補償塊重疊在一塊兒,特色是可以消除運動的不連續性帶來的影響,以此提升預測準確率。雙向預測中,咱們能夠經過調整兩個預測快的權重來達到生成不一樣預測快的目的。AV1 除了支持平均運動補償,還會根據參考幀的距離來加權生成預測塊,特色是當一個參考幀距離如今幀很是近的時候它的預測準確度可能更會高,因而咱們給予它更高的權重,當另外一個參考幀距離比較遠的時候咱們會給予遠處的參考幀一個更低的權重,權重並不直接經過比特流傳輸,會經過傳輸序號的方式在預設置的表格裏查詢對應的權重。
AV1 還支持楔形分割預測,能夠彌補方塊運動補償中沒法準確模擬物體邊界的缺點。楔形分割已經做爲查表預存在編解碼器中,經過編碼器選擇合適的最佳的楔形分割方式傳輸比特流來告知解碼器。
方塊的運動補償有一個很大的問題,它沒法模擬實際運動中的大量的捲曲和變換。AV1 採用了基於仿射變換的方塊補償來解決這個問題。AV1 支持從幀到幀的全局變換,也支持塊到塊的局部變換。
在變換處理方面,AV1 除了支持傳統的 DCT,還支持 ADST、fADST、IDT ,因爲他們都是二維可分割的,因此 AV1 共支持16種組合。同時,AV1還支持多種尺寸的變換快,最大爲64x64,最小爲4x4,還支持長方形的變換塊尺寸。AV1 支持 DCT 是由於,它對天然信號具備近似最優解的壓縮效果,而當殘差信號爲單調變化時,那麼 ADST 和反向 ADST 會有很好的壓縮效果。全等變換對於視頻是階躍變換時,會有很好的壓縮效果。
相比 VP9,AV1 增長了不少變換尺寸和變換類型,這使得它的搜索空間大幅增長,編解碼複雜度也有所提高。
在量化方面,AV1 在 VP9 的基礎上增長了幾個新的工具,包括 Delta-q 和 Quantization matrix 等。這些工具使得 AV1 的量化有了更大的靈活性,它的特殊的使用場景下具備很好的使用效果,好比使用參數矩陣可以提高主觀觀測的質量。
在熵編碼方面,AV1 使用了多符號算數編碼,能有較高的吞吐量,具有快速機率模型自適應的特色。
在視頻壓縮技術中,對變換後的係數矩陣的壓縮和傳輸將佔比特流的絕大部分,甚至超過50%,AV1 裏針對這個變換矩陣的傳輸使用了分層編碼的方法,分層編碼將使用兩次掃描對當前塊的矩陣進行壓縮,第一次掃描將會編碼係數的絕對值,第二次編碼將會編碼係數的符號。讓咱們用一個例子來講明分層編碼的過程。以下圖所示,左側表明當前的係數矩陣和掃描的順序,第一行表示第一次編碼,第一次編碼從終止位置開始,逆掃描方向逐漸走向起始位置,深黃色的塊表示當前的像素值,淺黃色表示它能用到的周圍的數值信息,第二行表示第二次編碼從起始位置開始一直到終止位置,第一次編碼只編碼係數的絕對值,第二次編碼將編碼係數的符號。
環內濾波是目前視頻標準的必要組成部分。AV1 除了有傳統的去區塊濾波器,還增長了新工具,好比約束方向加強濾波器(CDEF),還有幀超分辨率重建、環內重建濾波器,以及電影顆粒膠片效果合成器。
AV1 的去區塊濾波器對 Y、U、V 三個信號通道分別採用不一樣的濾波強度。對 Y 通道,水平濾波和垂直濾波採用不一樣的濾波強度。這個設計爲去區塊濾波增長了更多可優化的空間。
約束方向加強濾波器(CDEF),應用在去區塊濾波以後,對每個8x8的塊估計物體的方向,並沿着物體方向採用加強濾波。它能保留物體邊緣的清晰度,提高重建圖像的質量。
幀超分辨率重建,應用在 CDEF 以後。它首先將圖像沿着水平方向降採樣,只對低分辨率圖像進行編碼,在解碼器升採樣把低分率圖像還原爲原分辨率。這個方法顯著提高了低碼率下的編解碼的主觀觀測質量。
環內重建濾波器,是另外一個重要的加強圖像質量的後期處理方法。它包含了兩種濾波器。編碼器從二者中選擇其一。Wiener 濾波器採用可分離的對稱設計。自導向投影濾波器使用兩個重建信號的線性組合來近似真實信號。編碼器經過比較濾波結果,選擇合適的參數,並傳輸給解碼器。
電影膠片顆粒效果合成,是針對高質量視頻而設計的一個工具。電影膠片的顆粒效果,很難用傳統的視頻壓縮方法保留。AV1 將顆粒效果合成做爲後期處理的步驟,對顆粒效果單獨處理。它的工做原理是將電影膠片顆粒效果在編碼前從原視頻中分離出來。分離後的圖像進行普通編解碼,而顆粒效果在最後與解碼後的圖像合成爲最終的輸出視頻。
3、AV1 的壓縮效率對比
咱們對比了 AV1 與 VP9 和 HEVC,嚴謹地講,咱們對比的是這幾種編碼標準所使用的參考軟件實現,AV1 使用的參考軟件實現是 Libaom,VP9使用的是 Libvpx,HEVC 使用的是 x265。咱們的測試環境是 AWCY,它是一個公開的測試集,包含了30多個從360p 到1080p 的測試視頻文件,測試條件固定 QP60幀。在這樣的測試環境下,咱們能夠看到 Libaom 比 Libvpx 約有30%的壓縮效率提高,比 x265 有27%的效率提高。
Facebook 也在他們實際應用場景中,對比測試了 AV一、VP9 和 H.264。AV1 的效率比 H.264 提高了 50%,比 VP9 提高了30%。
莫斯科國立大學每一年也會進行編碼器的效果測試,在他們的測試結果中,AV1 取得了最佳的壓縮效果,明顯超越了 H.26四、H.265 和 VP9。
咱們都知道,如今的視頻壓縮標準用更高的編解碼複雜度換取視頻壓縮效率的提高,固然實際應用中咱們不可能無限制提升編解碼複雜度,那平衡點在哪裏呢?對於視頻點播的公司而言 Netflix 給出了他們的回答。他們認爲 AV1 的編解碼複雜度,若是能控制在 VP9 的 4-10 倍,就能夠應用於他們的產品中。咱們 AV1 的複雜度是多少呢?截止今年8月初,咱們對比了 AV1 與 VP9 在速度 0 到速度 3 的編碼複雜度。先解釋一下,速度 0 表示壓縮效率最高,但速度最慢,速度 3 反之。相比於 VP9,AV1 在速度0是 VP9的70倍,在速度3則已經下降到10倍之內。AOM 軟件開發組正在進行AV1編解碼的優化,這個數值也在不斷降低。
4、AV1的下一步演進
AV1 當前的重要目標是編解碼的優化,在編碼端須要更多的 SIMD 代碼支持,還要從新設計編碼,尤爲是下降在硬件端的複雜度。在編碼方面,咱們須要加快編碼速度,咱們須要更高效的分割算法,更優的濾波器類型、編碼類型、運動估計算法等。
在 AV1 中,咱們使用了不少機器學習算法,它使得 AV1 能作出不少快速的決定,好比對搜尋方塊劃分的類型。咱們相信在接下來的工做中,更好的機器學習算法會有助於 AV1 視頻編解碼的加速。咱們在將來還將繼續嘗試其它新的視頻壓縮工具,好比光流的算法、基於機器學習的預測與合成的算法、基於機器學習的變換方法等。相信在 AOM 的框架下,以及各個成員與整個生態系統的支持下,AV1 在不久的未來會得到更普遍的應用。
現場提問
觀衆:AV1何時可讓全部人使用上?
陳誠:目前 AV1 處於第二階段,咱們已經完成了標準的定稿以及瀏覽器軟件解碼的支持。將來一兩年內會完成與硬件相關的設計與優化,預計在2020年,AOM 組織內的成員將都支持 AV1,那時任何人均可以使用到它。
觀衆:咱們很關心 AV1的性能問題。跟其它編碼器相比,在一樣的質量條件下,壓縮一樣的內容能節省多少碼率。剛剛您已經提供了一些比較詳細的數據。我有一個疑問,印象中,在 Facebook 的測試中,與 H.264進行對比,AV1能節省一半的碼率,咱們知道 HEVC 和 H.264 的比較也是提高了一半。從這個角度講,AV1 和 H.265壓縮比應該是至關的。但從其它報告來看,又顯示 AV1 略勝於 H.265,可是數據略有浮動,有的是20%,有的是40%。您能提供一個比較權威的對比解讀麼?AV1到底比 H.265 強多少?
陳誠:個人說法僅是我的意見,沒法做爲官方解釋來參考。不一樣的測試環境會致使測試效果的不一樣。我認爲有兩方面的差別致使告終果不一樣。首先是所使用的測試集,其次就是測試條件不一樣。關於測試條件,AV1 的研發目前主要爲互聯網公司的視頻點播提供壓縮算法。以 youtube 和 Netflix 來講,他們是給一個固定的碼流來進行壓縮,而AV1與HEVC的對比是基於固定 QP 做爲對比條件。AV1 的設計初衷是在一個固定碼流下進行壓縮,並無針對固定 QP 進行優化。這就致使了在不少的對比測試中,AV1 看起來並無比 HEVC 提高多少。我在解釋是基於 youtube、Netflix 等公司在實際應用環境中的測試結果,他們認爲 AV1 已經超過了 H.26四、H.265。
歡迎關注「聲網Agora」微信公衆號,回覆「RTC」觀看演講視頻回顧、獲取演講 PPT。