SMSR-Exploring Sparsity in Image Super-Resolution for Efficient Inference
- 论文地址
- 摘要
- [1. 简介](#1. 简介)
- [2. 相关工作](#2. 相关工作)
- [3. 图像超分辨率中的稀疏性](#3. 图像超分辨率中的稀疏性)
- [4. Our SMSR Network](#4. Our SMSR Network)
-
- [4.1. Sparse Mask Generation](#4.1. Sparse Mask Generation)
- [4.2. 稀疏掩码卷积](#4.2. 稀疏掩码卷积)
- [4.3. 讨论](#4.3. 讨论)
- [5. 实验](#5. 实验)
- [6 结论](#6 结论)
论文地址
1、论文
2、源码
摘要
当前基于 CNN 的超分辨率 (SR) 方法平等地处理所有位置,计算资源在空间中统一分配。然而,由于低分辨率(LR)图像中缺失的细节主要存在于边缘和纹理区域,因此这些平坦区域需要较少的计算资源。因此,现有的基于 CNN 的方法涉及平坦区域的冗余计算,这增加了它们的计算成本并限制了它们在移动设备上的应用。在本文中,我们探索图像 SR 中的稀疏性以提高 SR 网络的推理效率。具体来说,我们开发了一个稀疏掩码 SR (SMSR) 网络来学习稀疏掩码以修剪冗余计算。在我们的 SMSR 中,空间掩码学习识别"重要"区域,而通道掩码学习标记那些"不重要"区域中的冗余通道。因此,可以准确地定位和跳过冗余计算,同时保持相当的性能。结果表明,我们的 SMSR 实现了最先进的性能,×2/3/4 SR 减少了 41%/33%/27% FLOP。代码位于:https:/github.com/LongguangWang/SMSR。
1. 简介
单图像超分辨率(SR)的目标是从单个低分辨率(LR)观测中恢复高分辨率(HR)图像。由于深中网络强大的特征表示和模型拟合能力,基于CNN的SR方法与传统方法相比取得了显著的性能改进。最近,人们在实际应用中做出了许多努力,包括少镜头SR [38, 39],盲SR [12,49,42]和任意比例SR [15,43]。随着智能边缘设备(如智能手机和VR眼镜)的普及,在这些设备上执行SR是高度强制性的。由于边缘设备的资源有限1,高效的SR对于这些设备上的应用至关重要。
自从 SRCNN [8] 的开创性工作以来,更深层的网络已被广泛研究用于图像 SR。在 VDSR [19] 中,SR 网络首先加深到 20 层。然后,在 EDSR [29] 中引入了一个非常深和宽的超过 60 层的架构。后来,张等人。在 RDN [51] 和 RCAN [50] 中进一步将网络深度分别增加到 100 和 400 以上。虽然深度网络通常会提高 SR 性能,但它也会导致高计算成本并限制移动设备上的应用程序。为了解决这个问题,已经做出了一些努力来通过信息蒸馏 [17] 和有效的特征重用 [2] 来减小模型大小。然而,这些网络仍然涉及冗余计算。与 HR 图像相比,其 LR 图像中缺失的细节主要存在于边缘和纹理区域。因此,在这些平坦区域需要较少的计算资源。然而,这些基于 CNN 的 SR 方法平等地处理所有位置,导致平坦区域内的冗余计算。
在本文中,我们探索图像 SR 中的稀疏性以提高 SR 网络的推理效率。我们首先研究图像 SR 任务的固有稀疏性,然后研究现有 SR 网络中的特征稀疏性。为了充分利用稀疏性进行有效推理,我们提出了一个稀疏掩码 SR (SMSR) 网络,以在细粒度级别动态跳过冗余计算。我们的 SMSR 学习空间掩码来识别"重要"区域(例如,边缘和纹理区域),并使用通道掩码来标记那些"不重要"区域中的冗余通道。论文两种掩码共同工作以准确定位冗余计算。在网络训练期间,我们使用 Gumbel softmax 技巧软化这些二进制掩码,使它们可区分。在推理过程中,我们使用稀疏卷积来跳过冗余计算。结果表明,我们的 SMSR 可以有效地定位和修剪冗余计算以实现更高的效率,同时产生有希望的结果(图 1)。
我们的主要贡献可以概括为:
1)我们开发了一个 SMSR 网络来动态跳过冗余有效图像SR的计算。与专注于轻量级网络设计的现有工作相比,我们探索了一条不同的路线,通过修剪冗余计算来提高推理效率。
2)我们建议通过学习空间和通道掩码来定位冗余计算。这两种掩码共同用于冗余计算的细粒度定位。
3)实验结果表明,我们的 SMSR 以更好的推理效率实现了最先进的性能。例如,对于 ×2 SR,我们的 SMSR 在 Set14 上优于之前的方法,在移动设备上具有显着的加速(表 2)。
2. 相关工作
在本节中,我们首先回顾几个基于 CNN 的单图像 SR 的主要工作。然后,我们讨论了与我们工作相关的 CNN 加速技术,包括自适应推理和网络剪枝。
单图像 SR。
基于 CNN 的方法由于其强大的表示和拟合能力而主导了单图像 SR 的研究。董等。 [8] 首先引入了一个三层网络来学习单图像 SR 的 LR-to-HR 映射。然后,在 VDSR [19] 中提出了一个 20 层的深度网络。最近,针对图像 SR 广泛研究了更深的网络。林等。 [29] 通过级联修改后的残差块提出了一个非常深和宽的网络(即 EDSR)。张等。 [51] 进一步结合残差学习和密集连接构建了超过 100 层的 RDN。尽管这些网络实现了最先进的性能,但高计算成本和内存占用限制了它们在移动设备上的应用。具体来说,在 IDN [17] 中提出了用于特征学习的蒸馏块,而在 CARN [2] 中引入了级联机制以鼓励有效的特征重用。与这些手动设计的网络不同,Chu 等人。 [6] 使用神经架构搜索 (NAS) 开发了一个紧凑的架构。最近,李等人。 [24] 引入了一个蒸馏框架来利用强大的教师 SR 网络学到的知识来提高轻量级学生 SR 网络的性能。尽管这些轻量级 SR 网络成功地减小了模型大小,但仍然涉及冗余计算并阻碍它们实现更好的计算效率。与许多专注于紧凑架构设计的现有工作相比,很少有人努力利用 SR 网络中的冗余进行有效推理。
自适应推理。
自适应推理技术 [44、37、36、11、26] 引起了越来越多的兴趣,因为它们可以根据输入调整网络结构。自适应推理技术的一个活跃分支是在层级动态选择推理路径。具体来说,吴等人。 [45] 提出了一种用于 ResNets 的 BlockDrop 方法,以动态丢弃几个残差块以提高效率。 Mullapudi 等人。 [36] 提出了一个具有多个分支的 HydraNet,并使用门控方法在测试时动态选择其中的一组。另一个流行的分支是提前停止技术,只要它被认为是不必要的,它就会跳过某个位置的计算 [46]。在 ResNets 之上,Figurnov 等人。 [9] 提出了一种空间自适应计算时间(SACT)机制,当特征变得"足够好"时停止计算空间位置。刘等人。 [31] 通过生成局部网络深度图来适应在不同位置实现的卷积层的数量,从而为 SR 引入了自适应推理。然而,这些自适应推理方法只关注空间冗余,而没有考虑通道维度的冗余。
网络剪枝。
网络修剪 [13, 32, 33] 被广泛用于删除一组用于网络加速的冗余参数。作为网络剪枝方法的一个流行分支,结构化剪枝方法通常用于在通道级别甚至层级剪枝网络[25,32,33,14]。具体来说,李等人。 [25] 使用 L1 范数来衡量不同过滤器的重要性,然后修剪不太重要的过滤器。刘等人。 [32] 对批量归一化层的缩放因子施加了稀疏性约束,并将具有较低缩放因子的通道识别为信息量较少的通道。与这些静态结构化修剪方法不同,Lin 等人。 [30] 根据输入图像进行运行时神经网络修剪。最近,高等人。 [10] 引入了一种特征增强和抑制方法,可以在推理时动态修剪不重要的通道。然而,这些网络修剪方法平等地对待所有空间位置,而没有考虑它们的不同重要性。
3. 图像超分辨率中的稀疏性
在本节中,我们首先说明单图像SR任务的内在稀疏性,然后研究最先进的SR网络中的特征稀疏性。
给定心率图像 IHR 及其 LR 版本 ILR(例如,×4 下采样),我们使用 Bicubicand RCAN 进行超解析 ILR 以分别获得 ISR 和 ISR。双立方RCANFigure 2显示了亮度通道中ISR、BicubicISR和IHR之间的绝对差异。从图2(b)可以看出,ISR对于平坦"足够好"区域,仅在一小部分区域中明显缺失细节(约17%像素,|《国际卫生条例》−ISR双立方|>0.1)。也就是说,SR 任务在空间域中本质上是稀疏的。与Bicubic相比,RCAN在边缘区域的性能更好,而在平坦区域则实现了相当的性能(图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) 培训阶段
空间掩码。
空间掩码的目标是识别特征图中的"重要"区域(即,0 表示"不重要"区域,1 表示"重要"区域)。为了使二进制空间掩码可学习,我们使用 Gumbel softmax 分布来近似一热分布 [18]。具体来说,输入特征F ∈R C×H×W首先被馈到hourglass模块以产生∈F spa R 2×H×W,如图5(a)所示。然后,使用 Gumbel softmax 技巧获得软化空间掩码 Mspak ∈R H×W :
其中 x, y 是垂直和水平指数,G spak ∈R 2×H×W 是 Gumbel 噪声张量,所有元素都遵循 Gumbel(0, 1) 分布,τ 是温度参数。当τ→ ∞时,来自Gumbel softmax分布的样品变得均匀。也就是说,Mspa k 中的所有元素都是 0.5。当τ→0时,来自Gumbel softmax分布的样本变为一热。也就是说,Mspak 变为二进制。在实践中,我们从高温开始,退火到小温度以获得二进制空间掩码。
通道掩码。
除了空间掩码之外,通道掩码还用于标记这些"不重要"区域中的冗余通道(即,0 表示冗余通道,1 表示保留通道)。在这里,我们还使用 Gumbel softmax 技巧来生成二进制通道掩码。对于第 k 个 SMM 中的第 L 个卷积层,我们将辅助参数 Sk,l ∈ R 2×C 馈送到 Gumbel softmax 层以生成软化通道掩码 Mch k,l ∈ RxC
其中c是通道指数,Gch k,l ∈ R 2×C是冈贝尔噪声张量。在我们的实验中,Sk,l 使用从高斯分布 N(0, 1) 中提取的随机值进行初始化。
稀疏性正则化。
基于空间和通道掩码,我们定义了一个稀疏性项 ηk,l:
其中 I ∈ R H×W 是具有所有 1 的张量。请注意,ηk,l 表示输出特征图中激活位置的比率。为了鼓励输出特征更加稀疏,激活的位置更少,我们进一步引入了稀疏正则化损失:
其中 K 是 SMM 的数量,L 是每个 SMM 中稀疏掩码卷积层的数量。
培训策略。
在训练阶段,Gumbel softmax层中的温度参数τ使用时间表τ = max(0.4, 1−t/Ttemp)退火,其中t是epoch数,在我们的实验中,Ttemp根据经验设置为500。随着τ逐渐减小,Gumbel softmax分布被迫接近单热分布生成二进制空间和通道掩码。
2) 推理阶段
在训练过程中,随着 τ 的减小,Gumbel softmax 分布被迫接近单热分布。因此,我们在训练后将 Gumbel softmax 层替换为 argmax 层,以获得二进制空间和通道掩码,如图 5(c) 所示。
4.2. 稀疏掩码卷积
1) 培训阶段
为了在所有位置实现梯度的反向传播,我们不会在训练期间显式执行稀疏卷积。相反,我们将原版"密集"卷积的结果与预测的空间和通道掩码相乘,如图 5(b) 所示。具体来说,输入特征F首先乘以Mchk,l−1和(1−Mchk,l−1),分别得到FD和FS。也就是说,在 F 中具有"密集"和"稀疏"特征映射的通道是分开的。接下来,FD 和 FS 被传递给两个具有共享权重的卷积。然后将所得特征与(1−Mchk,l),Mchk,l和Mspak的不同组合相乘,以激活特征的不同部分。最后,将所有这些特征相加以生成输出特征 Fout。由于在掩模生成中使用的 Gumbel softmax 技巧,可以保留所有位置的梯度以优化卷积层的核权重
2) 推理阶段
在推理阶段,基于预测的空间和通道掩码执行稀疏卷积,如图5(d)所示。以第 k 个 SMM 中的第 l 层为例,首先根据 Mch k,l−1 和 Mch k,l 将其内核拆分为四个子内核,得到四个卷积。同时,基于Mch k,l−1将输入特征F分解为FD和FS。然后,FD 被馈送到卷积 ➀ 和 ➁ 以产生 FD2D 和 FD2S,而 FS 被馈送到卷积 ➂ 和 ➃ 以产生 FS2D 和 FS2S。请注意,FD2D 是由普通的"密集"卷积生成的,而 FD2S、FS2D 和 FS2S 是由稀疏卷积生成的,只计算"重要"区域(由 Mspa k 标记)。最后,将从这四个分支获得的特征相加并连接以生成输出特征 Fout。使用稀疏掩码卷积,可以跳过这些"不重要"区域内冗余通道的计算以实现高效推理。
4.3. 讨论
与最近许多使用轻量级网络设计[17,2,6]或知识蒸馏[24]来实现高效SR的工作不同,我们通过修剪冗余计算来加速SR网络。以前的自适应推理和网络修剪方法专注于空间和通道维度的冗余计算。直接应用这些方法无法充分利用SR网络中的冗余,并且性能会显着下降,如第5.2节所示。相比之下,我们的 SMSR 提供了一个统一的框架来考虑空间和通道维度的冗余。结果表明,我们的空间和信道掩码具有良好的兼容性,有助于SMSR获得冗余计算的细粒度定位
5. 实验
5.1.实施细节
我们使用来自DIV2K数据集[1]的800张训练图像和100张验证图像作为训练和验证集。为了进行评估,我们使用了五个基准数据集,包括Set5 [4],Set14 [48],B100 [34],Urban100 [16]和Manga109 [35]。峰值信噪比(PSNR)和结构相似性指数(SSIM)被用作衡量SR性能的评估指标。按照 [50, 51] 中的评估协议,我们裁剪了边框并计算了亮度通道中的指标。
在训练过程中,随机裁剪了16个大小为96×96的LR斑块及其相应的HR斑块。然后通过随机旋转和翻转进行数据增强。我们为SMSR设置C = 64,L = 4,K = 5。我们使用 Adam 方法 [21] 进行优化,其中 β1 = 0.9 和 β2 = 0.999。初始学习率设置为2×10-4,每200个epoch后降低到一半。训练在 1000 个时代后停止。训练的总损失定义为L = LSR + λLreg,其中LSR是SR结果和HR图像之间的L1损失,Lreg在方程4中定义。为了保持训练稳定性,我们使用了预热策略 λ = λ0 × min( t Twarm, 1),其中 t 是周期数,Twarm 根据经验设置为 50,λ0 设置为 0.1。
5.2.模型分析
我们首先进行实验来证明稀疏掩码的有效性。然后,我们调查的影响稀疏性和可视化稀疏掩码以供讨论。最后,我们将基于学习的掩码与启发式掩码进行比较。
稀疏掩码的有效性。
为了证明我们的稀疏掩码的有效性,我们首先通过删除空间和通道掩码来引入变体 1。然后,我们通过分别添加通道掩码和空间掩码来开发变体 2 和 3。比较结果如表1所示。在没有空间和通道掩码的情况下,所有位置和所有通道都被平等地处理。因此,变体 1 的计算成本很高。使用通道掩码,在所有空间位置修剪冗余通道。因此,变体 2 可以被视为变体 1 的修剪版本。虽然变体 2 具有更少的参数和 FLOP,但它的性能显着下降(33.53 对 33.65),因为这些修剪通道的"重要"区域中的有益信息被丢弃.仅使用空间掩码,变体 3 在效率和性能之间存在冲突,因为无法很好地处理通道维度中的冗余计算。因此,它的 FLOPs 随着性能下降而减少(33.60 对 33.65)。使用空间和通道掩码,我们的 SMSR 可以在更细粒度的级别上有效地定位和跳过冗余计算,以将 FLOP 减少 39%,同时保持可比的性能(33.64 与 33.65)。
稀疏性的影响。
为了研究稀疏性的影响,我们用大 λ0 重新训练我们的 SMSR 以鼓励高稀疏性。 Nvidia RTX 2080Ti、Intel I9-9900K和Kirin 990/810分别作为GPU、CPU和移动处理器平台进行评测。为了公平比较内存消耗和推理时间,不同网络主干中的所有卷积层均使用 im2col [5] 实现基于卷积,因为不同的实现方法(例如,Winograd [23] 和 FFT [41])具有不同的计算成本。比较结果如表 2 所示。
随着 λ0 的增加,我们的 SMSR 产生更高的稀疏性,更多的 FLOP 和减少的内存消耗。此外,我们的网络还在 CPU 和移动处理器上实现了显着的加速。由于不规则和碎片化的内存模式,稀疏卷积无法充分利用通用 GPU 的特性(例如内存合并),而是依赖专门设计来提高内存局部性和缓存命中率以实现加速 [47]。因此,如果不进行特定的优化,我们的 SMSR 的优势就无法在 GPU 上得到充分发挥。与其他最先进的方法相比,我们的 SMSR(变体 5)在移动处理器上以更低的内存消耗和更短的推理时间获得了更好的性能。这清楚地展示了我们的 SMSR 在移动设备上应用的巨大潜力。
Visualization of Sparse Masks.
我们在图 2 中可视化了在第一个 SMM 中为 ×2 SR 生成的稀疏掩码。 6. 补充材料中提供了更多结果。可以看出,Mspa 中边缘和纹理周围的位置被认为是"重要"的,这与我们在第 2 节中的观察结果一致。 3. 此外,我们可以看到深层的稀疏通道(即 M ch 中的绿色区域)比浅层多。这意味着浅层中的一部分通道对于"不重要"的区域来说足够有用,并且随着深度的增加,我们的网络逐渐更加关注"重要"区域。总的来说,我们的空间和通道掩码共同作用于冗余计算的细粒度定位。
我们进一步研究了我们的SMM在不同比例因子下实现的稀疏性。具体来说,我们将LR图像(×2下采样)馈送到×2/3/4 SMSR网络,并比较其SMM中的稀疏性。如图7所示,在大多数SMM中,对于较大比例因子,稀疏性会降低。由于需要为更大的比例因子重建更多细节,因此更多的位置被标记为"重要"位置(稀疏性减少)。
基于学习的掩码与启发式掩码。
由于边缘区域通常被识别为空间掩码中的重要区域(图 6),因此另一个直接的选择是使用启发式掩码。KernelGAN [3] 遵循这一想法,在应用 ZSSR [38] 时将梯度较大的区域标识为重要区域,并使用屏蔽损失来关注这些区域。展示基于学习的有效性在我们的 SMSR 掩码中,我们引入了一个带有梯度诱导掩码的变体。具体来说,我们将梯度大于阈值 α 的位置视为重要位置,并在网络中保持空间掩码固定。表 3 将此变体的性能与我们的 SMSR 进行了比较。与基于学习的掩码相比,具有基于梯度的掩码的变体在具有可比稀疏性的情况下性能显着下降(例如,33.52 与 33.33/33.30) .此外,我们可以从图 8 中看到,基于学习的掩码有助于我们的 SMSR 在 SR 性能和计算效率之间实现更好的权衡。使用固定的启发式掩码,很难获得冗余计算的细粒度定位。相比之下,基于学习的掩码使我们的 SMSR 能够准确定位冗余计算以产生更好的结果。
5.3 与最先进方法的比较
我们将我们的 SMSR 与九种最先进的方法进行了比较,包括 SRCNN [8]、VDSR [19]、DRCN [20]、Lap-SRN [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 和可视化重新
定量结果。
如表 4 所示,我们的 SMSR 在大多数数据集上优于最先进的方法。例如,对于 ×2 SR,我们的 SMSR 实现了比 CARN 更好的性能,参数和 FLOPs 的数量分别减少了 38% 和 41%。在模型大小相当的情况下,我们的 SMSR 比 FALSR-A 表现更好,并且在 FLOPs 方面实现了更好的推理效率(131.6G 与 234.7G)。凭借在 FLOP 方面相当的计算复杂性(131.6G 与 127.7G),我们的 SMSR 实现了比 IDN 高得多的 PSNR 值。使用稀疏掩码跳过冗余计算,我们的 SMSR 为 ×2/3/4 SR 减少了 41%/33%/27% FLOPs,同时保持了最先进的性能。我们在图 1 中进一步展示了性能、参数数量和 FLOP 之间的权衡。我们可以看到我们的 SMSR 以低计算成本实现了最佳 PSNR 性能。
定性结果。
图 9 比较了 Urban100 上取得的定性结果。与其他方法相比,我们的 SMSR 产生了更好的视觉效果和更少的伪影,例如 img 004 中的格子和 img 033 中建筑物上的条纹。我们进一步在真实世界的图像上测试了我们的 SMSR 以证明其有效性。如图 10 所示,我们的 SMSR 实现了更好的感知质量,而其他方法则遭受了明显的伪影。
6 结论
在本文中,我们探索图像 SR 中的稀疏性以提高 SR 网络的推理效率。具体来说,我们开发了一个稀疏掩码 SR 网络来修剪冗余计算。我们的空间和通道掩码共同工作,以在细粒度级别定位冗余计算,使我们的网络可以有效降低计算成本,同时保持可比的性能。广泛的实验表明,我们的网络实现了最先进的性能,显着减少了 FLOPs 并提高了移动设备的速度。