端到端视频压缩中的双向预测
来源:SPIE 2021 主讲人:Fabien Racapé 内容整理:张一炜 本次演讲主要对论文《Bi-directional prediction for end-to-end optimized video compression》进行了介绍,本文以基于神经网络的端到端视频压缩框架为基础,提出了一种高效的双向预测方法。
目录
- 研究动机
- 方法提出
- 模型设计
- 双向预测
- 损失函数
- 实验结果
- 结论
研究动机
设计双向预测压缩模型的动机在于,现有的端到端视频压缩框架都是采用的 low delay P 的 GOP 结构,只是简单的前向单帧参考。而双向预测在传统的混合编码框架中是很常见的。并且,对于端到端的视频压缩框架来说,从一组图像中捕获运动信息时较为困难的,因此这篇论文提出了一种调整现有的以自编码器为主的帧内预测架构的方法,使得其能够采用更复杂的时域预测结构。
方法提出
模型设计
具体的视频压缩模型设计中,对于帧内编码的帧,本文采用了与 Agustsson 等人在2020年提出的压缩模型中类似的帧内编码方式,使用一个自编码来处理帧内编码压缩的情况。
而在双向预测中,过去的参考帧和未来的参考帧拼接在一起输入到网络中,得到运动信息并也作为码流的一部分进行传输。在解码端进行解码分离后得到两个运动信息,并与对应的参考帧进行扭曲操作后生成预测帧。
在运动信息部分中除了像素在水平和竖直方向的运动矢量外,还包括一个 filed scale 参数,用于决定在遮挡或者物体运动超出边界的时候对图像进行高斯模糊操作时的方差大小,更大的scale参数意味着更强的模糊操作。该操作有效的原因在于错误的预测相比于高斯模糊的残差更大,因此在这些地方进行模糊操作可以防止错误的预测带来更大的残差,进而导致压缩性能的下降。在根据水平、竖直以及 scale filed 参数进行三线性扭曲操作后得到预测帧,再与待编码帧相减来得到残差信息。
而残差信息部分,则也是通过一个自编码器进行压缩后得到码流。具体的模型框架如下图所示。图中的 EC 和 ED 分别表示熵编码和熵解码
模型框架图
双向预测
本文提出的模型主要是针对双向预测的情况,因此在 GOP 的设计上采用了类似于传统混合编码框架中 RA 层级预测的结构。本论文中的一个 GOP 的大小设置为8,具体的参考结构如下图所示。
帧间预测参考关系
由于不同的待编码帧与参考帧间的距离是不同的,这就导致运动信息的大小存在差别,且越高层级的参考帧,其质量也相应更差。
为了提高模型的表达能力,本文在编码运动信息的部分中提出了一种条件激活的方式。通过将参考帧所在的层级信息编码为一个 one-hot 向量,并将该one-hot向量经过一系列的全连接层和激活层后,与卷积的结果进行对应元素相乘。该操作可以使得相同的卷积参数对于不同的时域层级的输入带来不同的激活程度,以使得模型能更好的处理参考帧层级的变化。添加条件激活的卷积操作如下图所示。
条件激活下的卷积/反卷积
损失函数
本文提出的模型输入可以为 8 bit 或是 10 bit 的 YUV 4:2:0 格式的视频。损失函数为率失真优化的形式,即为
的形式,其中 R 为对码率的估计,D 是对 Y,U,V 三个通道的 MSE 加权和,
反映了失真大小和码率大小的折中,越大的
代表对于模型需要输出更低的码率。
为了提高对于高分辨视频的编码效果,论文对于高分辨率的 Y 分量采用了更大的权重,具体的权重分别为4,1,1,以使得模型在高分辨的情况下更加注重 Y 分量的细节信息的恢复。
实验结果
本文采用 BVI-DVC 和 BVTencent 作为训练集,并在
这四个点的情况下分别训练模型。测试数据集为HEVC标准测试序列。
下图的实验结果比较了使用条件激活和不适用条件激活下的 RD 性能,可以看到在使用了基于参考帧的层级结构的条件激活后,RD 性能有了明显的提升,尤其是在高码率段提升更为明显。
条件激活对 RD 性能影响
而单独比较 PSRN-Y 的结果如下图所示。可以看到在使用条件激活后 PSNR-Y 还有所降低。这表明条件激活的方式主要是对于色度分量有所增益,为了提高对亮度分量的压缩效果,可以对训练时的损失函数中不同分量 MSE 所占权重的大小进行微调来实现。
PSNR-Y 下的 RD 性能
结论
- 双向预测对于实现更高的压缩性能是十分关键的,本文将传统方法中的双向预测使用在了基于神经网络的视频压缩方法中
- 使用条件激活的方式对基于自编码器的双向压缩框架可以带来不错的性能提升。
而在仍然存在的挑战方面,如何实现不同分量间的比特预算平衡以及在运动分量无法获取时怎样进行 intra 和 inter 的结合还需要继续进行研究。
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十