来源:SPIE2021 主讲人:Kavita Arjun Bhosale 内容整理:张雨虹 近年来,视频压缩和图像处理成为研究领域的热门话题。同时,用户对于更高分辨率、更好的视频压缩质量的需求也与日俱增。VVC 是目前最新的用于视频压缩的编码标准。然而,其基于频率的变换技术容易受到高频噪声的影响,从而导致比特率增加或者图像质量低等问题。为了解决这一问题,本文提出将去噪卷积神经网络(DnCNN)应用于编解码器的输入视频进行预处理,并展示了应用 DnCNN 进行预处理在质量评估和比特率性能方面的实验结果。
目录
- 介绍
- 实验方案
- DnCNN 概述
- DnCNN 作为预处理的实验流程
- 数据集
- 训练设置
- 实验结果
- 编码实验环境
- 结果
- 结论
介绍
有损压缩通过变换和量化技术证明了其在视频压缩中的效率的同时,也表明其会带来量化错误问题。为了补偿这一误差,许多研究者开发了滤波技术,比如去块滤波、样本自适应偏移以及基于维纳的滤波。更进一步的,最近的编码标准将滤波技术应用于环内也取得了图像质量实质上的提高。目前,大部分的滤波技术集中在环路内,作为预处理的滤波还没有被广泛用于有损视频压缩,尤其是最近的视频编码标准 HEVC 和 VVC 中。少部分研究者根据视频压缩标准,基于传统的信号处理技术来进行预处理以提高视频质量,这样做复杂度低但是效率有限。
深度学习技术已被证明可以通过训练庞大的图像数据集和深度学习残差来捕获图像的各种特征的能力,进而其在消除未知错误方面也具有相当的有效性。一个众所周知的做法是去噪 CNN (DnCNN),利用带跳跃连接的 CNN 来学习图像的残差。尽管 DncCNN 已被证明可以有效地减少高斯噪声,但是其作为编码标准预处理器的效果还未可知。
在本文中,我们主要对把深度学习技术用于视频压缩的预处理进行了研究。我们选择了基本的 DnCNN 模型作为预处理器。在我们的框架中,噪声视频首先由 DnCNN 进行去噪,然后去噪以后的视频再由 HEVC 进行压缩。最后,比较了没有去噪和去噪以后的视频的压缩效率。实验结果表明,进行去噪预处理以后可以大大提高 HEVC 的编码效率。
实验方案
DnCNN 概述
图像去噪的目的是去除噪声图像的噪声,恢复出真实图像。由于噪声的存在,后续的图像处理任务都可能会受到影响,比如视频处理、目标检测等。因此,图像去噪在高级图像视频处理系统中扮演者至关重要的角色。不同的研究者提出了不同的基于 CNN 的去噪方法,每种方法都各有其优缺点。本文选取了 DnCNN 网络作为预处理器。一般而言,网络越深,其捕获图像特征的能力越强,DnCNN 中,Batch Normalization,残差学习以及 ReLU 激活都是用来加速训练过程、改善去噪性能的。这个模型能够解决盲去噪任务和非盲去噪任务。
DnCNN 的输入是如同
形式的噪声图像,去噪的目的是通过调整
(标准差为
的加性高斯噪声)从噪声图像
中恢复出干净图像
。模型网络架构如图 1 所示。网络与 VGG 网络类似,这样更适合于图像去噪任务。与 VGG 相比,它去除了所有的池化层。这样处理,深度为
的 DnCNN 网络的感受野是
。残差学习公式用于训练残差映射函数,
, 其中
,因此利用这个公式来学习
。
图 1 DnCNN 网络架构
这个网络包括 3 类大层,总计 17 个小层:
- Conv ReLU:第一层,输入通道 c,输出通道 64,卷积核大小 3×3。对于灰度图,c = 1;彩色图像,c = 1。
- Conv BN ReLU:第二层,15 个卷积层,每个卷积层输入通道 64,输出通道 64,卷积核大小 3×3,在卷积层和 EeLU 层之间添加 batch normalization 层。
- Conv:最后一层,输入通道 c,输出通道 64,卷积核大小为 3×3 的卷积层用于重建输出。
卷积之前,采用零填充策略,这样不会导致边界伪影问题。通过卷积与 ReLU 结合,DnCNN 可以利用隐藏层逐渐从噪声图像中分离出图像结构。DnCNN 以端到端的模式进行训练。另外, DnCNN 也取得了相当不错的计算效率,可以在 60ms 内实现 512×512 大小的盲噪声去除。
DnCNN 作为预处理的实验流程
图 2 展示了在 HEVC 中应用 DnCNN 进行预处理的实验框架。
图 2 应用 DnCNN 进行预处理的实验框架
- 第一步,需要一个噪声视频来测试 HEVC 编码期间 DnCNN 的性能,所以我们给原始视频序列添加
的高斯加性白噪声;
- 第二步,噪声视频通过 DnCNN 进行去噪处理;
- 第三步,压缩后的视频作为 HEVC 编码器的输入,该编码器根据常用测试条件(CTC)进行视频压缩,生成比特流;
- 最后,HEVC 生成的比特流再由 HEVC 解码器进行解码。
总之,我们可以获得每个比特流的 RD 性能。
为了评估图片质量,我们需要使用外部库来测量原始视频和解压缩视频之间的 PSNR 和 SSIM 。由于 HEVC 编码器生成的 PSNR 结果是噪声(或去噪)视频和压缩视频之间的结果,因此直接是不公平的。例如,HEVC 编码器计算出的 Y 分量的PSNR是去噪视频和具有一定量化参数(QP)的压缩视频之间的 PSNR,这个 PSNR 与原始视频(即没有任何高斯噪声)和压缩视频之间的 PSNR 不同。类似地,如果我们将噪声视频放入 HEVC 编码器进行压缩,那么 HEVC 编码器将通过计算噪声视频中压缩视频的误差来生成 PSNR 结果。
因此,如果我们想比较压缩噪声视频与压缩去噪视频的图像质量,我们不能使用 HEVC 编码器计算的直接结果。相反,我们需要使用外部库来衡量压缩视频与原始视频的质量差异。因此,在本文中,我们通过比较原始视频(未用于 HEVC 编码)和压缩噪声/去噪视频来测量 PSNR 和 SSIM,如结果中的表 3 所示。
数据集
- 训练:对于灰度图像去噪,按照原始模型数据集使用 400 张大小为 180x180 的图像,patch 大小设置为 40x40 并裁剪 128x1600 patch 来训练模型。
- 测试:使用不包含在训练集中的灰色 HEVC 序列进行测试。测试序列如表 1 所示,该数据集包含了不同分辨率的视频。
表 1 测试数据集
训练设置
原始的 DnCNN 模型用特定噪声水平,比如
用于噪声水平范围
的盲高斯去噪。简单起见,本文选择了中值
来训练预处理模型。固定网络深度为 25,权重衰减为 0.0001,动量 0.9,小批量为 128。训练了 50 个 epoch。
实验结果
编码实验环境
在 HM RExt RA 配置下使用 HEVC 测试模型 16.22,并将与输入色度相关的配置从传统的 420 更改为 400(灰度)。QP 范围 22 到 37。
使用 Keras 框架来训练 DnCNN 模型。实验环境 Win10 python 3.7,在 2.90GHZ i5-10400 CPU 32 GB RAM 支持 CUDA 的 GTX 1660 GPU 的 PC 上运行。对于灰度噪声图像,训练一个模型大约需要 6h。
结果
- 压缩性能分析
表 2 显示了与原始灰度视频 HEVC 编码结果相比,噪声和去噪视频的压缩比特率。
表 2 压缩性能比较
Bitrate_HM 表示 HM 16.22 压缩原始灰度视频的比特率结果;Bitrate_noised 表示加入噪声以后压缩的比特率结果,可以看到加入噪声以后,比特率会大幅度提高,特别是当 QP 很小时,与原始视频相比,噪声视频的平均压缩 181.6%;Bitrate_denoised 表示压缩去噪灰度视频的比特率,与原始视频相比,去噪视频的平均压缩为 112.5%。另外即使最坏的情况(当 QP=22 时,FourPeople 序列的 438.7% )仍然远低于压缩带噪声视频的情况。我们假设高斯噪声是加性的,高频噪声会加重变换和量化工具的负担,使得 HM 变得脆弱。
- 图像质量分析
表 3 视频质量分析
表 3 展示了 PSNR 和 SSIM 角度的图像质量结果,我们的方法在编码 Kimono,ParkScene,FourPeople 时在 PSNR 、 SSIM 角度均会有所提升。特别地,对于 Kimono 序列,与不经过预处理的方案进行对比,我们的方法可以实现最大 1.37 dB 的PSNR 增益。对于其他序列,引入预处理的方案可能会导致相似或者更糟的图像质量。这是因为,我们的方案更倾向于以高优先级降低比特率,而不是在高比特率下保持更好的图像质量。因此,在兼顾比特率和图像质量的同时,我们的框架不仅有助于减少输入视频的错误,而且可以大幅降低比特率。
图 3 、图 4 展示了噪声视频和去噪视频解码之后的比较。
QP = 22 的结果
QP = 37 的结果
图 3 是最低 QP 的实验结果,图 4 是最高 QP 的实验结果。由于量化,当解压缩以后,两类视频都含有最少的噪声。事实上,很难发现噪声图像和去噪图像的主观差异,大部分的视觉可见噪声都在编码预处理阶段被去除。因此,可以认为,本文框架有助于在保证图像质量的同时改善压缩性能,大幅降低比特率。
结论
本文提出了将去噪网络作为视频压缩预处理器的实验框架,该方案可以在保证图像质量的同时,有效的降低比特率。