深度学习赋能视频编码
深度學習賦予了諸如計算機視覺等領域新的研究契機,其應用也獲得了視頻編碼領域的諸多關注。在LiveVideoStack線上分享中北京大學信息技術學院 助理研究員王苫社詳細介紹了當下深度學習在視頻編碼中的應用,以及其在視頻編碼標準中的前景。
文 / 王苫社
整理 / LiveVideoStack
直播回放
https://www2.tutormeetplus.com/v2/render/playback?mode=playback&token=edc99c13b9a24a2093486239dbac8785
大家好,我是來自北京大學的王苫社,本次帶來的分享主要是從神經網絡視頻編碼歷史和基于深度學習的視頻編碼進展兩方面來與大家探討關于深度學習與視頻編碼中的一些問題。
1. 神經網絡視頻編碼歷史
1.1 起源
基于神經網絡來做視頻編碼相關的內容最早可以追溯到上世紀八十年代,那時已經有人將三層人工神經網絡用于圖像變換編碼,甚至有人在嘗試神經網絡硬件電路的實現。
到上世紀九十年代初,學界已經出現了基于多層感知機的圖像編碼,他們使用多層感知機的結構來做DPCM編碼,這也是預測技術使用網絡結構的第一篇Paper。
到九十年代中期的時候已經有了自適應預測編碼,當時主要采用的是將圖像劃分為小塊進行編碼,同時也出現了利用空域臨近像素作為輔助預測的方式。
到2000年左右關于編碼出現了端到端的多層感知機編碼和有圖像擴展到視頻編碼兩個主要問題。
自編碼器在2006年開啟了深度學習時代。
2. 基于深度學習的視頻編碼進展
?
接下來我將從預測增強、環路濾波和深度學習與視頻編碼標準三個方面來為大家介紹基于深度學習的視頻編碼到目前為止的進展。
首先為大家描述一下深度學習在視頻編碼框架中都應用到了哪些環節。早期在VVC的前身JEM中就已經有人提出了幀內預測的方案,幀間編碼里需要重點關注分像素的插值、預測增強和參考幀質量提升三個方面,環路濾波無論在哪一代標準里使用基于深度學習的方式都能提升預測性能,模式決策在編碼優化中能夠通過犧牲一定性能來獲得很好的編碼加速,基于神經網絡的部分也有人提出由神經網絡直接決策RDO中的一系列劃分和模式選擇的問題。
2.1 幀內預測
?
幀內預測基本可以總結為是一種數據驅動的幀內預測方法,工作中是使用對應塊周圍的左側一列和上面一行,甚至可能使用周圍左側兩列或者上面兩行來對當前所對應的塊進行預測,這其中的工作是基于網絡復雜度較高的全卷積網絡,分為低復雜度和全復雜度兩種情況。低復雜度是將網絡參數減半,從數據中分析可以得出網絡參數減半對性能沒有明顯地下降,復雜度卻降低了很多,一般情況下可以認為性能提升的空間和復雜度的降低之間能夠尋找到非常好的treat off。對于幀內預測而言,DC和planar在雙模型的結構里是比較特殊的模式,所以要為DC和planar訓練專門的模型,其余的幀內預測在使用相同的網絡結構后可以使性能得到進一步的提升。從數據當中可以知道,無論怎樣使用數據網絡和降低參數量,網絡復雜度依舊不能達到預期。
關于幀內預測還可以對Intra 8x8 PU 做進一步的殘差去除。
如上圖所示,右下角如果是一個8x8 PU,在獲取到HEVC最右的Intra mode之后,再使用它周圍的殘差空間相關性進一步對產生的殘差進行學習,殘差結合已經獲取到的重建值最終得到輸出結果。
2.2 基于深度學習的分像素插值
基于深度學習的分像素插值分為針對1/2和1/4像素設計神經網絡兩個工作。上圖左側是只針對1/2像素設計神經網絡,右側是結合圖像的超分辨率技術把1/4像素涉及神經網絡也考慮在內。傳統技術在視頻編碼獲得3%的增益十分困難,但基于深度學習的插值方式可以做到這一點。
幀間預測增強的技術需要利用空域和時域的聯合信息去構建網絡結構,通過周圍重建像素和時域參考像素結合輸入,輸出是對當前幀間提升的預測。時域參考往往在應用中有一些方式技巧,比如對當前塊在參考幀上做粗略的運動估計,對應塊和當前塊相關性更強,更有利于幀間預測的工作。
在幀間預測提升預測準確性方面還有兩個工作分別是幀間雙向預測(BIP)和虛擬參考幀生成,雙向預測對于B幀編碼塊來說有前向和后向預測,雙向預測在average之后就可以拿到塊對應的預測值。對于雙向預測部分,我們基于前后向預測的權重分配設計了一個網絡結構,利用前向后向生成當前所預測塊的預測值,性能提升接近3%,在LDB情況下最高也可以獲得1.7%的增益,雖然對性能的提升效果非常明顯,但同時也提高了編解碼的復雜度。對于RA結構下,最高層幀的前向參考集合和后向參考集合會出現重復的參考幀,采用預定的方式拿掉之后使用前向和后向的參考幀生成虛擬參考幀,使當前參考幀的前向參考集合和后向參考集合都是完全不同的幀,對性能的提升也非常可觀。但在運動劇烈的情況下會導致性能下降,在此方法基礎上進行改進之后可以不直接替換參考幀,而是將虛擬參考幀直接放到尾端,同時編碼新的Reference index,這樣做也可以在性能上獲得比較明顯的增益,最終在HEVC上性能增益達到4.6%,而JEM7.1上性能增益不到1%,這是由于JEM本身對于幀間預測的提升技術做了很多工作,預測準確性有很大的提高。
2.3 環路濾波
2.3.1 基于整幀的處理
環路濾波基于整幀的處理是整幀拿到網絡結構里進行濾波之后再使用網絡結構進行一遍濾波,這時會收到很明顯的增益,對于網絡結構的設計也要有一定技巧。整幀本身幀內內容相關性很強,不同內容會在濾波方式選擇上存在差異。
幀內編碼不會用于后續的參考,所以用網絡結構可以提升當前幀所對應的質量。在不同QP下需要訓練不同的網絡結構,完成所有編碼之后可以得到殘差,再使用濾波處理對殘差進一步降低。
2.3.2 基于內容特性的神經網絡環路濾波
?
整幀是比較大的粒度,在實驗中不得不考慮到其對應的內容差異性,針對不同內容特性的視頻圖像訓練CNN模型,在考慮到內容的自適應特性情況下,我們將CTU分為不同的內容類別,不同的類別使用不同的CNN模型,這樣做在RA情況下可以獲得6%的增益。網絡結構設計考慮到受到復雜度約束,層數限制在9-10層,有人在此基礎做了些拓展,層數增加到十幾層甚至三十幾層,最終會收獲接近10%的增益甚至更高。
2.3.3 智能編碼與VVC(JVET-N0110)
JVET-N0110這個提案在ALF之后放了一個淺層的神經網絡,為了降低復雜度使亮度分量與色度分量共享網絡,又為了進一步提升性能且考慮到比較小的內容自適應特性,在幀級、CTU和32x32塊上都放了開關。對于編碼端來講它的復雜度沒有發生改變,這是因為在測試中經常會遇到CPU太差但GPU很好的情況,這時運行VVC的參考軟件GPU的速度相比CPU就顯得不是很慢了。1.36%的性能增益在解碼端只有47%的復雜度增加,大體還是在允許范圍內的。
2.3.4 智能編碼與VVC(JVET-N0133)
JVET-N0133這個提案里也提到了網絡結構,但它是將所有濾波包括Deblock、SAO、ALF全部替換,在設計之中充分考慮到了塊劃分結構和QP。
2.3.5 智能編碼與VVC(JVET-N0169)
?
JVET-N0169提案表示不同位置下神經網絡獲取的性能的差異還是存在的,QP和塊劃分結構必須作為很重要的輔助信息輸入,本提案為了進一步提速而分塊進行濾波,這樣就可以充分利用GPU上的并行資源提升并行化程度。
2.3.6 智能編碼與VVC(JVET-N0254)
?
在JVET-N0254網絡結構里提出了一種深度可分離卷積,它可以有效減少網絡結構的參數量,降低網絡復雜度的提升,編碼端編碼復雜度沒有太多改變,但解碼復雜度提升幅度很大。
2.3.7 智能編碼與AVS3
?
在國內的AVS3標準中對于深度學習與視頻編碼的探索也有很多提案,其中代表性的提案內容是對QP進行分段,一段QP使用一個網絡結構。同樣在替換所有濾波之后發現深度學習的方式依然可以帶來非常可觀的性能增益。
3. 幀內編碼模式決策
3.1 基于CNN的CU模式決策
?
基于CNN的CU模式決策是一個相當系統性的工作,首先它需要實現FastCUMode,并且應用在HEVC Intra硬件編碼器的實現里。
3.2 HEVC Intra硬件編碼器實現
HEVC Intra硬件編碼器的實現使用類似LeNet結構,QP在其中作為必要考慮因素。關于模式決策是將編碼模式決策建模為二分類問題,預測當前編碼單元是否劃分直接當做分類問題對待。
3.3 VLSI設計CNN加速模塊
?
通過硬件設計的加速模塊可以看到63%的時間節省,同時降低2.7%的編碼性能,相對傳統技術來講性價比不是特別高,但考慮到這種方法已經在硬件化世界做了一些實現,綜合各方面還是比較好的選擇。
4. 幀內編碼模式決策
4.1 CTU級處理
?
對于視頻編碼而言,有時直接采用下采樣編碼然后對于重構部分直接上采樣返回的質量也很可觀,CTU級處理思路是指采用全分辨率編碼,上采樣模塊使用DCT插值或CNN,首先用RDO決策上采樣方式,之后再做一次RDO來決定是否采用下采樣方式。
下采樣-上采樣編碼中有很多技巧性的設計,比如亮度分量網絡和色度分量處理,其中色度分量網絡處理是使用亮度作為引導,這一切都是為了提升編碼效率。
對當前塊做了下采樣之后對應QP便不再適用,此時需要對QP進行調整,通過擬合的方式可以得到原始QP與下采樣QP之間存在著線性關系,這種線性關系可以保證在下采樣之后的編碼效率。
上圖所述,不同QP情況下所對應的編碼效率提升非常明顯,其中特別給出的UHD超高清分辨率下的性能增益是9%,對于大分辨序列來講,先下采樣之后再上采樣返回,對碼率的節省至少在某些區域上看來是非常明顯的,這點也可以在classes A和E上的到證實。
在算法命中率方面,相當大比例的區域都和傳統方式差不多,與深度學習的方式吻合。
從個人的角度,就目前看來,借助深度學習將視頻編碼的性能提升10%,甚至更多還是非常有可能的,但于此同時整體的復雜度也必然是需要重點關注與研究的問題。目前,基于深度學習的端到端的視頻編碼也已經有了一些新的成果。而對于為什么深度學習能夠帶來明顯的視頻編碼性能提升?這個問題迄今為止尚未有人能夠提供細致、清楚的理論依據。雖然深度學習為視頻編碼性能的提升提供了許多的思路,但距離其在視頻編碼標準當中的應用,仍需要很長的一段時間來進行探索。
更多精彩內容:人物專訪(行業趨勢解讀)、LiveVideoStackCon 大會演講內容回顧及線上分享內容回顧(+線上分享PPT資料下載),=>>點擊【閱讀原文】!
總結
以上是生活随笔為你收集整理的深度学习赋能视频编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一站式体验腾讯云音视频及融合通信技术
- 下一篇: LiveVideoStackCon 20