2019ICCV论文 Non-Local ConvLSTM for Video Compression Artifact Reductio

2019CVPR Non-Local ConvLSTM for Video Compression Artifact Reduction

针对视频压缩伪影的非局部ConvLSTM

Abstract

视频压缩伪影减少的目的是从低质量的压缩视频中恢复高质量的视频。大多数现有的方法使用一个相邻帧或一对相邻帧(在目标帧之前和/或之后)来完成此任务。此外,由于整体质量较高的帧中可能含有质量较低的patch,而整体质量较低的帧中也可能存在质量较高的patch,因此,目前针对附近峰值质量帧(peak-quality frames,PQFs)的方法可能会遗漏低质量帧中的高质量细节。为了弥补这些不足,本文提出了一种新的端到端深度神经网络——非局部ConvLSTM(简称np -ConvLSTM),该网络利用多个连续帧。引入了一种近似的非局部策略来捕获全局运动模式并跟踪视频序列的时空相关性。这种近似策略使非局部模块以一种快速、低空间成本的方式工作。该方法利用目标帧的前一帧和后一帧来生成残差,并根据残差重建高质量的目标帧。在两个数据集上的实验表明,NL-ConvLSTM算法的性能优于现有的算法。

Introduction

由于通信带宽和存储空间的限制,视频压缩算法在许多实际应用(特别是移动应用)中得到了广泛的应用。在显著降低传输和存储成本的同时,有损视频压缩也导致了各种压缩伪影,如块、边缘/纹理浮动、蚊子噪声和抖动[48]。这种视觉扭曲经常严重影响体验的质量(quality of experience,QoE)。因此,视频压缩伪影减少成为多媒体和计算机视觉领域的一个重要研究课题[26,43,45]。

近年来,由于深度神经网络的成功应用,压缩图像/视频增强技术取得了显著的进展。例如,[11, 12, 36, 49]直接利用deep convolutional neural networks去除图像的压缩伪影,而不考虑底层压缩算法的特点。[16, 38, 43, 44]提出了以压缩帧为馈源并输出增强帧的模型。这些模型都使用单一帧作为输入,不考虑相邻帧的时间依赖性。为了利用相邻帧间的时间相关性,[26]提出了深度卡尔曼滤波网络,[42]采用面向任务的运动,[45]采用两个运动补偿的最近PQFs。但是[26]只使用了目标帧的前一帧,而[42,45]只采用了一对相邻帧,这可能会遗漏其他一些相邻帧的高质量细节(后面会解释)。

         视频压缩算法有帧内和帧间编解码器。内部编码帧(P和B帧)主要依赖于前面和后面的邻居帧。因此,提取相邻帧之间的时空关系可以为提高视频增强性能提供有用的信息。然而,从相邻的一/两个帧甚至两个最近的PQFs中挖掘细节信息对于压缩视频伪影降低是不够的。为了说明这一点,我们在图1中给出一个例子。结构相似度指标(SSIM)越大的帧通常被认为具有更好的视觉质量。在这里,虽然第140和143帧的整体视觉质量优于第142帧,裁剪质量最高的patch来自第142帧。如果使用现有的方法从视频中挖掘时空信息,则会忽略这些patch中高质量的细节。

         基于以上观察,本文尝试从目标帧的多个前后帧中获取隐藏的时空信息,以提高视频压缩伪影降低的性能。为此,我们开发了一个非局部ConvLSTM框架,该框架使用非局部机制[3]和ConvLSTM[41]架构从帧序列中学习时空信息。为了加快非局部模块的速度,我们进一步设计了一种近似有效的计算帧间像素相似度的方法。与现有方法相比,我们的方法至少在三个方面具有优势:1)不明确需要精确的运动估计和补偿;2)适用于H.264/AVC、H.265/HEVC等常用压缩算法压缩的视频;3)提出的方法优于现有的方法。

         本研究的主要贡献包括:1)我们提出了一种利用目标帧的多个前后帧来减少视频压缩伪影的新想法,而无需显式计算和帧间的补偿运动。2)我们开发了一个端到端的深度神经网络,称为非局部ConvLSTM,用于从多个相邻帧中学习时空信息。3)设计了一种近似计算帧间像素相似度的方法,极大地减少了计算和存储开销。4)我们在两个数据集上进行了广泛的实验来评估所提出的方法,该方法在降低视频压缩伪影方面达到了最先进的性能。

