目录
5.3. Comparison with State-of-the-art Methods
论文:https://arxiv.org/pdf/2006.09603.pdf
代码:mirrors / LongguangWang / SMSR · CODE CHINA
原文翻译
Abstract
目前基于cnn的超分辨率(SR)方法平均处理所有位置,计算资源在空间中统一分配。然而,由于低分辨率图像中缺失的细节主要存在于边缘和纹理区域,这些平坦区域所需的计算资源较少。因此,现有的基于cnn的方法涉及到平面区域的冗余计算,增加了计算成本,限制了其在移动设备上的应用。本文通过研究图像稀疏性来提高图像稀疏网络的推理效率。具体地说,我们开发了一个稀疏掩码SR (SMSR)网络来学习稀疏掩码,以减少冗余计算。在我们的SMSR中,空间掩码学习识别重要区域,而通道掩码学习标记那些不重要区域的冗余通道。因此,冗余计算可以精确地本地化并跳过,同时保持相当的性能。实验证明,我们的SMSR达到了最先进的性能,在2=3=4 SR的情况下降低了41%=33%=27%的FLOPs
1. Introduction
单图像超分辨率(SR)的目标是从单次低分辨率(LR)观测中恢复高分辨率(HR)图像。由于深度神经网络具有强大的特征表示和模型拟合能力,基于cnn的SR方法相对于传统的方法取得了显著的性能提升。近年来,人们在实际应用方面做出了许多努力,包括少镜头匹配[38,39]、盲匹配[12,49,42]和任意尺度匹配[15,43]。随着智能边缘设备(智能手机、VR眼镜等)的普及,对这些设备进行SR的要求越来越高。由于边缘设备资源有限,有效的SR对于这些设备上的应用至关重要。
自SRCNN[8]的开创工作以来,人们对图像SR的深度网络进行了广泛的研究。在VDSR[19]中,SR网络首先被深化到20层。然后,在EDSR[29]中引入了一个超过60层的非常深入和广泛的架构。随后,Zhang等进一步将RDN[51]和RCAN[50]的网络深度分别增加到100和400以上。虽然深度网络通常可以提高SR的性能,但它也会导致较高的计算成本,限制移动设备上的应用。为了解决这一问题,人们通过信息蒸馏[17]和高效特征重用[2]来减少模型大小。然而,这些网络仍然涉及冗余计算。与HR图像相比,LR图像的细节缺失主要存在于边缘和纹理区域。因此,在那些平坦区域需要较少的计算资源。然而,这些基于cnn的SR方法对所有位置的处理是相同的,导致在平坦区域内的冗余计算。
本文通过研究图像稀疏性来提高图像稀疏网络的推理效率。首先研究了图像SR任务的固有稀疏性,然后研究了现有SR网络中的特征稀疏性。为了充分利用稀疏性进行高效推理,我们提出了一种稀疏掩码SR (SMSR)网络,它可以在细粒度水平上动态跳过冗余计算。我们的SMSR学习空间掩码来识别重要区域(如边缘和纹理区域),并使用通道掩码来标记那些不重要区域的冗余通道。这些arXiv: 2006.09603 v2 (cs。两种掩模联合工作,精确定位冗余计算。在网络训练期间,我们使用Gumbel softmax技巧软化这些二进制掩模,使它们可微分。在推理过程中,我们使用稀疏卷积来跳过冗余计算。实验证明,我们的SMSR可以有效地本地化和削减冗余计算,以获得更好的效率,同时产生有前景的结果(图1)。
我们的主要贡献可以概括为:1)我们开发了一种动态跳过冗余计算的SMSR网络,从而实现高效的图像sr。与现有的轻量级网络设计相比,我们探索了一种不同的路径,通过修剪冗余计算来提高推理效率。2)我们提出通过学习空间和通道掩模来定位冗余计算。这两种掩模共同作用于冗余计算的细粒度定位。3)实验结果表明,我们的SMSR达到了最先进的性能,具有更好的推理效率。例如,我们的SMSR在Set14上优于之前的方法,在移动设备上有显著的加速(表2)。
2. Related Work
在本节中,我们首先回顾了基于CNN的单图像sr的几个主要工作,然后,我们讨论了与我们工作相关的CNN加速技术,包括自适应推理和网络剪枝。
Single Image SR.基于cnn的方法由于具有较强的表示能力和拟合能力,一直主导着单图像SR的研究。Dong等人的[8]首先引入了一个三层网络来学习单幅图像sr的lr - hr映射,然后在VDSR[19]中提出了一个20层的深度网络。近年来,更深层次的网络在图像sr中得到了广泛的研究。Lim等人[29]提出了一种通过级联修正残差块的非常深和宽的网络(即EDSR)。Zhang et al.[51]进一步结合残差学习和密集连接,构建了100层以上的RDN。尽管这些网络实现了最先进的性能,但高昂的计算成本和内存占用限制了它们在移动设备上的应用程序。
为了解决这个问题,开发了几个轻量级网络[22,17,2]。具体来说,在IDN[17]中提出了用于特征学习的蒸馏块,而在CARN[2]中引入了级联机制来鼓励有效的特征重用。与这些手工设计的网络不同,Chu等人使用神经结构搜索(NAS)开发了一个紧凑的架构。最近,Lee等人[24]引入了一个蒸馏框架,利用强大的教师SR网络学到的知识来提高轻量级学生SR网络的性能。尽管这些轻量级SR网络成功地减小了模型大小,但冗余计算仍然存在,阻碍了它们获得更好的计算效率。
与现有的许多专注于紧凑架构设计的工作相比,很少有人努力利用SR网络中的冗余来进行有效的推理。
Adaptive Inference.自适应推理技术[44,37,36,11,26]由于可以根据输入来调整网络结构,因此受到越来越多的关注。自适应推理技术的一个活跃分支是在层的层次上动态地选择推理路径。具体来说,Wu等人[45]提出了一种用于ResNets的BlockDrop方法,可以动态地丢弃几个剩余块以提高效率。Mullapudi等人[36]提出了一个具有多个分支的HydraNet,并使用一个门控方法在测试时动态地选择一组分支。另一个流行的分支是早期停止技术,当它被认为是不必要的位置跳过计算[46]。在ResNets的基础上,figunov等人[9]提出了一种空间自适应计算时间(SACT)机制,当特征足够好时停止对空间位置的计算。Liu等人的[31]通过生成局部网络深度图来适应在不同位置实现的卷积层的数量,从而引入了自适应的SR推理。然而,这些自适应推理方法只关注空间冗余,没有考虑通道维数冗余。
Network Pruning.网络剪枝[13,32,33]被广泛应用于去除一组冗余的网络加速参数。作为网络修剪方法的一个流行分支,结构化修剪方法通常用于在通道级甚至层级对网络进行修剪[25,32,33,14]。Li et al.[25]使用L1范数来衡量不同滤波器的重要性,然后对不太重要的滤波器进行修剪。Liu et al.[32]对批处理归一化层的标度因子施加了稀疏性约束,并将标度因子较低的通道识别为信息量较少的通道。与这些静态结构剪枝方法不同,Lin等人[30]根据输入图像进行运行时神经网络剪枝。最近,Gao等人[10]提出了一种特征增强和抑制方法,在推理时动态地修剪不重要的通道。然而,这些网络剪枝方法对所有空间位置都一视同仁,没有考虑它们的不同重要性。
在本节中,我们首先说明了单幅图像SR任务的内在稀疏性,然后研究了最先进的SR网络中的特征稀疏性。
给一张高清图片HR image 和一张低视效的图
,我们对
进行Bicubic和RCAN的超分操作获得
和
。图二中显示了
,
和
在亮度信道上的绝对区别。从图二可以观察到
对于单调的区域是‘足够好的’。只有一小部分区域的细节明显缺失。即SR任务在空间域上具有本质上的稀疏性。与Bicubic相比,RCAN在边缘区域的性能更好(~17%的像素|
>
|>0.1),而在平坦区域的性能也相当(图2(c))。虽然RCAN的重点是恢复边缘区域的高频细节(图2(d)),但这些平坦区域同时也同样被处理。因此,涉及到冗余计算。
图3给出了RCAN骨干块中ReLU层之后的特征映射。可以看出,不同通道的空间稀疏性存在显著差异。此外,相当多的通道非常稀疏(稀疏度0.8),只有边缘和纹理区域被激活。也就是说,这些平坦区域的计算是冗余的,因为这些区域在ReLU层之后没有被激活。总之,RCAN只激活不重要区域(如平坦区域)的少量通道,而激活重要区域(如边缘区域)的更多通道。在补充材料中提供了不同SR网络和骨干块的更多结果。
在这些观察的激励下,我们学习稀疏掩模来定位并跳过冗余计算来进行有效的推理。具体来说,我们的空间掩码动态地识别重要区域,而通道掩码则标记那些不重要区域中的冗余通道。与网络剪枝方法[10,30,14]相比,我们考虑了区域冗余,只剪枝不重要区域的通道。与自适应推理网络[37,27]不同,我们进一步研究通道维上的冗余,在更细粒度的水平上本地化冗余计算。
4. Our SMSR Network
我们的SMSR网络使用稀疏掩模模块(SMM)来削减冗余计算,从而实现高效的图像sr。在每个SMM中,首先生成空间掩模和通道掩模来定位冗余计算,如图4所示。然后利用L密连接稀疏掩模卷积动态跳过冗余计算。由于只执行必要的计算,我们的SMSR可以获得更好的效率,同时保持相当的性能。
4.1. Sparse Mask Generation
1) Training Phase
Spatial Mask。空间掩模的目标是识别feature map中的重要区域(即0表示不重要区域,1表示重要区域)。为了使二进制空间掩模具有可学习性,我们使用Gumbel softmax分布来近似单热点分布[18]。具体来说,输入特征是先喂给hourglass块生产的
如图五所示。然后,Gumbel softmax技巧被用来获得一个软化的空间掩模
x,y是垂直和水平指标,是一个Gumbel噪声张量,其所有元素都遵Gumbel(0;1)分布,τ是一个温度参数。当
,Gumbel softmax的样品分布变得均匀。也就是说,
中的所有元素都是0.5。当
,样品从Gumbel softmax分布成为一个热点。也就是说,
变成了二进制。在实践中,我们从高温开始,退火到一个较小的温度,以获得二元空间掩模。
Channel Mask.除了空间掩码外,信道掩码还用于标记那些“不重要”区域中的冗余信道(即,0表示冗余信道,1表示保留信道)。在这里,我们也使用Gumbel softmax技巧生成二进制通道掩码。对于第k个SMM中的第l个卷积层,我们向Gumbel softmax layer提供辅助参数,生成软化通道掩模
:
其中,c为通道指标,为Gumbel噪声张量。在我们的实验中,
使用高斯分布N(0;1).
Sparsity Regularization.在空间掩模和通道掩模的基础上,定义了一个稀疏项
是一个全为1的张量。请注意,ηk;l表示输出特征图中激活位点的比例。为了鼓励输出特征更稀疏,激活的位置更少,我们进一步引入了稀疏正则化损失
其中K为SMM的个数,L为每个SMM中稀疏掩模卷积层的个数
Training Strategy.在训练阶段,使用调度,其中t为纪元数,Ttemp在我们的实验中被经验设置为500。当τ逐渐减小时,Gumbel softmax分布被迫接近一个热点分布,以产生二元空间和信道掩模
2) Inference Phase
在训练过程中,随着τ减小,Gumbel softmax分布被迫接近单热点分布。因此,我们将训练后的Gumbel softmax层替换为argmax层,得到二进制空间和信道掩码,如图5(c)所示。
4.2. Sparse Mask Convolution
1) Training Phase
为了使梯度在所有位置反向传播,我们在训练期间没有显式地执行稀疏卷积。相反,我们将香草密集卷积的结果与预测的空间和通道掩模相乘,如图5(b)所示。首先将输入特征F与和(1-
)相乘,分别得到
和
。即对F中具有密集和稀疏特征映射的通道进行分离。接下来,
和
被传递给两个共享权的卷积。然后将得到的特征与(1 -
)、
和
的不同组合相乘,以激活特征的不同部分。最后,将所有这些特征相加,生成输出特征
。多亏了Gumbel softmax在掩模生成中使用的技巧,所有位置的梯度都可以被保留,以优化卷积层的核权值。
2) Inference Phase
在推理阶段,根据预测的空间掩码和信道掩码进行稀疏卷积,如图5(d)所示。以第k个SMM中的第1层为例,首先根据和
将其核分成4个子核,得到4个卷积。同时,在
的基础上,将输入特征F分解为
和
。然后,
馈送到卷积,产生
和
,而
馈送到卷积,产生
和
。需要注意的是,
是通过稀疏卷积生成的,而
、
和
是通过稀疏卷积生成的,只计算重要区域(以
标记)。最后,将这四个分支得到的特征进行求和并连接,得到输出特征
。使用稀疏掩模卷积,可以跳过那些不重要区域内的冗余信道的计算,从而进行有效的推断。
与最近许多使用轻量级网络设计[17,2,6]或知识蒸馏[24]进行高效SR的作品不同,我们通过修剪冗余计算来加快SR网络的速度。以往的自适应推理和网络剪枝方法独立地关注空间维数和信道维数的冗余计算。直接应用这些方法不能充分利用SR网络中的冗余,并且会导致显著的性能下降,如第5.2节所示。相反,我们的SMSR提供了一个统一的框架来考虑空间和信道维度的冗余。结果表明,我们的空间掩模和通道掩模相互兼容良好,便于SMSR获得冗余计算的细粒度定位。
5. Experiments
5.1. Implementation Details
我们使用来自DIV2K数据集[1]的800张训练图像和100张验证图像作为训练和验证集。为了进行评估,我们使用了5个基准数据集,包括Set5[4]、Set14[48]、B100[34]、Urban100[16]和Manga109[35]。采用峰值信噪比(PSNR)和结构相似度指数(SSIM)作为评价指标来衡量共振性能。按照[50,51]中的评估协议,我们裁剪边界并计算亮度通道中的度量
在训练过程中,随机裁剪16个96 96大小的LR patch及其对应的HR patch。然后通过随机旋转和翻转进行数据增强。设C = 64;L = 4;我们的SMSR的K = 5。我们使用Adam方法[21]与β1 = 0:9和β2 = 0:999进行优化。初始学习率设置为2 10 4,每200个纪元后降低一半。训练在1000年后停止。训练的总损耗定义为L = LSR + λLreg,其中LSR为SR结果与HR图像之间的L1损耗,Lreg定义在Eq. 4中。为了保持训练的稳定性,我们采用了,其中t为纪元数,根据经验将
设为50,λ0设为0.1。
5.2. Model Analysis
我们首先进行了实验来证明稀疏掩模的有效性。然后,我们研究了稀疏性的影响和可视化稀疏掩模进行讨论。最后,我们比较了基于学习的掩模和启发式掩模。
稀疏面具的有效性。为了演示我们的稀疏掩码的有效性,我们首先通过删除空间和通道掩码引入变体1。然后,我们分别通过添加通道掩码和空间掩码开发了变体2和变体3。比较结果见表1。没有空间和通道掩码,所有位置和所有通道都被同等处理。因此,变式1具有较高的计算代价。利用信道掩码,在所有空间位置上修剪冗余信道。因此,变型2可以看作是变型1的删节版。尽管变体2的参数和FLOPs更少,但它的性能下降显著(33.53 vs. 33.65),因为这些经过修剪的通道的重要区域的有益信息被丢弃。只有空间掩码的情况下,由于不能很好地处理通道维上的冗余计算,导致变式3在效率和性能之间存在冲突。因此,它的FLOPs减少,性能下降(33.60 vs. 33.65)。使用空间掩码和通道掩码,我们的SMSR可以在更细粒度的水平上有效地本地化并跳过冗余计算,从而减少39%的FLOPs,同时保持相当的性能(33.64 vs. 33.65)。
稀疏的影响。为了研究稀疏性的影响,我们重新训练了大λ0的SMSR,以鼓励高稀疏性。使用Nvidia RTX 2080Ti、Intel I9-9900K、麒麟990/810作为GPU、CPU和移动处理器平台进行评估。为了公平比较内存消耗和推理时间,不同网络主干中的所有卷积层都使用基于im2col[5]的卷积实现,因为不同的实现方法(如Winograd[23]和FFT[41])具有不同的计算代价。比较结果见表2。
当λ0增加时,SMSR产生更高的稀疏性,并产生更多的FLOPs,从而减少内存消耗。此外,我们的网络还在CPU和移动处理器上实现了显著的加速。由于内存模式的不规则和碎片化,稀疏卷积不能充分利用通用gpu的特性(如内存合并),需要依靠专门的设计来提高内存局部性和缓存命中率,加速[47]。因此,如果没有特定的优化,我们的SMSR的优势就无法在gpu上得到充分利用。与其他最先进的方法相比,我们的SMSR(变体5)在移动处理器上以更低的内存消耗和更短的推断时间获得了更好的性能。这清楚地展示了SMSR在移动设备上应用程序的巨大潜力
稀疏掩模的可视化。我们可视化图6中为2 SR的第一个SMM中生成的稀疏掩模。更多的结果在补充材料中提供。可以看出,在Mspa中,边缘周围的位置和纹理被认为是重要的位置,这与我们在第3节中的观察是一致的。此外,我们可以看到,在深层有比浅层更多的稀疏通道(即Mch中的绿色区域)。这意味着浅层的通道子集对于不重要的区域足够提供信息,我们的网络会随着深度的增加而逐渐关注重要的区域。总的来说,我们的空间掩模和通道掩模共同工作,用于冗余计算的细粒度本地化。
我们进一步研究了不同尺度因子下smm的稀疏度。具体来说,我们将LR图像(2下采样)提供给2=3=4个SMSR网络,并比较它们的smm中的稀疏度。如图7所示,大多数smm的稀疏度随着尺度因子的增大而减小。由于更大的尺度因素需要重建更多的细节,更多的位置被标记为重要的位置(减少稀疏性)
基于学习的面具与启发式面具。由于边缘区域通常被识别为空间掩模中的重要区域(图6),另一个直接的选择是使用启发式掩模。KernelGAN[3]遵循这一思路,在应用ZSSR[38]时将梯度较大的区域识别为重要区域,并使用掩码损失对这些区域进行聚焦。为了证明SMSR中基于学习的掩码的有效性,我们引入了梯度诱导掩码的变体。具体来说,我们考虑梯度大于阈值α的位置作为重要位置,并保持空间掩模在网络内固定。此变体的性能与表3中的SMSR进行了比较。与基于学习的掩模相比,基于梯度掩模的变体在具有相当稀疏性的情况下性能显著下降(例如,33.52 vs. 33.33/33.30)。此外,从图8可以看出,基于学习的掩模有助于SMSR在SR性能和计算效率之间实现更好的权衡。采用固定的启发式掩模,很难获得冗余计算的细粒度定位。相比之下,基于学习的掩模使SMSR能够准确地定位冗余计算,从而产生更好的结果。
5.3. Comparison with State-of-the-art Methods
我们比较了我们的SMSR与9种最先进的方法,包括SRCNN [8], VDSR [19], DRCN [20], LapSRN [22], MemNet [40], SRFBN-S [28], IDN [17], CARN[2]和FALSR-A[6]。由于本文的重点是轻量级SR网络(<2M),一些最近的大型模型(如EDSR [29] (40M), RCAN [50] (15M)和SAN [7] (15M))的工作不包括在比较范围内。定量结果如表4所示Figs. 9 and 10
定量的结果。如表4所示,在大多数数据集上,我们的SMSR优于最先进的方法。例如,对于2个SR,我们的SMSR实现了比CARN更好的性能,参数和FLOPs的数量分别减少了38%和41%。在模型尺寸相当的情况下,我们的SMSR优于FALSR-A,并在FLOPs方面取得了更好的推断效率(131.6G vs. 234.7G)。在FLOPs方面具有相当的计算复杂性(131.6G vs. 127.7G),我们的SMSR实现了比IDN更高的PSNR值。使用稀疏掩码跳过冗余计算,我们的SMSR减少了41%=33%=27%的FLOPs, 2=3=4 SR,同时保持了最先进的性能。在图1中,我们进一步展示了性能、参数数量和FLOPs之间的权衡。我们可以看到,我们的SMSR取得了最佳的PSNR性能和较低的计算成本。
定性的结果。图9比较了在Urban100上获得的定性结果。与其他方法相比,我们的SMSR产生了更好的视觉效果和更少的伪影,比如img 004中的格子和img 033中的建筑条纹。我们进一步在真实世界的图像上测试了SMSR,以证明其有效性。如图10所示,我们的SMSR获得了更好的感知质量,而其他方法存在明显的伪影。
Conclusion
在本文中,我们探索了图像SR中的稀疏性,以提高SR网络的推理效率。具体地说,我们开发了一个稀疏掩模SR网络来减少冗余计算。我们的空间和通道掩码共同工作,在细粒度水平上本地化冗余计算,这样我们的网络可以有效地降低计算成本,同时保持相当的性能。大量的实验证明,我们的网络达到了最先进的性能,显著减少了FLOPs和加速移动设备
论文源码及创新点分析
源码部分一:
作者实现代码如下,在源码中,作者针对通道、空间都进行了使用。
# 作者 tau值为1
def gumbel_softmax(x, dim, tau):
gumbels = torch.rand_like(x)
while bool((gumbels == 0).sum() > 0):
gumbels = torch.rand_like(x)
gumbels = -(-gumbels.log()).log()
gumbels = (x + gumbels) / tau
x = gumbels.softmax(dim)
return x