《M-LVC: Multiple Frames Prediction for Learned Video Compression 》
DVC的升级版!!!
Jianping Lin, Dong Liu, Houqiang Li, Feng Wu CVPR 2020
本文提出了一种适用于低延迟场景的端到端学习视频压缩方案。以往的方法都局限于以前一帧作为参考,本文方法引入前面的多个帧作为参考。在本文方案中,计算当前帧与前一帧之间的运动向量(the motion vector (MV) field)。在多个参考帧和多个MV的情况下,本文设计的网络可以对当前帧产生更精确的预测,产生更少的残差。多参考帧也有助于生成MV预测,从而降低MV的编码成本。使用两个深度自动编码器分别压缩残差和MV。为了补偿自动编码器的压缩误差,同时利用多个参考帧,进一步设计了一个MV优化网络和一个残差优化网络。在本文方案中,所有的模块都是通过单个的率-失真损失函数来联合优化的。采用分步训练策略来优化整个方案。实验结果表明,在低延迟模式下,该方法优于现有的学习视频压缩方法。方法在PSNR和MS-SSIM方面也优于H.265。
视频在2017年占所有互联网流量的75%,预计到2022年将达到82%[7]。 将视频压缩成较小的尺寸是降低传输成本的迫切要求。当前,互联网视频通常被压缩为H.264[31]或H.265[22]格式。H.266和AV1等新的视频编码标准即将推出。尽管新标准有望改善压缩率,但这种改进伴随着成倍增加的编码复杂性。实际上,所有正在使用或即将采用的标准都遵循相同的框架,即运动补偿预测,基于块的变换和手工熵编码。该框架已经被继承了三十多年,并且框架内的发展逐渐饱和。
近年来,一系列的研究试图在经过训练的深度网络上构建全新的视频压缩方案。这些研究根据其目标情景可分为两类。对于第一类,Wu提出了一种基于递归神经网络(RNN)的插值视频压缩方法[32],其中运动信息通过传统的基于块的运动估计来获得,并通过图像压缩方法进行压缩。随后,Djelouah等人也提出了一种基于插值的视频压缩方法,该方法将运动信息压缩和图像合成相结合,图像和残差使用相同的自动编码器[8]。基于插值的压缩使用前一帧和后一帧作为参考来压缩当前帧,这在诸如回放之类的随机访问场景中是有效的。然而,它不太适用于低延迟场景,如实时传输。
第二类研究针对低延迟情景,并限制网络仅使用时间上的先前帧作为参考。例如,Lu等人。DVC提出了一种端到端的深度视频压缩模型,该模型可共同学习运动估计,运动压缩,运动补偿和残差压缩函数[15]。在该模型中,仅使用前一帧进行运动补偿,这可能无法充分利用视频帧中的时间相关性。Rippel等人。提出了另一种视频压缩模型,它保持一个潜在的状态来存储先前帧的信息[19]。由于存在潜在状态,该模型很难训练,并且对传输误差敏感。
在这篇论文中,针对低延迟情景,作者提出一种端到端的学习视频压缩方案。关键思想是使用前面的多个帧作为参考。与只使用一个参考帧的DVC相比,使用的多个参考帧将预测提高了两倍。首先,给定多个参考帧和相关联的多个运动向量(MV),可以导出用于预测当前帧的多个假设;这些假设的组合提供了一个集合。第二,给定多个MV,可以进行外推来预测下一个MV,利用MV预测可以降低MV的编码成本。因此,该方法被称为学习视频压缩的多帧预测(M-LVC)。注意在文献[19]中,先前多帧的信息被隐式地用于通过潜在状态来预测当前帧;但是在本文方案中,多帧预测是显式处理的。因此,本文方案具有更高的可扩展性(即可以使用更多或更少的参考),更易于解释(即通过运动补偿实现预测),并且根据我们的观察结果更易于训练。
此外,在本文方案中,作者设计了一个MV优化网络(MV refinement network)和一个残差优化(residual refinement network)网络。由于使用深度自动编码器来压缩MV(resp. residual),所以压缩是有损的,并且在解码后的MV(resp. residual)中会产生错误。采用MV(resp. residual)优化网络补偿压缩误差,提高重建质量。还使用了多个参考帧和/或相关的多个MV在残差/MV优化网络中的应用。
总之,技术贡献包括:
DVC说自己优于H.264,M-LVC又来说自己优于H.264和H.265,实质上是跟H.264和H.265的veryfast模式去对比的(还设置了I帧间隔和B帧数目…),测了下H.264和H.265的默认参数,HEVC-ClassB上M-LVC算略差于H.264吧,UVG上差的挺多…
ps:veryfast模式通过-perset
参数来设置,主要用来调节编码速度和质量的平衡,速度越慢,质量越好,压缩比越大,默认是medium
(10个档:ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo)
近年来,基于深度学习的图像压缩方法取得了很大的进展[3,4,12,16,25,26]。与传统图像编解码器(如JPEG[27]、JPEG2000[21]和BPG[5]中的手工技术不同,新方法可以从数据中学习非线性变换,并以端到端的方式估计熵编码所需的概率。在[12,25,26]中,基于长短时记忆(LSTM)的自动编码器被用来逐步地对原始图像和重建图像之间的差异进行编码。此外,有一些研究利用卷积神经网络(CNN)的自动编码器压缩图像[3,4,16,24]。例如,Ball’e等人[3]在基于CNN的自动编码器中引入了一个非线性激活函数,即广义除法归一化(GDN),并使用完全连接的网络估计潜在表示的概率。该方法的性能优于JPEG2000。它没有考虑输入自适应熵模型。Ball’e等人在[4]中引入了一个输入自适应熵模型,该模型使用零均值高斯分布对每个潜在表示进行建模,并通过参数变换预测标准差。最近,Minnen等人[16]通过整合上下文自适应模型进一步改进了上述输入自适应熵模型,他们的方法优于BPG。本文基于文献[3,4]中的图像压缩方法,设计了运动矢量和残差的压缩模块。我们注意到在学习图像压缩模型方面的新进展可以很容易地集成到我们的方案中。
与学习图像压缩相比,学习视频压缩的相关工作要少得多。2018年,Wu等人提出了一种基于RNN的插值视频压缩方法[32]。他们首先使用图像压缩模型来压缩关键帧,然后使用分层插值生成其余帧。采用传统的基于块的运动估计提取运动信息,并采用传统的图像压缩方法进行编码。Han等人提出使用变分自动编码器(VAEs)压缩序列数据[9]。他们的方法共同学习将原始视频转换为低维表示,并根据时间条件概率模型对这些表示进行熵编码。然而,他们的模型仅限于低分辨率视频。最近,Djelouah等人提出了一种基于插值的视频压缩方案,其中运动和混合系数直接从潜在表示中解码,残差直接在潜在空间中计算[8]。但插值模型和残差压缩模型并没有联合优化。
虽然上述方法是为随机访问模式设计的,但其他一些方法也被开发用于低延迟模式。例如,Lu等人提出用基于CNN的组件来代替传统视频压缩框架中的模块,即运动估计、运动压缩、运动补偿和残差压缩[15]。他们的模型直接压缩运动信息,并且仅使用前一帧作为运动补偿的参考。Rippel等人提出通过保持一个潜在状态来利用多个参考帧的信息[19]。由于隐态的存在,其模型难以训练,且对传输误差敏感。我们的方案也针对低延迟模式进行了定制,我们将在下面更具体地与[15]进行比较。
图1分别是DVC和M-LVC的方案,M-LVC中新增了4个模块(图种蓝色框)。具体如下:
Step 1. Motion estimation and prediction.
结合论文和作者代码,我大概总结了下编码和解码流程:
编码流程:
解码流程:
在传统的视频编码方案中,H.264/AVC[31]采用了多参考帧的运动补偿,并继承了以下标准。例如,一些编码块可以使用来自不同参考帧的两个不同的运动补偿预测的加权平均值,这极大地提高了压缩效率。此外,在最近的视频超分辨率研究中,多帧方法也比基于单帧的方法要好得多[10,14,29]。因此,作者建议在他们的方案中使用多个参考帧进行运动补偿。
Loss Function. 本文的方案旨在联合优化编码比特数和原始帧与重构帧之间的失真度
Progressive Training.
Training Data. 使用了Vimeo-90k数据集[33],并将视频序列裁剪为192×192
及16
帧的片段。
Implementation Details. 在实验中,编码结构为IPPP…并且所有P帧均由同一网络压缩。作者没有实现单个图像压缩网络,而是使用H.265压缩唯一的I帧(代码实现中使用BPG进行I帧压缩)。 对于前三个P帧,其参考帧小于4,所以复制最远的参考帧以获得所需的4个帧。针对多种编码率训练了具有不同λ值(16、24、40、64
)的四个模型。使用动量为0.9
的Adam优化器[13]。对于新添加的模块,初始学习率为5e−5
,在微调阶段为1e−5
。在训练期间,学习率降低了2-5倍。batch-size是8
(即8个裁剪片段)。整个方案由TensorFlow实现,并在单个Titan Xp GPU上进行训练/测试。
Testing Sequences. HEVC标准测试序列,包括16个不同分辨率的视频,有Class B、C、D、E这几类[6],还使用了UVG数据集[1]中的7个1080p序列。
Evaluation Metrics. 采用PSNR和MS-SSIM[30]来衡量重建帧与原始帧的质量。每像素比特数(bpp)用于测量用于编码表示的位数,包括MVD和残差。
为了证明提出的方案的优势,作者与现有的视频编解码器,特别是H.264[31]和H.265[22]进行了比较。为了便于与DVC进行比较,作者直接引用了文献[15]中报道的H.264和H.265的压缩结果。H.264和H.265默认设置的结果可在附录中找到。
此外,还比较了几种最先进的视频压缩方法,包括Wu-ECCV2018[32]和DVC[15]。据我们所知,在基于学习的低延迟模式中,DVC[15]报告了PSNR的最佳压缩性能。
B.7. Comparison with H.264 and H.265 in Other Settings 在本文中,我们将H.264和H.265的结果与文献[15]直接引用的结果进行了比较。注意,结果是通过分别使用x264和x265编解码器的veryfast模式获得的。在这里,我们还将使用其他设置与H.264和H.265的结果进行比较。具体来说,我们使用以下命令行使用x264和x265编解码器压缩分辨率为W×H的序列Video.yuv,
ffmpeg -y -pix fmt yuv420p -s WxH -r FR -i Video.yuv -vframes N -c:v libx264 -crf Q -loglevel debug output.mkv
ffmpeg -y -pix fmt yuv420p -s WxH -r FR -i Video.yuv -vframes N -c:v libx265 -x265-params “crf=Q” output.mkv
其中FR,N,Q
分别代表帧率、编码帧数和质量等级。