Method

视频压缩的目标减少人工痕迹是从原始帧Yt的压缩帧Xt推断出一个高质量的Yt,Xt∈RC×N是在时间t的压缩帧。这里C是单帧的通道的数量。为了使符号更清晰,我们将空间位置(宽度W和高度H)折叠为一维,N=HW。令Xt={Xt T,…, Xt + T}表示的序列(2 T + 1)连续压缩框架,我们的方法以Xt作为输入和输出YˆT。

我们的方法是一个端到端可训练的框架,由三个模块组成:编码器,NL-ConvLSTM模块和解码器,如图2所示。分别负责从单个帧中提取特征,学习帧间的时空相关性,将高级特征解码为残差,最终重构出高质量的帧。

Encoder. 它设计了多个二维卷积层,用于从Xt中提取特征。以Xt为输入,输出Ft={Ft-T,…,Ft+T}。其中FtRCf×N,对应从Xt获得的特征,Cf表示输出的特征的通道数。它单独处理每一帧。

NL-ConvLSTM. 为了跟踪帧序列的时空相关性,我们在编码器和解码器之间放置了一个ConvLSTM[41]模块。ConvLSTM能够从任意长度的帧序列中捕捉时空信息,但对大的运动和模糊运动处理效果不佳。为了解决这个问题,我们将非本地(NL)[3]机制嵌入到ConvLSTM中,并开发了NL-ConvLSTM模块。这里,非局部相似度用于不同帧的像素,而不是同一帧[3]中的像素。NL - convlstm模块可以描述为

与[37,41]中只给予t时刻特征Ft的ConvLSTM不同,NL-ConvLSTM将t-1时刻的特征Ft-1为输入,输出对应的隐藏状态和单元状态Ht, Ct∈RCh×N。这里,Ch是隐藏状态和单元状态的通道数。此外,在NL-ConvLSTM中,隐状态Ht-1和细胞状态Ct-1不直接被送入门操作。相比之下,我们计算Ft-1和Ft之间的帧间像素级相似度St,然后对Ht-1和Ct-1进行加权使用St作为权值。此外,本文还利用双向ConvLSTM从前帧和后帧preceding and following frames.中学习时空相关性。在下面的部分中,我们只提到前向NL-ConvLSTM的操作。关于NL-ConvLSTM模块的详细信息,可以参考图2(右)、图3、3.2和3.3节。

Decoder. 它将NL-ConvLSTM模块的两个方向的隐藏状态解码为残差,利用残差重构出高质量的帧。具体来说,我们首先通过核大小为1×1的卷积层将隐藏状态结合起来,然后使用多个堆叠的卷积层生成残差。

3.2Non-local ConvLSTM

ConvLSTM可表示为[37]:

为了学习鲁棒的时空依赖性,我们在ConvLSTM中采用非局部机制来帮助估计帧序列中的运动模式。作为ConvLSTM的扩展,NL-ConvLSTM可以表示为:

其中St∈RN×N为当前帧像素与前一帧所有像素之间的相似矩阵。NL是计算两帧特征之间相似度矩阵的非局部算子,NLWarp是时刻(t-1)隐含状态和单元状态的加权和形式的扭曲操作。

按照[3]的非局部操作,我们工作中的帧间像素相似性和非局部扭曲操作如下:

其中i,j∈{1···N}表示特征图中的位置,F (i)和H(i)是对应位置i的特征和状态。Dt (i, j)和st(i, j)分别是t-1时刻之前特征图位置i和t时刻特征图位置j之间的所有通道的欧氏距离和相似性。St(I,j)满足iSti,j=1。因此,非局部方法可以看作是一种特殊的注意机制[39]。

3.3两阶段非局部相似近似

对于高分辨率视频,直接计算St∈RN×N和翘曲操作会产生极高的计算和内存成本。因此我们提出一个两阶段non-local 方法用于近似DtDt,StSt,在保持精度的同时减少计算量和内存。近似方法的核心思想是在计算像素相似度之前,根据编码器学习到的深度特征对图像分块进行预滤波。具体情况如下:

