近期,微帧科技联合杭州师范大学、南京大学、普渡大学等高校,共同研究和创作的论文“Advances In Video Compression System Using Deep Neural Network: A Review And Case Studies”,被影响因子10.252的顶级期刊Proceedings of the IEEE收录。
该论文从视频前处理、编码和后处理三个环节展开,对深度学习技术(DNN)如何提升视频编码压缩效率进行了综合性阐述,是Proceedings of the IEEE收录的首篇AI+编码综述性论文。
01预处理(Pre-processing)
预处理技术应用于视频编码之前,通过去除一些冗余信息来降低码率消耗,同时保持或提升视觉质量。对像素块进行预处理一般都利用了人类视觉系统HVS(Human Visual System)对内容存在偏好这一特性。
基于显著性的视频预处理
显著区域是指图像中吸引用户注意力的区域。基于显著性对视频进行预处理的常用手段是减少对显著性区域的压缩,增加对非显著性区域的压缩,以保持整体较低的码率且不影响视频主观质量。
早期,一般通过手工设计图像特征来获取显著性,例如颜色、亮度、方向对比度、运动对比、相机运动等。随着人工智能技术的发展,基于DNN的语义特征提取方法被广泛用于研究图像内容和视频序列的显著性检测。例如,Sun等人[1]实现了显著性驱动的CTU级自适应码率控制。使用DNN模型和动态显著区域提取每一帧的静态显著性。实验结果表明,显著区域的峰值信噪比平均提升了1.85 dB。
基于纹理分析/合成的预处理
在实际视频编码器中,由于人类视觉通路中的信息处理过程太过复杂,我们很难设计出一个准确的数学HVS模型。但一般视频场景可以被分解为感知重要和不重要的区域,可以先在预处理时分析原始视频内容的纹理特征,然后根据纹理的显著程度对纹理进行排序。随后,对感知重要的区域分配较多的码率来编码,并应用统计模型来表达感知不重要的纹理。
案例分析
前处理部分介绍了一个可切换的基于纹理的视频预处理案例。
1. 纹理分析
首先利用带有扩展卷积[2][3]ResNet50[4],来提取语义特征;然后,引入PSPNet[5]中的金字塔池化模块,生成像素级语义分割图;接着,我们在数据集ADE20K上重新训练模型[6]。最终,该模型的像素分割精度达到80.23%。
2. 基于可切换纹理的视频编码
2.1 纹理块
为了避免边界的artifacts,同时保持时间一致性,我们采用了两步策略来确定纹理块。首先,使用像素mask标记纹理区域,且该区域必须覆盖编码块本身,同时该区域也要覆盖编码块的时域参考块。然后,使用纹理模式对这些纹理块进行编码,使用传统编码器例如AV1对非纹理块进行编码。
2.2 纹理模式
对于每个当前待编码帧和它的参考帧,AV1会在帧头指定一组全局运动参数。为了继续遵循AV1语法,我们只考虑每个帧属于某一个纹理类。我们进一步修改了AV1全局运动编码工具,使其能够基于当前帧及其参考帧的纹理区域来估计运动参数。为了给纹理区域提供更精确的运动模型,我们使用了与全局运动编码工具相同的特征提取和模型构建方法。
2.3 可切换的优化
有一些视频并不适用于纹理模式编码,因此,采用可切换的方案决定某个GoP或GF组是否使用纹理模式,判断依据是所节省的码率。
实验结果
1. 编码性能:与基于特征的方法相比,基于DNN的方法在码率节省方面表现出更好的性能。
2. 主观评价:平均69.03%的受试者认为本案例重构的视频与AV1编解码器重构的视频质量不相上下;平均14.32%的受试者认为本案例重构的视频质量更好;平均16.65%的受试者认为使用AV1编解码器重构的视频质量更好。
未来方向
虽然所提出的方法有显著效果,但是在将语义理解整合到视频编码时,区域分析的准确性仍然是不够精确。当一个非纹理区域被错误地认成纹理时,会带来明显的视觉质量下降。一个潜在的解决方案是在纹理区域重建过程中引入一些关于感知视觉质量的度量。
另外,视频分割基准数据集对于开发基于视频语义理解的机器学习方法具有重要意义。现有的分割数据集要么是基于带有纹理的图像[7],要么只包含一般的视频对象[8][9],要么只有视觉质量没有分割标签。
02.编码(Coding)
基于神经网络的编码,目前主要有三个研究方向:
1. 基于分辨率重采样的视频编码,先对输入视频进行下采样再进行编码,然后对重建视频进行上采样或超分辨率处理,使其达到与输入视频相同的分辨率。
2. 模块化神经视频编码(Modularized Neural Video Coding,MOD-NVC),利用基于DNN的编码工具来提升传统混合编码的性能。
3. 端到端神经视频编码(End-to-End Neural Video Coding,E2E-NVC),利用堆叠的神经网络,以端到端学习的方式紧凑地表达图像或视频。
案例分析
论文重点介绍了一个端到端神经视频编码的框架。
1. 框架
E2E-NVC使用基于VAE的架构对每组图片中的第一帧进行帧内压缩。VAE模型包括一个主编解码器以及超编解码器。主编码器EM使用四个堆叠的CNN层,每个卷积层使用stride卷积来实现下采样,并使用级联卷积来有效提取特征。使用超编码器Eh生成超先验信息,用于辅助EM进行熵编码。
2. 帧内编码
该架构所使用的neuro-Intra是NLAIC [10]的简化版本。应用被3D CNN提取空间先验,将空间先验与超先验信息一起输入PA中进行上下文建模,完成熵编码。
3. 运动编码和补偿
为改进帧间预测,将工作[11]扩展到多尺度运动生成和补偿。这种多尺度运动处理直接将两个串联帧(一帧为过去的参考帧,一帧为当前帧)转换成量化的时域特征,以表示帧间运动。将这些量化的特征以无监督的方式解码为压缩光流,通过Warp进行帧补偿。该方案不需要使用任何预先训练过的光流网络。
实验结果
论文与x264和x265的快速档次进行了编码效率对比。与H.264/AVC相比,NVC获得35%的BD-Rate增益,与H.265/HEVC和DVC相比,分别获得30%和22%的增益。如果使用MS-SSIM来评估,所获得的增益更高。
NVC、H.265/HEVC、DVC分别与H.264/AVC对比下的
BD-Rate增益
我们还提供了NVC、H.264/AVC和H.265/HEVC之间的视觉质量对比。对于包含非平动运动和复杂背景的样本片段RaceHorse,与H.264/AVC相比,NVC不仅码率减少了7%,且在质量上提高了1.5dB PSNR。
未来的方向
H.264/AVC、H.264/HEVC、AVS、AV1、VVC都是基于预测/变换的混合视频编码框架。率失真优化、码率控制等技术可以被用来进一步改进基于学习的编码方案。例如,通过对参考帧的选择可以汇聚最合适的信息,以减少时域误差,提高整体的帧间编码效率。另外,基于深度学习的视频编码的实际应用也是一个值得深入研究的方向。
03.后处理(Post processing)
后处理模块的作用是为了减少编码失真,目前主要依靠自适应滤波器来提高重建视频的质量或QoE。这些后处理滤波器也可以嵌入到编码环路中,提高重建质量和编码效率。
环路滤波
现有的视频标准主要是利用环路滤波器来提高重构的主观质量,并通过增强参考来提供更好的R-D效率。例如去块滤波器[12]、样点自适应补偿(Sample Adaptive Offset,SAO)[13]、约束定向增强滤波器(CDEF)[14]、环路重建滤波器(Loop-Restoration,LR)[15]、自适应环路滤波器(Adaptive Loop Flter,ALF)[16]等。
对后处理模块的早期探索主要集中在设计基于DNN的滤波器进行帧内编码,特别是通过交换网络深度和参数来获得更好的编码效率。例如,IFCNN[17]和VRCNN[18]是具有约50,000个参数的浅网络,为H.265/HEVC内部编码器节省了高达5%的BD-Rate。如果使用更深、更密集的网络,可以获得更多的增益。然而,一个模型的参数越多,它就越复杂,网络的复杂性会限制它的实际应用。
此外,在设计基于CNN的环路滤波器进行帧间编码时,需要考虑时域预测的依赖。一些研究利用编码过程中的先验知识来辅助CNN的训练和推理。例如,Jia等人[19]在环路滤波中加入了同位块信息。Meng等人[20]利用编码单元划分进一步提高性能。Li等人[21]同时输入重构帧以及重构像素与预测像素之间差值,以提高编码效率。
然而,由于I1帧以I0帧为参考帧,I2帧又以I1帧为参考帧,以此类推。如果对I0帧进行基于CNN的环路滤波,又对I1帧再次使用相同模型的滤波器进行滤波,就会出现过滤波问题。此时会导致计算性能严重下降。为了克服这个问题,D.Ding等人[22]建立了名为SimNet的CNN模型,该模型可以在帧间编码时自适应地跳过滤波操作。实验结果表明,SimNet模型进行AV1编码时,帧内编码和帧间编码的BD-Rate分别节省了7.27%和5.57%。
后处理滤波
后处理滤波一般用于解码器端,以进一步提高视频质量,获得更好的QoE。
为了更好的捕捉数据特征,可以对帧内编码的环路滤波器进行再次训练用做基于单帧的后处理。此外还可以使用前后多帧进行质量增强,多帧增量一般采用两步策略。首先,通过像素级运动估计和补偿对相邻帧与当前帧进行对齐。然后,将对齐的帧输入网络进行高质量的重构。典型的多帧质量增强如MFQE-1.0[23],使用STMC(Spatial Transformer Motion Compensation)网络进行帧对齐,使用QE-net(Quality Enhancement Network)进一步去除噪声,随后的MFQE-2.0[24]使用DenseNet替换了QE-net,获得了更好的性能和更低的复杂度。Tong等人[25]使用FlowNet2进行时间帧对齐,与原始MFQE-1.0相比,提升了0.23 dB的PSNR增益。上述研究都表明了时间对齐在后处理中的重要性。
案例分析
1. 环内滤波
我们开发了一个引导CNN架构,引导预先训练好的CNN模型来适应各种视频内容。具体地,引导CNN模型通过学习将输入信号投射到m维的子空间中,通过子空间线性组合得到输出图像。线性组合的加权参数将被编码并在码流中进行传输。
基于AV1平台,分别比较了引导CNN模型和普通的CNN模型的性能。从表中可以看出,在任意像素块大小和编码配置下,引导CNN模型总是优于普通的CNN。
2. 多帧后滤波
论文设计了一个时空多帧架构质量增强架构MVE来降低压缩失真。首先获取光流进行精确的运动估计/补偿,然后设计一个广泛的激活残差网络WARN进行信息融合和质量增强。该增强方法也可以在不同的CNN架构上实现。
相对于AV1, SVE(基于单帧的质量增强)在all intra和random access场景下分别节省了8.2%和5.0%的BD-Rate;MVE平均节省了20.1%和7.5%的BD-Rate。
未来方向
增强帧会被用于后续帧的运动估计,因此它的质量对整个编码器的性能有重要作用。未来的工作将研究环内滤波和运动估计对参考帧的联合影响,以利用这些编码工具的内在相关性,从而进一步提高编码性能。
讨 论
视频压缩和机器学习这两个领域已经建立了几十年,它们在各自的领域中分别蓬勃发展。近年来,我们见证了深度学习技术[26]在视频压缩编码这个学科的潜力。论文以视频系统中三个主要的功能模块(预处理、编码和后处理)为例回顾了相关的研究。此外,还提供了三个实例,说明了在视频压缩中应用神经网络所获得的效率提高,显示了神经网络在新一代视频技术、标准和产品应用方面的巨大潜力。
尽管如此,仍有许多问题有待进一步研究,包括:
模型泛化
目前,大多数基于DNN的视频压缩技术使用监督学习,这往往需要大量的标记图像/视频数据,以覆盖各种实际应用场景。一种方法是持续开发大型数据集。另一种方法是可以通过使用更先进的技术来消除有限训练样本的不确定性。这些技术包括但不限于少样本学习[27]和自监督学习[26]。
复杂性
现有的基于DNN的方法在计算维度和空间维度上都高度复杂。传统的视频编解码器只需要几十KB的内存,而大多数DNN算法需要几MB甚至GB的内存空间。另一方面,虽然推断过程可能较快,但是训练可能会耗费数小时、数天甚至数周[28]。目前,神经处理单元(Neural Processing Units,NPU)引起了广泛关注,并已逐步部署在异构平台,有望帮助DNN算法大规模部署到具有NPU的设备上。
QoE指标
视频视觉质量非常重要,由此产生了一些质量评价指标,如SSIM、JND和VMAF。现有的基于DNN的视频编码方法可以通过优化预定义的损失函数来提升重建视频的质量,如MSE、SSIM、对抗性损失、基于VGG特征的语义损失等。但这些损失函数都没有显示出明显的优势。期待一个统一的、可微的和HVS驱动的度量准则,为基于DNN的视频编码提供更好的QoE。