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