基於學習的編碼(三):ACNNLF

基於學習的編碼(三):ACNNLF

本文算法來自JVET-M0566提案,介紹了一種adaptive convolution neural network loop filter(ACNNLF)網絡進行環路濾波。

介紹

ACNNLF方法會爲YUV每個分量分別訓練一個CNN,每個CNN只包含2層,共692個參數。編碼器在編碼CTB時會選擇對應的CNN進行處理。ACNNLFs的網絡參數會在I幀的slice header中傳輸,每個CTB只需傳輸使用的ACNNLF的索引。

ACNNLF的設計思想主要是減少CNNLF的網絡參數,增加CNNLFs的模型數量以適應不同視頻內容。有以下特點:

  1. CNN模型小,只包含2個隱藏層。

  2. 爲YUV分別在線(online)訓練一組模型以適應視頻內容,其中三個亮度ACNNLFs,三個色度ACNNLFs。

  3. 編碼器爲亮度和色度CTB選擇最優的ACNNLF進行編碼,並將ACNNLFs模型參數和選擇的ACNNLF索引傳到解碼端。

  4. 解碼器收到ACNNLFs參數和CTB使用的對應索引,選擇對應的ACNNLF進行處理。

如下圖所示,ACNNLF用在ALF階段之後。

 

網絡結構

 

上圖是亮度ACNNLF的網絡結構,其packing和unpacking操作和基於學習的編碼(一):使用CNN進行環路濾波一樣。

  1. 輸入輸出塊尺寸N(默認32)可以隨幀的尺寸變化。例如對尺寸大的幀(2K、4K、1080P)可以選擇N=32或16,對尺寸小的幀可以選擇N=16或8。

  2. 第一個卷積層濾波器尺寸爲L1xL1,L1等於1或3(默認爲1)。在第一層後要進行ReLU處理。

  3. 第二個卷積層濾波器尺寸爲L2xL2,L2等於1或3或5(默認爲3)。在第二層後不進行ReLU處理。

  4. 第一個卷積層處理後數據通道數變爲M(默認16),M可以隨幀的尺寸變化,對尺寸大的幀(2K、4K、1080P)可以選擇M=32或16,對尺寸小的幀可以選擇M=16或8。

下圖是色度分量ACNNLF的網絡結構,和亮度ACNNLF同理,只不過輸出變爲2通道。

 

訓練

ACNNLF使用在線訓練,訓練數據直接來源於要編碼的視頻。使用每個RAS(random access sequence)的進行訓練,共使用N幀數據(I幀+之前的N-1幀)訓練。

 

如上圖所示,每個RAS都有訓練ACNNLF,訓練數據爲當前的I幀和上一個RAS的最後N-1幀。由於訓練用到了上一個RAS的數據,所以對於RAS0不允許使用ACNNLF。

對於被選中訓練的幀,其亮度和色度的原始幀和重建幀都要參與訓練,這些幀被分爲NxN的圖像塊進行訓練。

 

訓練過程如下:

  1. 首先訓練一個ACNNLF模型。

  2. 在訓練集上應用ACNNLF1,將在ACNNLF1上表現好的塊劃分到ACNNLF1 gain set,表現不好的塊劃分到loss set。

  3. 使用loss set訓練ACNNLF2。

  4. 在整個訓練集上應用ACNNLF1和ACNNLF2,將訓練集劃分爲ACNNLF1 gain set,ACNNLF2 gain set和loss set。

  5. 使用上面的loss set訓練ACNNLF3。

  6. 持續上面的過程直到ACNNLFs模型數量已經夠了或訓練數據用完了。

  7. 將ACNNLFs用於整個訓練集,將其劃分爲4個子集:ACNNLF1最高增益子集、ACNNLF2最高增益子集、ACNNLF3最高增益子集、在任何ACNNLF上都沒有增益的子集。然後將每個ACNNLF在其最高增益子集上再次訓練。

語法元素

ACNNLF參數在slice header上傳輸。在RA配置下,僅RAS的I slice傳輸參數。可以在slice級或CTB級決定其亮度或色度分量是否開啓ACNNLF功能。

在slice header中acnnlf_luma_slice_enable_flagacnnlf_chroma_slice_enable_flag標誌位表示當前slice是否使用ACNNLF。在CTB級,用2比特標誌位acnnlf_luma _ctb_idcacnnlf_chroma _ctb_idc 分別表示CTB的亮度和色度是否使用ACNNLF。

實驗

在實驗中使用8幀訓練模型,RAS的I幀和前一個RAS的後7幀。QP爲{22, 27, 32, 37}。

 

 

在VTM3.0的RA配置下使用結果如下:

 

模型的訓練和調用在tensorflow中完成,編解碼在VTM3.0中完成。上面的時間不報告模型訓練時間但是包括了調用tensorflow接口的返回時間。

感興趣的請關注微信公衆號Video Coding

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章