基于学习的编码(五):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


9572

被折叠的 条评论
为什么被折叠?



