基于神经网络的运动补偿增强
Posted Dillon2015
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于神经网络的运动补偿增强相关的知识,希望对你有一定的参考价值。
本文来自阿里巴巴在JVET Z次会议上的提案JVET-Z0074《NeuralNetwork Based Motion Compensation Enhancement for Video Coding》
该提案提出使用神经网络在CU级对运动补偿块进行增强从而提高编码效率。具体来说,当CU完成运动补偿过程后使用神经网络对预测块进行处理。
简介
基于神经网络的运动补偿增强作用于inter块,该块既可以正方形的也可以是矩形的。当对矩形块使用神经网络时,wxh的块和hxw块使用相同的网络模型。
可以通过CU级flag标识当前块是否使用神经网络处理。在熵编码中将flag写入码流时共提供了6个上下文,其中3个是AMVP的另外3个是merge的,对于AMVP和merge各自的3个上下文,1个是当上方和左侧相邻块flag都为false时启用,1个是当上方和左侧相邻块flag有一个为true时启用,1个是当上方和左侧相邻块flag都为true时启用。
考虑到块划分的越细消耗的码率越高,所以该方法根据分辨率仅支持对部分尺寸的CU使用,对于Class A1、A2仅当CU的宽和高都超过16时才开启,对于Class B、C仅当CU的宽和高都超过8时才开启,对于Class D当CU的宽和高都超过4时才开启。
当将该方法集成到VTM-11.0-nnvc-1.0时,为了减少编码复杂度,只对AMVP和merge经过RDO选择的最终候选CU上使用神经网络增强预测信息。
该方法既对亮度进行处理也对色度进行处理,但是亮度和色度使用不同的模型。处理亮度时模型输入为亮度预测块,处理色度时模型输入包括亮度和色度预测块。
网络结构
(a)
(b)
(c)
图1 网络结构
图1是网络结构,(a)是亮度分量的网络结构,(b)是色度分量的网络结构,(c)是残差单元的结构。其中色度模型的输入既包括色度预测信息还包括亮度预测信息,对于4:2:0格式亮度下采样为4个和色度同样尺寸的块。
模型输入首先进入1个卷积层提取特征,然后再经过10个卷积单元和1个卷积层,最后学习到的残差信息和网络输入的预测信息叠加起来作为网络输出。
网络中卷积层的kernel size都是3x3,激活函数是ReLU,第一个卷积层有64个通道,亮度模型最后一个卷积层有1个通道,色度模型最后一个卷积层有2个通道。
网络推导
网络参数如上表所示,使用的框架是PyTorch 1.7.1。
网络训练
对不同尺寸的块(128x128, 64x64, 32x32, 16x16, 8x8, 64x128/128x64, 32x64/64x32,16x64/64x16, 16x32/32x16, 8x64/64x8, 8x32/32x8, 8x16/16x8),不同的QPs (QP22, QP27, QP32,QP37, QP42) 和不同分量 (Y, UV)分别训练不同模型。训练集使用BVI-DVC,编码配置为RA。具体训练信息如下,
实验结果
YUV的BD-Rate分别为-1.31%,-6.96%,-6.39%。
感兴趣的请关注微信公众号Video Coding
以上是关于基于神经网络的运动补偿增强的主要内容,如果未能解决你的问题,请参考以下文章