基于学习的编码(五):MCNN

基于学习的编码(五):MCNN

本文介绍的算法来自JVET-P0489,是对基于学习的编码(三):ACNNLF的改进。ACNNLF是在线(online)训练,而MCNN是离线(offline)训练。

网络结构

MCNN(Multiple CNN)是离线(offline)训练,可以使用更深的网络结构。

基于学习的编码(五):MCNN_第1张图片

 

上图是亮度分量的网络结构,可以看出该网络很深,有9个卷积层。

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

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

  • 最后一个Convolutional layer是3x3的64通道卷积,且不带ReLU。

其packing和unpacking操作和基于学习的编码(一):使用CNN进行环路滤波一样。输入输出以CTU为单位(亮度为128x128,色度为64x64)。

 

基于学习的编码(五):MCNN_第2张图片

上图是色度分量的网络结构,和亮度分量一样,只不过输出变为2通道。

实现模式

在VTM6.0中有两种实现MCNN的模式,一种是将其作为环路滤波的一个阶段,另一种是作为后处理。

作为环路滤波的一个阶段的流程图如下:

 

基于学习的编码(五):MCNN_第3张图片

作为后处理,MCNN作用于环外,如下图。

 

基于学习的编码(五):MCNN_第4张图片

对于亮度和色度块需要在SEI中传输2比特表示当前块的状态:

  • 0:当前块不使用CNN。

  • 1:当前块使用第一个CNN。

  • 2:当前块使用第二个CNN。

  • 3:当前块使用第三个CNN。

训练

使用DIV2K (800 images)数据集训练,使用VTM6.0在QP为{22,27,32,37}下生成重建图像。

 

基于学习的编码(五):MCNN_第5张图片

MCNN(以N=3为例)训练过程如上图,和基于学习的编码(三):ACNNLF训练过程类似。

MCNN还有简化的训练过程如下图。

 

基于学习的编码(五):MCNN_第6张图片

  • 首先训练一个CNN,可以从训练集中随机选择部分图像参与训练以加快训练速度。

  • 然后在整个训练集上应用上面训练好的CNN,根据PSNR排序将训练集N等分。

  • 在每个子集上训练CNN。

简化的训练过程训练N(默认N=3)个CNNs速度更快,但会有一定损失。

实验

 

基于学习的编码(五):MCNN_第7张图片

上面是将MCNN作为环路滤波的一个阶段的实验结果。

 

基于学习的编码(五):MCNN_第8张图片

上面是将MCNN作为后处理的实验结果。

感兴趣的请关注微信公众号Video Coding

基于学习的编码(五):MCNN_第9张图片

 

你可能感兴趣的:(H.266/VVC,视频编码,深度学习,环路滤波,MCNN,深度学习)