在第一阶段,我们对编码器向下采样得到的特征图使用平均池化,并减少块匹配敏感性的几何变换(移动和旋转)。将平均池化核大小表示为p,下采样特征图表示为Ftp。然后将feature map的分辨率降为N/p2,即原分辨率的1/p2。下采样特征图Ftp中的每个超像素对应原始特征图中p2个像素组成的块。则可计算下采样距离矩阵Dtp∈RNp22

对任意Ftp的块bt中的每个像素,我们只考虑最接近bt的在Ft-1p中的k块的k×p2个像素。

         在第二阶段,我们计算并存储Ft中的每个像素与其对应的Ft-1的k×p2个像素间的相似性。对于前一帧中的其他像素而言,DtSt分别设置为+∞和0。由于相似的像素是稀疏的,一个像素可以用相邻帧的几个像素表示,因此top-k blocks近似的质量损失可以忽略不计。图3给出了两阶段相似度近似的工作流程。Ct的NLWarp操作与Ht类似。为了简单起见,我们在图3中只显示了对Ht的操作。

①首先在Ft-1中找到top-k个与Ft中的Ftp(j)block最相近的block②从Ft-1中抽取对应top-k最接近的块的对应位置的Ht-1③在Ft-1和Ftpj间计算像素级相似度④为Ht执行NLWarp

         Complexity analysis.表一对比了我们的近似方法和原始方法的复杂度。由于logk≪C,因此我们可以忽略Tab 1中有关寻找top-k个最近邻block项的计算。我们将原有非局部方法的复杂度表示为ψ,我们的近似方法的复杂度表示为ϕ,可被写作O(Np22C+2kNCp2)。通过恰当的选择k和p的值,使得kp2≪N,我们有ϕψ=12p4+kp2N≪1,这意味着我们的方法大大降低了原始方法的计算成本。并且对于一个给定的k,ϕ/ψ可以实现在p=Nk16时最小的1.5kN23。在内存成本方面也可以得出类似的结论。更具体地说,通过设置p=10、k=4、C=64、f=41,可以得到ϕ与(O(NC2f2))接近,即具有f×f核的卷积层的计算复杂度。

         Non-local operation vs. motion compensation. 这两种操作有相似之处也有不同之处。相似点:1)两者都可以用于捕获连续帧中的时空关系和运动模式。2)两者都可以被看作是一种注意机制。在非局部操作中,the warped state Ht-1是通过所有的在Ht-1中的像素以加和的形式计算出来的,而在motion compensation中,Ht-1中的每个像素是通过与周围邻居像素通过插值,以加和的形式得到的。区别:在非局部操作中,每个像素通过在Ht-1的多个位置warp实现的。而motion不受固定流量大小的限制,这与固定流量大小必须设置的运动补偿不同。因此,非局部操作可以更有效地捕捉全局运动模式。2)在非局部操作中,一旦提取特征就确定相似度;在运动补偿中,我们需要训练额外的层来产生运动场。

         3.4 Implementation Details

         在我们的实现中,遵循现有的方法[26,45],我们使用L2范数作为损失函数: 由于NL-ConvLSTM的优点,它可以通过一个小的内核捕获全局运动。所以我们的NL-ConvLSTMs是使用3×3内核实现的。对于所有数据集,网络训练用Adam[20]优化器的初始学习速率10-4,minibatch大小为32。训练时,NL-ConvLSTM以80×80的patch大小对原始序列和压缩序列进行采样。相反,在测试期间,全分辨率的视频序列被输入到我们的模型中。在所有实验中,我们使用k=4和p=10来平衡效率和有效性,并对所有数据集设置T=3。

         为了进一步加速非局部算子,在计算距离矩阵Dt时采用向量化。尽管向量化不会减少浮点运算的数量,但它可以通过并行计算来加速。通过把Dt展开成公式(4),我们有

Dt2=CtFt-121T+1 CtFt2T-2Ft-1TFt (7)

1∈RN×1是一个单位向量。我们采用公式(7)在第一阶段计算Dtp,并执行公式(7)的稀疏版本,计算当前帧的每个像素与前一帧中预滤波的k×p2像素之间的距离。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值