基於學習的編碼(二):使用CNN對intra frame進行環路濾波
本文算法來自JVET-O0157
介紹
爲了取代VVC環路濾波中的去方塊濾波(DBF)提出來一種下采樣的CNN濾波器。該CNN濾波器在降低神經網絡複雜度的同時能保持編碼效率。它是一個輕量級CNN網絡,能夠高效的控制CNN濾波強度以應對不同量化參數。只用於intra frame。
濾波過程
下圖展示了針對intra frame加入CNN後的環路濾波過程,DBF被CNN替換了。對於inter frame環路濾波和VTM中一樣。
網絡結構
下圖展示了該CNN的網絡結構。其中N表示下采樣步長,M表示卷積核通道數。核心思想是通過下采樣減少計算量,通過控制強度使單個網絡可以用於不同QP。
CNN過程:
-
(N,N,M)卷積層(N倍下采樣)用於提取特徵。
-
將特徵傳給多個residual block來加強濾波。
-
(3,3,NxN)卷積層輸出NxN的特徵圖,DepthToSpace 函數將特徵圖映射爲和輸入圖像尺寸一致。
濾波強度
網絡中除以和乘以Qstep 的目的是控制濾波強度。
對不同Qstep 進行round操作會造成不同水平的失真。所以重建圖像在傳給CNN之前除以正則化的Qstep 來控制失真水平,CNN處理後乘以正則化的Qstep。
正則化的Qstep求解過程如下:
訓練
使用DIV2K數據集(含800幅圖像)生成訓練數據。首先將每幅圖像由RGB轉爲YUV。然後禁用VTM5.0的環路濾波在All Intra(AI)配置下生成重建圖像。然後在Y分量隨機裁剪800000塊,UV分量隨機裁剪800000塊,訓練兩組參數。
實驗結果
下面是N=4,M=32下的測試結果:
下面是一個主觀比較,可以看到脖子處的塊效應被消除了。
該方法在VTM5.0中用預訓練的CNN模型取代DBF,在AI配置下Y、U、V的BD-Rate分別-1.44%,-2.51%,-3.39%。解碼時間爲1040%。
感興趣的請關注微信公衆號Video Coding