基於學習的編碼(五):MCNN

基於學習的編碼(五):MCNN

本文介紹的算法來自JVET-P0489,是對基於學習的編碼(三):ACNNLF的改進。ACNNLF是在線(online)訓練,而MCNN是離線(offline)訓練。

網絡結構

MCNN(Multiple CNN)是離線(offline)訓練,可以使用更深的網絡結構。

 

上圖是亮度分量的網絡結構,可以看出該網絡很深,有9個卷積層。

  • Inception layer都是3x3和5x5的32通道卷積。

  • Convolutional layer都是3x3的64通道卷積,且帶ReLU。

  • 最後一個Convolutional layer是3x3的64通道卷積,且不帶ReLU。

其packing和unpacking操作和基於學習的編碼(一):使用CNN進行環路濾波一樣。輸入輸出以CTU爲單位(亮度爲128x128,色度爲64x64)。

 

上圖是色度分量的網絡結構,和亮度分量一樣,只不過輸出變爲2通道。

實現模式

在VTM6.0中有兩種實現MCNN的模式,一種是將其作爲環路濾波的一個階段,另一種是作爲後處理。

作爲環路濾波的一個階段的流程圖如下:

 

作爲後處理,MCNN作用於環外,如下圖。

 

對於亮度和色度塊需要在SEI中傳輸2比特表示當前塊的狀態:

  • 0:當前塊不使用CNN。

  • 1:當前塊使用第一個CNN。

  • 2:當前塊使用第二個CNN。

  • 3:當前塊使用第三個CNN。

訓練

使用DIV2K (800 images)數據集訓練,使用VTM6.0在QP爲{22,27,32,37}下生成重建圖像。

 

MCNN(以N=3爲例)訓練過程如上圖,和基於學習的編碼(三):ACNNLF訓練過程類似。

MCNN還有簡化的訓練過程如下圖。

 

  • 首先訓練一個CNN,可以從訓練集中隨機選擇部分圖像參與訓練以加快訓練速度。

  • 然後在整個訓練集上應用上面訓練好的CNN,根據PSNR排序將訓練集N等分。

  • 在每個子集上訓練CNN。

簡化的訓練過程訓練N(默認N=3)個CNNs速度更快,但會有一定損失。

實驗

 

上面是將MCNN作爲環路濾波的一個階段的實驗結果。

 

上面是將MCNN作爲後處理的實驗結果。

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

 

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