文献:OpenDVC:An Open Source Implementation of the DVC Video Compression Method
文献地址:https://arxiv.org/abs/2006.15862
code地址:https://github.com/RenYang-home/OpenDVC
又是杨韧的一篇文章,知乎(https://zhuanlan.zhihu.com/p/151807493?from_voters_page=true)上已经有简单介绍,对于想研究基于深度学习的端到端视频编解码,DVC绝对是一个很优秀的框架,而这个开源代码又是一个福音、一个锦上添花的存在,笔者主要讲一下复现的源码与原始DVC的一些不同,以及文章中提到的训练策略。
复现源码与DVC不同点:
1、多提供了优化MS-SSIM的DVC模型;
2、运动压缩网络上下采用4倍,而原始DVC上下采用5倍;
3、残差压缩网络与运动压缩网络结构一样,唯一的区别就是利用5x5的卷积替换掉3x3的卷积,因为残差中包含的信息比光流中要多。这一点值得学习一下。
训练策略:
1、首先训练运动估计网络。原始的DVC中直接采用光流网络的预训练参数;
2、再把运动压缩放到训练中去;
3、开始训练运动补偿模块;
4、所有网络联合训练。
我在https://blog.csdn.net/cs_softwore/article/details/106456445描述过我们复现DVC的训练过程,正好与这篇文章相反,我是先固定光流网络,跳过光流编解码网络和光流熵估计网络,先联合训练运动补偿、残差编解码、残差熵估计网络,然后再加入前半部分联合训练。
DVC整个框架很明晰,任何一个模块复现起来都不是很复杂,主要是怎么联合训练起来。因为网络很多,所有网络直接联合训练,根据我的经验,很有可能会使其中一个或多个网络的收敛方向被带偏,最后导致梯度爆炸,不管是先训练前半部分还是后半部分,宗旨就是先训练少量网络再联合训练所有网络。