PCS2021:VVC基于神经网络改进SAO
本文來自PCS2021論文《Revisiting the Sample Adaptive Offset post-filter of VVC with Neural-Networks》
在HEVC中就已經引入SAO來解決振鈴效應,VVC中的SAO和HEVC中的基本相同。論文通過神經網絡(NN)來改進SAO的性能,其中SAO的基本原理保持不變,但是原先SAO對重建像素的分類方法被替換為NN。通過NN的改進VVC上SAO在RA配置下BD-Rate增益為2.3%,并且和其他基于NN的方法相比復雜度很低。
SAO
SAO的基本思想是將CTU內的像素劃分為不同類別,然后對每個類別內的像素加一個補償值。根據類別劃分方式的不同有兩種補償方式:邊界補償(EO)和邊帶補償(BO)。
EO是依據和旁邊兩個像素的關系將重建像素分為NC=5類,共有4個補償值(類別0補償值為0),如Fig.1所示。碼流中需要傳輸這4個補償值。
BO是將像素按照取值范圍(8bit為0...255)分為32個條帶。然后選擇連續的(NC-1)=4個條帶給予補償值off(n),如Fig.2所示。碼流中需要傳輸這4個補償值,和選擇的第一條邊帶的位置。
論文方法
算法框架
論文的整體框架SAO-CNN如Fig.3所示。它保留了SAO的主要原理,但是對于像素的分類選擇使用K個CNN。分類器將重建像素分為NC個類別,其中每個CNN為每個像素s輸出權重w(s)。這將產生比SAO更多的類別,因為CNN的不同輸出可能會被認為是不同類別。
和SAO類似,有一個補償值off_i和當前CTU使用的CNN(i)相關,
由于CNN的輸出包含隱式的分類結果,所以不同的corr數量可能會遠多于SAO的4個補償值。需要將CNN的M個輸出聚合,
語法元素
typeIdx用于編碼CNN的索引。absOff和signOff用于編碼補償值off。由于低碼率時corr的數量會增加且和區域的相關性有關,off_i的值可以從相鄰CTU預測。
網絡結構
網絡結構通過最小化每個像素的操作數(MAC)和參數數量來降低整體復雜度。CNN只包含6層,每層通道數16到32或64。有兩個版本,其中v2比v1計算復雜度稍低,如表2。
網絡架構如Fig.4,
假設CTU尺寸為SxS,對于尺寸為cxc的卷積核,每個像素的MAC為,
實驗結果
訓練
實驗使用BVI-DVC數據集中的800個序列構建訓練集,每個序列包含64幀,10bit,YCbCr420格式,從270p到2160p四種分辨率。這些序列使用VTM編碼,使用RA和AI配置,QP={22,27,32,37}。在編碼和解碼過程中,啟動傳統的環路濾波。對每個QP,隨機選擇在SAO處理前的壓縮視頻幀和對應的原始視頻幀,分成128x128的塊并轉換成YCbCr444格式。
CNN的訓練使用Tensorflow框架,訓練參數為:l2損失函數,Adam優化器,batch size=20,訓練130輪。共訓練了16個模型,如表3。
VTM中實現
本文使用SAO-CNN框架替換VTM10.0中的SAO。CNN推理模型使用C++實現,使用32位浮點或16位量化權重。對于后者,會將32位的NN的權重量化為16位以使所有計算都可以使用整數完成。還可以使用SIMD加速,編碼器和解碼器相比32位浮點模型的加速比分別為1.4和2.1,而BD-Rate幾乎不變,如表4。除了加速,整數計算還可以保證編碼器和解碼器的計算精度相同,不會在重建幀中出現漂移誤差。
結果
表5和表6是實驗結果,對應v1模型在亮度分量上RA和AI配置的BD-Rate分別為-2.86%和-2.42%,色度分別為-7%和-5%。
編碼和解碼時間比是在沒有GPU的單核處理器上測的,相比于VTM10,對于v2模型編碼器復雜度低于1.3x,解碼時間在6x到32x間。
感興趣的請關注微信公眾號Video Coding
?
總結
以上是生活随笔為你收集整理的PCS2021:VVC基于神经网络改进SAO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JBOSS的下载安装、环境变量配置以及部
- 下一篇: lenovo微型计算机如何拆t410,联