Dense Residual Convolutional Neural Network based In-Loop Filter
DRNLF是由腾讯和武汉大学合作提出的,基于神经网络的环路滤波,作为DF和SAO之间的附加滤波器,
DRNLF最早是在JVET-K0391提案中提出,之后并不断改进,本文总结该滤波器的演进过程。
JVET-K0391
A.Dense Residual Unit(DRU)
ResNet中的残差学习可以有效地解决梯度消失问题,并有助于深层网络的训练。DenseNet中的密集快捷方式鼓励功能重用,并促进信息和梯度的流动。本文结合ResNet和DenseNet的优点,设计了一种称为dense residual unit(DRU)的块结构,专门用于滤波任务,ResNet的残差块和DRU结构的比较如下图所示。
DRU由一个1x1的卷积层(作为bottleneck layer,用来节省计算资源和减少网络参数)、两个卷积层3x3和它们之间的一个激活函数(ReLU)组成。此外,在DRU中有两条捷径。内部捷径通过将1x1的卷积层的输出与最后一个卷积层的输出相加来实现残差学习。外部捷径直接将原始输入传递给下一个单元,通过该捷径可以使后续单元从从先前的输入中探索新的特征。作为DRU的输入x,DRU的输出可以表示为
其中H(·)表示级联操作,g(·)表示1x1的卷积层,f(·)表示残差学习。如图所示,在DRU中,批量归一化(BN)层被移除,因为它可能导致丢失对图像恢复有价值的低层特征。残差块中原始值跳过连接后的激活层也被移除,以鼓励信息流动。
B. Network Architecture
DRN的整体架构如下图所示。网络主要由一系列具有3x3卷积层的DRU组成。为了利用图像通道之间的相关性,提出的DRN以RGB图像作为输入。除了最后一个卷积层输出为3通道之外,其他卷积层生成相同数量的特征映射(表示为M)。DRU可以通过捷径将其输入直接传播到后续单元。通过网络中的级联DRU,每个DRU可以通过密集的捷径接收来自所有前面单元的多级特征。将1x1卷积层放在每个DRU单元的前面作为瓶颈层,融合这些多级特征,同时节省计算资源。全局标识跳过连接进一步促进了浅层特征的流动。在网络的最后一层加入两个3x3卷积层,自适应地融合前面的特征图,生成最终的重建图像。注意,1x1卷积层不用于第一个DRU单元。
C.Proposed Decoding Scheme
本文所提出的DRNLF作为DF和SAO之间的附加滤波器被引入VTM中,如下图所示。重建帧首先经过DF滤波,然后再经过DRN处理。然后采用SAO自适应地进一步减少DRN输出中的伪影。在本文中,针对不同的Qp单独训练不同的模型。在环路滤波过程中,根据压缩帧的QP值选择最优的DRN模型。
亮度分量和色度分量均可用使用训练好的DRN模型,并以块级为单位进行RDO决策要不要使用DRN滤波,并将标志位通过比特流传给解码端。
D. Simulation Results
本文使用DIV2K数据集[2]对所提出的网络进行训练和验证。它的训练集中有800个图像,验证集中有100个图像。模型以16个小批量(min-batch)进行训练。学习率初始化为,每次小批量更新时学习率除以一半。在ALL INTRA配置下,通过使用不同的Qp压缩高质量图像来生成重建图像。具体地,使用22、27、32和37的Qp。该网络是在从训练样本中随机抽取的192x192的小patch上训练的。模型训练采用均方误差(MSE)作为损失函数。用X表示有压缩伪影的图像,Y表示相应的高质量图像,表示所提出的DRN的参数。训练的目标是估计使以下MSE损失最小化:
将训练好的模型集成在VTM1.1中。注意本文中使用的参数N和M分别为8和64.
JVET-L0242
在本提案中,对DRU单元和DRN网络结构进行许多改进,所提出改进后的DRU和DRN如下图所示。
与上一提案相比,本提案主要包含五个方面的改进:
- 删除了外部的3x3卷积层,使得网络训练时性能稍好,速度更快
- 将归一化的QP Map与重建帧级联起来作为DRN的输入,使得不同的QP只需要一个模型
- 在YUV颜色空间的数据集上训练网络,设计一个损失函数来平衡不同分量之间的编码增益
- 为了降低网络的计算开销,将DRU数从8个减少到4个,卷积核数从64个减少到32个
- 在每个DRU中,3x3传统卷积层被3x3深度可分离卷积(DSC)层取代
注意:输入是三通道的,意味着YUV分量是同样大小的,对于色度分量,对其进行上采样和亮度分量的尺寸对齐。
将训练好的网络集成在VTM中,如下图所示,将DRNLF放在DBF之后,SAO和ALF之前。我们对三个颜色分量上的每个CU块应用DRNLF与不应用DRNLF的RD Cost进行比较,以分别决定是否将DRNLF应用于每个块的相应分量。为每个CTU发信号通知三个附加标志,以分别在三个分量上指示DRNLF的开/关。该滤波器适用于帧内和帧间图像。
在训练阶段,利用DIV2K数据集为的网络生成训练集和验证集。DIV2K数据集中的图像在压缩前从RGB颜色空间转换到YUV颜色空间。图像由VTM 4.0 压缩(ALL INTRA配置)。量化参数(QP)值设置为22、27、32和37。压缩图像及其对应的归一化QP Map被用作网络的输入。压缩前的图像被用作ground-truth。L1损失用作训练的损失函数。使用Adam优化器。为了平衡不同分量之间的编码增益,我们将Y、Cb、Cr的权重分别设置为10、1、1。应用了300个训epoch。对于每个epoch,从图像中随机提取8个大小为64×64的小块来生成训练样本。学习速率初始化为,每50个周期减半。对于计算效率和性能之间的权衡,N设置为4,M设置为32。
实验性能如下表所示:
为了比较不同网络参数的性能,将每个测试的网络都集成到VTM-2.0.1中进行比较。如表二和表三所示,N和M分别表示DRU数和特征图,T表示训练数据的颜色格式,W表示损失函数中Y、U、V的权重比,S表示是否去掉外层的3 × 3卷积层,DSC表示是否应用3×3 DSC层代替DRU的传统卷积层。
实验结果如下所示:
如表二所示,Test 4显示了在相同的网络结构和相同数量的参数下,Y分量的最佳编码效率。因此,本文中的网络采用了损失函数权重比为10:1:1的YUV训练网络,以平衡不同分量之间的编码增益。
如表三所示,Test 10采用了K0391中提出的网络,Test 9采用了本文提出的网络。参数比率基于Test 5的模型参数。Test 5中的网络采用了刚才描述的前三个改进,Test 10和Test 5之间的比较表明,简化的网络优于具有相同参数的前一个网络。考虑到编码效率和网络复杂性之间的权衡,基于表三中的前四个测试结果,明显的网络复杂性降低引入了可接受的编码增益降低。因此,本文采用浅层模型,对应于提到的第四种改进。此外,Test 8和Test 9的结果验证了DSC卷积层在节省计算资源方面的性能。因此,我们采用了描述的最后一个改进。
JVET-M0508
将L0242中的网络集成到了VTM3.0,并测试相应的性能
JVET-N0254
将L0242中的网络集成到了VTM4.0,并测试相应的性能
JVET-O0101
将L0242中的网络集成到了VTM5.0,并做了四组测试,如下表所示:
Test # | Test Part | Description |
CE13-2.5a | bit-depth | 32-bit(float) weights |
CE13-2.5b | 8-bit(int) weights | |
CE13-2.7a | generalization capability (QP) | CTC QP for training, CTC QP – 5 for testing |
CE13-2.7b | CTC QP for training, CTC QP + 5 for testing |
JVET-T0057
仍是基于O0101中的DRN结构的网络,通过修剪(pruning)减少DRNLF的计算
卷积神经网络的计算与神经网络每个卷积层的4D权重张量W[n][m][h][w]的大小有关,其中n是输出滤波器(filter)的个数,m是输入通道(channel)的个数,h×w是二维卷积核的大小。卷积层的计算可以通过将W中的一些系数归零来减少,从而减少乘加运算的次数。这种将W中的系数归零的方法称为神经网络压缩中的剪枝(pruning)。在本文中,将DRNLF做pruning来研究编码效率和剪枝的影响。这个贡献报告了DRNNLF将输出filters器的数量减少25%的结果。
如图3A所示,4D权重张量W可以展开为二维数组,其中2D数组中的每个元素是由h×w的2D卷积核的序列化滤波器系数组成的1D数组。在图3A中,2D阵列的列对应于输入通道。2D数组的行对应于输出filters。这一贡献考虑了通过对图3A中W中的系数进行剪枝,将图3B中描述的行的25%归零。因此,乘法加法的数目和神经网络参数的大小都可以减少25%。。
测试性能如下所示(VTM10.0)
| Random Access Over VTM-10.0 | ||||||
BD-rate (Y) | BD-rate (U) | BD-rate (V) | Encoding Time (CPU) | Decoding Time (CPU) | Encoding Time (GPU) | Decoding Time (GPU) | |
No Pruning | -0.96% | -3.88% | -3.82% | 105% | 3334% | ||
25% Filter Pruning | -0.79% | -3.70% | -2.82% | 105% | 3244% | ||
| Low delay B Over VTM-10.0 | ||||||
BD-rate (Y) | BD-rate (U) | BD-rate (V) | Encoding Time (CPU) | Decoding Time (CPU) | Encoding Time (GPU) | Decoding Time (GPU) | |
Overall | -0.77% | -4.88% | -4.64% | 107% | 3904% | ||
25% Filter Pruning | -0.64% | -4.58% | -4.17% | 106% | 3848% | ||
| Low delay P Over VTM-10.0 | ||||||
BD-rate (Y) | BD-rate (U) | BD-rate (V) | Encoding Time (CPU) | Decoding Time (CPU) | Encoding Time (GPU) | Decoding Time (GPU) | |
Overall | -0.81% | -5.06% | -5.12% | 110% | 4370% | ||
25% Filter Pruning | -0.65% | -4.95% | -4.49% | 109% | 4157% | ||
(Optional) | All Intra Over VTM-10.0 | ||||||
BD-rate (Y) | BD-rate (U) | BD-rate (V) | Encoding Time (CPU) | Decoding Time (CPU) | Encoding Time (GPU) | Decoding Time (GPU) | |
Overall | -1.31% | -2.69% | -3.38% | 108% | 3431% | ||
25% Filter Pruning | -1.07% | -2.79% | -2.74% | 108% | 3418% |
JVET-T0069
在本提案中,对DRU单元进行了进一步的改进,如下图所示,在3x3的DSC后面添加了SE Block,这是一种通道注意力机制,针对每个通道产生一个0-1的伸缩因子,从而可以筛选重要的特征图。
所提出的网络的整体架构如下图所示。该网络主要由8个Residual Unit 组成。除了最后一个卷积层为3通道输出外,其他卷积层生成相同数量的特征映射(表示为M=64)。最后在网络的最后一部分增加两个SE Block和一个3×3卷积层,自适应融合前一个特征映射,生成最终的重建图像。注意,第一单元中未使用1x1卷积层。全局标识跳过连接进一步促进了浅层特征的流动。
网络的训练采用L1损失和SSIM作为不同权重(,)的损失函数,(Θ)更重视PSNR等客观指标,采用(Θ)的训练阶段优先考虑SSIM的性能。
其中,Θ表示建议网络的参数,表示压缩图像块的原始值。
如下图所示,所提出的CNNLF作为去块滤波器(DF)和采样自适应偏移(SAO)之间的附加滤波器被引入VTM。该网络首先对重建帧进行DF滤波,然后对其进行处理,利用SAO算法进一步减少网络输出中的伪影。
在本文中,仅针对不同的QP训练一个模型。在环路滤波过程中,基于块级率失真优化(RDO),给出了是否采用该滤波器的决策。为了在亮度和色度分量上用信号表示所提出的滤波器的使用,在比特流中分别用信号表示附加标志。
JVET-U0060
本提案测试了T-0057提案中的DRU单元分别使用深度可分离卷积和常规卷积的性能和计算复杂度
DSC | RC | |||||
Y-PSNR | U-PSNR | V-PSNR | Y-PSNR | U-PSNR | V-PSNR | |
Random access Main10 | -0.99% | -3.78% | -3.79% | -1.28% | -5.79% | -5.87% |
Low delay B Main10 | -0.81% | -5.60% | -5.54% | -1.11% | -8.55% | -8.29% |
Low delay P Main10 | -0.87% | -4.72% | -5.02% | -1.23% | -7.85% | -7.84% |
All Intra Main10 | -1.28% | -2.82% | -3.57% | -1.57% | -4.49% | -5.36% |
Average | -0.99% | -4.23% | -4.48% | -1.30% | -6.67% | -6.84% |
DSC | RC | |||||
EncT | DecT | bit DIFF | EncT | DecT | bit DIFF | |
Random access Main10 | 106% | 3471% | 0.17% | 107% | 4379% | 0.19% |
Low delay B Main10 | 107% | 4056% | 0.24% | 108% | 5233% | 0.29% |
Low delay P Main10 | 110% | 4426% | 0.28% | 112% | 5578% | 0.32% |
All Intra Main10 | 107% | 3393% | 0.10% | 109% | 4135% | 0.11% |
Average | 108% | 3837% | 0.20% | 109% | 4831% | 0.23% |
JVET-U0061
在本文中,从JVET-U0060向左图所示的预处理单元(输入网络前对UV分量上采样)添加了一个clip步骤,以获得右图中的预处理单元。Clip的目的是提高神经网络训练和推理的效果。
JVET-W0062
该提案测试了使用MS-SSIM和L1 Loss分别作为损失函数对性能的影响,Test1和Test2的损失函数分别如下所示:
总的来说,在测试的时候,原方案做了如下改动:
- 损失函数:L1 loss和MS-SSIM;
- RDO:J=R+λ_new*MS-SSIM
- SAO 和 ALF 被禁用
考虑到在 JVET-U0074 中基于 NN 的环内滤波为 {DBF, NN, SAO, ALF},在所有测试中禁用 SAO 和 ALF,以避免 SAO 和 ALF 对 NN 结果造成不必要的影响,并且 公平地比较 L1 和 MS-SSIM 模型的结果。
Test1:(Trained with MS-SSIM)
All Intra Main10 | |||||||||
BD-rate Over VTM-10.0 |
| ||||||||
Y-PSNR | U-PSNR | V-PSNR | Y-MSIM | U-MSIM | V-MSIM | EncT | DecT | bit DIFF | |
Class A1 | -3.31% | -0.91% | 1.28% | -5.37% | -5.83% | -4.20% | 225% | 43858% | 0% |
Class A2 | -4.30% | -9.16% | -10.89% | -4.09% | -10.27% | -8.54% | 155% | 34511% | 0% |
Class B | -2.92% | -8.71% | -3.96% | -2.95% | -9.52% | -7.52% | 140% | 31723% | 0% |
Class C | -5.13% | -10.23% | -8.96% | -3.68% | -9.96% | -9.20% | 121% | 20619% | 0% |
Class E | -6.22% | 0.26% | -0.95% | -5.65% | -7.65% | -4.65% | 149% | 34642% | 0% |
Overall | -4.26% | -6.33% | -4.85% | -4.16% | -8.82% | -7.03% | 151% | 31312% | 0% |
Class D | -5.00% | -9.78% | -11.37% | -3.28% | -10.66% | -11.96% | 117% | 16942% | 0% |
Test2: (Trained with L1)
All Intra Main10 | |||||||||
BD-rate Over VTM-10.0 |
| ||||||||
Y-PSNR | U-PSNR | V-PSNR | Y-MSIM | U-MSIM | V-MSIM | EncT | DecT | bit DIFF | |
Class A1 | -4.30% | -8.98% | -10.15% | -3.79% | -11.27% | -10.33% | 196% | 38514% | 0% |
Class A2 | -5.82% | -15.10% | -17.17% | -4.47% | -14.37% | -12.99% | 148% | 33133% | 0% |
Class B | -4.84% | -14.60% | -12.41% | -3.03% | -13.53% | -11.88% | 135% | 31796% | 0% |
Class C | -6.34% | -14.26% | -13.27% | -3.43% | -13.27% | -12.50% | 118% | 19446% | 0% |
Class E | -8.03% | -9.64% | -9.20% | -6.23% | -11.39% | -10.52% | 142% | 36453% | 0% |
Overall | -5.78% | -12.85% | -12.48% | -4.02% | -12.88% | -11.72% | 143% | 30316% | 0% |
Class D | -6.21% | -12.91% | -15.77% | -2.94% | -12.72% | -15.05% | 117% | 17029% | 0% |
结论:在相同的网络结构和测试条件下,基于 MS-SSIM 的训练模型在保持主观质量方面具有更好的性能(通过 MS-SSIM 评估),而 L1 模型具有 在客观质量上有更好的表现。
JVET-W0151
EE1:使用深度可分离卷积和常规卷积的基于神经网络的环路滤波器:
U0060/U0061提出的密集残差卷积神经网络的环路滤波器(DRNLF)如下图所示,DRNLF用在去块滤波和SAO之间。
DRNLF 包括一个 QP Map Quantizer单元,一个预处理单元,一个主处理单元和一个后处理单元,如下图所示。
在JVET-U0061[5]中,在JVET-U0060的图3所示的Pre-Processing单元中添加了裁剪步骤,得到图4的Pre-Procssing单元。 裁剪旨在改进神经网络的训练和推理过程中的结果。
该提案主要是测试了上述滤波器以VTM-11.0+V0056为Anchor的性能(启用 MTCF)
Random access | ||||||||
BD-rate Over VTM-11.0+V0056 | ||||||||
Y-PSNR | U-PSNR | V-PSNR | Y-MSIM | U-MSIM | V-MSIM | EncT | DecT | |
Class A1 | -1.78% | -3.37% | -3.78% | -3.68% | -3.71% | -4.22% | 108% | 4396% |
Class A2 | -1.13% | -4.34% | -2.89% | -0.75% | -3.51% | -1.72% | 107% | 2872% |
Class B | -0.80% | -5.46% | -3.76% | -0.45% | -5.16% | -2.86% | 107% | 2547% |
Class C | -1.03% | -5.81% | -4.44% | -0.65% | -5.56% | -3.93% | 105% | 3742% |
Class E | ||||||||
Overall | -1.12% | -4.91% | -3.77% | -1.21% | -4.65% | -3.19% | 107% | 3224% |
Class D | -1.41% | -4.12% | -4.51% | -0.53% | -4.69% | -4.64% | 105% | 2441% |
Class F | -0.42% | -2.02% | -2.18% | -0.22% | -2.58% | -2.58% | 111% | 1628% |
All Intra | ||||||||
BD-rate Over VTM-11.0+V0056 | ||||||||
Y-PSNR | U-PSNR | V-PSNR | Y-MSIM | U-MSIM | V-MSIM | EncT | DecT | |
Class A1 | -1.41% | -3.07% | -3.63% | -2.98% | -3.55% | -4.20% | 114% | 3704% |
Class A2 | -1.34% | -3.81% | -2.97% | -1.09% | -3.21% | -1.87% | 108% | 2807% |
Class B | -1.04% | -4.85% | -4.27% | -0.75% | -4.98% | -3.63% | 106% | 2888% |
Class C | -2.04% | -6.53% | -5.57% | -1.34% | -6.22% | -5.43% | 103% | 3380% |
Class E | -2.45% | -3.18% | -3.57% | -1.51% | -2.72% | -2.40% | 105% | 5121% |
Overall | -1.61% | -4.48% | -4.12% | -1.44% | -4.35% | -3.63% | 106% | 3413% |
Class D | -2.49% | -4.82% | -5.81% | -1.31% | -5.08% | -5.99% | 103% | 3064% |
Class F | -0.94% | -2.58% | -2.49% | -0.65% | -3.04% | -2.95% | 103% | 2468% |