C/C++教程

ClassSR: A General Framework to Accelerate Super-Resolution Networks by Data Characteristic

本文主要是介绍ClassSR: A General Framework to Accelerate Super-Resolution Networks by Data Characteristic,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

论文阅读:个人记录用,不建议参考(ClassSR: A General Framework to Accelerate Super-Resolution Networks by Data Characteristic)

  • 一、论文翻译
    • 摘要
    • 1、介绍
    • 2、相关工作
    • 3、方法
    • 4、实验
    • 5、致谢
  • 二、个人理解
  • 三、项目复现

一、论文翻译

  (自己翻译的不一定准确,不要信我的翻译,在这上面不会打公式,需要翻译PDF或者WORD文档的可以给我留言)

摘要

我们的目标是在大图像(2K-8K)上加速超分辨率(SR)网络。在实际使用中,通常将大图像分解为小的子图像。基于此处理,我们发现不同的图像区域具有不同的复原难度,并且可以由具有不同容量的网络进行处理。直观的说,平滑区域比复杂纹理更容易复原。为了利用此特性,我们可以采用适当的SR网络来处理分解后的不同子图像。在此基础上,我们提出了一个新的解决方案pipeline-ClassSR,它将分类和SR结合在一个统一的框架中。特别地,它首先使用分类模块根据复原困难程度将子图像分类为不同的类别,然后应用SR模块对不同的类别执行SR。分类模块是传统的分类网络,而SR模块是由待加速SR网络及其简化版本组成的网络容器。我们进一步介绍了一种新的分类方法,该方法具有两种损失-类别损失和平均损失,来产生分类结果。经过联合训练,大部分子图像将通过较小的网络,因此可以显着降低计算成本。实验表明,我们的ClassSR可以帮助大多数现有方法(FSRCNN,CARN,SRResNet,RCAN)在DIV8K数据集上节省多达50%的运算量。该通用框架也可以应用于其他低级视觉任务。

1、介绍

图像超分辨率(SR)是一个长期研究的课题,旨在从输入的低分辨率图像生成高分辨率的具有更多信息的图像。在本文中,我们研究了如何在“大”输入图像上加速SR算法,这些图像将被上采样到至少2K分辨率(2048×1080)。在现实世界中,智能手机和电视显示器的图像以及视频分辨率已经达到4K(4096×2160),甚至达到了8K(7680×4320)。由于最新的SR方法建立在CNN上,因此内存和计算量将随着输入大小成二次方增长,因此有必要将输入图像分解为子图像,并且不断加速SR算法以满足实时图像实现的要求。
图1. ClassSR-FSRCNN 的SR结果(x4)。Class模块将图像“0896” (DIV2K)分为56%的简单子图像、20% 的中等子图像和 24% 的复杂子图像。与 FSRCNN 相比,ClassSR - FSRCNN 仅使用 55% 的 FLOP 即可达到相同的性能

关于SR加速的最新工作侧重于提出的轻型网络架构,例如从早期的FSRCNN到最新的CARN,详细内容见第二节。我们从不同的角度处理这个问题。我们没有设计更快的模型,而是提出了一种新的处理管道,可以加速大多数 SR方法。最重要的是,我们发现不同的图像区域需要不同的网络复杂性(见第 3.1 节)。例如平滑区域(例如天空、陆地)自然比纹理(例如头发、羽毛)更容易处理。这表明如果我们可以使用较小的网络来处理较不复杂的图像区域,计算成本将显著降低。根据这一观察,我们可以对分解后的不同内容采用不同的网络。

子图像分解对于大型图像尤其有利。首先,更多区域的恢复相对简单。根据我们的统计,对于DIV8K数据集,约 60%的LR子图像(32×32)属于平滑区域,而对于DIV2K数据集,这一比例下降到 30%。因此,对于大型图像,加速比会更高。其次,子图像分解有助于在实际应用中节省内存空间,并且对于低内存处理芯片至关重要。将子图像分发到并行处理器以进一步加速也是合理的。

为了解决上述问题并加速现有的SR方法,我们提出了一种新的解决方案管道,即ClassSR,以同时执行分类和超分辨率。该框架由两个模块组成——分类模块和SR模块。类别模块是一个简单的分类网络,根据恢复难度将输入分类为特定类别,而SR模块是一个网络容器,使用相应类别的SR网络处理分类输入。它们相互联系,需要共同训练。新颖之处在于分类方法和训练策略。具体来说,我们引入了两个新的损失来约束分类结果。第一种是分类损失,它希望单个子图像选择更高概率的类。另一个是平均损失,它确保了总体分类结果不会偏向于单个类别。这两种损失协同工作,使得分类有意义且分布均匀。为了保证重建性能,还增加了图像损失。对于训练策略,我们首先对图像损失的SR模块进行预训练。然后我们更新SR模块,并在所有三个损失的情况下优化分类模块。最后,我们同时优化这两个模块,直到收敛。该管道对于不同的SR网络是通用和有效的。

图 2. ClassSR 和原始网络在 Test8K 上的 PSNR 和 FLOPs 比较,×4
实验在具有代表性的不同规模的SR网络上进行—FSRCNN(微小)、CARN(小)、SRResNet(中)和RCAN(大)。如图 2 所示,ClassSR方法可以帮助这些SR网络在DIV8K 数据集上分别节省50%、47%、48% 和50%的计算成本。

图1中显示了一个示例,其中平滑区域(浅绿色)用简单网络处理,纹理(红色)用复杂网络处理。我们还对不同网络设置的选择进行了详细的研究。
总的来说,我们的贡献有三个方面:(1)我们提出了ClassSR。这是第一个SR管道,在子图像级别将分类和超分辨率结合在一起。(2)我们利用数据的特性来处理加速问题。它使ClassSR与其他加速网络正交。压缩到极限的网络仍然可以通过ClassSR进行加速。(3)我们提出了一种具有两种新损失的分类方法。它根据子图像的恢复难度进行划分,子图像由特定的分支而不是预先确定的标签进行处理,因此它也可以直接应用于其他低级视觉任务。

2、相关工作

2.1.用于图像超分辨率的CNNs

自从SRCNN首次将卷积神经网络(CNN)引入SR任务以来,人们开发了许多深层神经网络来改善重建结果。例如VDSR使用非常深的网络来学习图像残差。SRResNet引入ResBlock进一步扩展网络规模。EDSR从SRResNet中删除一些冗余层来改进结果。RDN和RRDB采用密集连接,以利用来自前几层的信息。此外RCAN、SAN和RFA探索了注意力机制,以设计更深层次的网络并不断更新最新技术。然而昂贵的计算成本限制了它们的实际应用。

2.2.轻型SR网络

为了减少计算量,人们提出了许多加速方法。FSRCNN和ESPCN使用LR图像作为输入,并在网络末端放大特征图。LapSRN引入了一个深层次的拉普拉斯金字塔网络,该网络逐渐放大特征图。CARN使用组卷积设计了一个级联残差网络用于快速处理。IMDN通过拆分操作提取层次特征,然后将其聚合以节省计算。PAN采用像素注意力来获得有效的网络。

所有这些方法都旨在设计一个具有可接受重建性能的相对轻量级网络。相比之下,我们的ClassSR是一个通用框架,可以加速大多数现有的SR方法,即使是从小型网络到大型网络。
图 3. 来自 DIV2K 验证集的子图像的排序 PSNR 曲线和三个类别的可视化。
表 1. ClassSR FSRCNN 的三个 SR 分支以 ×4 获得的 PSNR 值。 他们分别用“简单、中等、困难”的训练数据进行训练,并在相应的验证数据上进行测试。 -O:用所有数据训练的原始网络。
2.3.区域感知图像恢复

最近,研究者开始用不同的处理策略处理不同的图像区域。RAISR将图像块划分为簇,并为每个簇构造适当的过滤器。它还使用一种高效的哈希方法来降低聚类算法的复杂性。SFTGAN引入了一种新的空间特征变换层结合高级语义先验,这是一种隐式处理具有不同参数的不同区域的方法RL Restore和PathRestore将图像分解为子图像,并通过强化学习估计适当的处理路径。与之不同的是,我们提出了一种新的分类方法来确定每个区域的处理。

3、方法

3.1. 观察

我们首先说明我们对不同类型子图像的观察。具体而言,我们研究了 DIV2K 验证数据集中32×32 LR子图像的统计特征。为了评估它们的恢复难度,我们将所有子图像通过 MSRResNet,并根据它们的 PSNR 值(峰值信噪比)对这些子图像进行排序。如图 3 所示,我们以蓝色曲线显示这些值,并将它们分为三类具有相同数量的子图像——“简单、中等、 复杂”。观察到具有高 PSNR 值的子图像通常是平滑的,而具有低 PSNR 值的子图像包含复杂的纹理。

然后我们采用不同的网络对不同类型的子图像进行处理。如表 1 所示,我们使用三种 FSRCNN 模型,它们在第一个转录层和最后一个解压层具有相同的网络结构,但信道数不同(即 16、36、56)。它们分别使用训练数据集中的“简单、中等、复杂”子图像进行训练。从表 1 中,我们可以发现,在“简单”子图像上,FSRCNN(16)和FSRCNN-O(56)几乎没有区别,而在“中等”子图像上,FSRCNN(36)可以实现与 FSRCNN-O(56)大致相同的性能。这表明我们可以使用轻量级网络来处理简单的子图像,以节省计算成本。这就是为什么我们提出了下面的 ClassSR 方法,它可以对不同的图像区域进行不同的处理,并加速现有的 SR 方法。

3.2. ClassSR 概述

如图 4 所示吗,ClassSR 是一种新的单图像 SR 解决方案管道。它由两个模块组成–-Class 模块和 SR 模块。Class模块将输入图像分类为M个类,而 SR 模块包含M分支(SR网络)处理不同的输入。具体来说,大输入 LR 图像 X 首先被分解为重叠的子图像。Class模块接受每个子图像并生成概率向量[P_1 (x_i ),…,P_M (x_i )]。然后我们通过选择最大概率值的索引来确定要使用哪个 SR 网络。然后将由 SR 模块的第 J个分支处理,最后我们结合所有输出子图像得到最终的大 SR 图像 Y(2K-8K)。

3.3. Class模块

Class模块的目标是通过底层特征判断输入子图像是否容易重建。如图 4 所示,我们将类模块设计为一个简单的分类网络,它包含五个卷积层、一个平均池化层和一个全连接层。卷积层负责特征提取,而池化层和全连接层输出概率向量。这个网络非常轻量级,并且几乎不会带来额外的计算成本。实验表明,这样一种简单的结构已经可以达到令人满意的分类效果。
图 4. 当类数 M = 3 时,所提出的 ClassSR 的概述。 Class-Module:旨在生成概率向量,SR-Module:旨在处理相应的子图像。
3.4. SR 模块

SR 模块被设计为一个由多个独立分支组成的容器。一般来说,每个分支可以是任何基于学习的 SR 网络。由于我们的目标是加速现有 SR 方法(例如,FSRCNN、CARN),因此我们采用该 SR 网络作为基础网络,并将其设置为最复杂的分支。其他分支是通过降低网络复杂度得到的。为了简单起见,我们使用每个卷积层中的通道数来控制网络复杂性。那么每个 SR 分支需要多少个通道?其原则是,分支网络应获得与使用相应类中的所有数据训练的基础网络相同的结果。例如(见表 1和图 4 所示),SR1,SR2,SR3的信道数可以是 16、36、56,其中 56 是基本网络的信道数。请注意,只要网络性能满足上述原则,我们还可以通过其他方式降低网络复杂性,如减少层数(见第 4.3.4 节)。

3.5分类方法

在训练期间,类模块根据子图像在特定分支上的恢复难度而不是预定标签对子图像进行分类。因此与测试不同,输入子图像x应通过所有 M个SR 分支。此外,为了确保Class模块能够接受来自重建结果的梯度传播,我们将重建子图像和相应的分类概率相乘,以生成最终 SR 输出y:
在这里插入图片描述

我们只需使用图像损失(L1 Loss)对y进行约束,就可以自动获得分类概率。但在测试期间,输入仅以最大概率通过SR分支。因此我们建议Lc(类别损失,见第3.6.1节)使最大概率接近1,并y将等于概率为1的子图像。注意, 如果我们只采用图像损失和分类损失,训练将很容易收敛到一个极值点,在这个极值点上,所有图像都被划分为最复杂的分支。为了避免这种有偏差的结果,我们设计了La(平均损失,见第 3.6.2 节)约束分类结果。这是我们提出的新分类方法。

3.6. 损失函数

损失函数由三个损失组成——一个常用L1损失(图像损失)和我们提出的两个损失Lc(类别损失)和La(平均损失)。具体来说,L1用于保证图像重建质量,Lc提高分类的有效性,La确保每个 SR 分支可以被平等地选择。损失函数如下所 示:
在这里插入图片描述

其中 w1、w2 和 w3 是平衡不同损失项的权重。L1是输出图像和实际图像之间的L 1-范数距离,就像之前的工作一样,下面详细介绍了Lc和La这两项新的损失。

3.6.1 分类损失

如第3.5节所述。分类损失约束分类模型的输出概率分布。我们更希望分类模块在具有最大概率的类中具有比其他模块高得多的置信度。例如,分类结果[0.90,0.05,0.05]优于[0.34,0.33,0.33],因为后者更像是是随机选择。类别损失公式如 下:
在这里插入图片描述

其中M是类别数量。Lc是同一子图像的每个类概率之间距离和的负数。这种损失会大大扩大不同分类结果之间的概率差距,使最大概率值接近 1。

3.6.2 平均损失

如第3.5节所述。如果我们只采用图像损失和分类损失,子图像容易被分配到最复杂的分支。这是因为最复杂的SR网络很容易得到更好的结果。然后分类模块将失去其功能并且SR 模块将退化为基本网络。为了避免这种情况,我们应该确保每个 SR 分支机构都有平等的机会被选择。因此,我们设计了平均损失来约束分类结果。其表述如下: ,
在这里插入图片描述

其中B是批量大小。这个La是批次内每个类的平均数量(B/M )与子图像数量之间的距离之和。我们使用概率和来计算子图像数,因为统计数不传播梯度。在这种损失下,在训练期间通过每个 SR 分支的子图像数量将大致相同。

3.7. 训练策略

我们建议通过三个步骤来训练 ClassSR:首先,预训练 SR 模块,然后训练 Class模块,并使用建议的三个损失固定 SR 模块,最后联合微调所有网络。这是因为如果我们从头开始训练 Class 模块和 SR 模块,性能将非常不稳定,并且分类很容易陷入一个糟糕的局部极小值。

为了预训练 SR 模块,我们使用被PSNR 值分类的数据。具体来说,所有子图像都通过训练好的 MSRResNet 传递。 然后根据这些子图像的 PSNR 值对其进行排序。接下来,前 1/3 子图像被分配给复杂类别,而最后 1/3 子图像属于简单类,就像在3.1节中的一样。然后,我们在相应的简单/中等/复杂数据上训练简单/中等/复杂 SR 分支。虽然使用 MSRResNet 获得的 PSNR 来估计不同 SR 分支的恢复难度并不完美,但它可以为 SR 分支提供一个良好的起点。

然后,我们添加了Class模块并固定了 SR 模块的参数。使用所有数据的三个损失对整个模型进行训练。如图 6(a) 和图 6(b)所示,此过程可以为分类模块提供初级分类能力。然后,我们放宽所有参数,对整个模型进行微调。在联合训练过程中,Class模块根据最终的 SR 结果细化其输出概率向量,SR 模块根据新的分类结果进行更新。在实验中(见图 6),我们可以发现子图像被分配到不同的 SR 分支, 同时性能和效率也得到了提高。

3.8. 讨论

我们进一步阐明 ClassSR 的独特特性如下。1) ClassSR 采用的 分类+SR 策略具有重要的实用价值。这是基于观察到大图像 SR(2K-8K)与小图像 SR 具有不同的特征(例如,相同内容覆盖更多像素),因此更适合于子图像分解和特殊处理。2) 虽然分治的思想很简单,但我们方法的新颖之处在于分类和超分辨率的联合优化。有了统一的框架,我们可以通过一个专门的联合损失同时约束分类和重建结果。3) ClassSR 可以与以前的双加速方法一起使用。

4、实验

4.1. 背景
4.1.1 训练数据

我们使用 DIV2K数据集进行训练。为了准备训练数据,我们首先使用比例因子 0.6、0.7、0.8、0.9 对原始图像进行降采样,以生成 HR 图像。这些图像进一步下采样 4 次以获得 LR 图像。然后我们从 LR 图像中密集裁剪出大小为 32×32 的 1.59M 子图像。这些子图像根据它们的 PSNR 值通过MSRResNet平均分为三类(每类 0.53M)。所有子图像通过翻转和旋转进一步增强。最后,我们获得了 SR预训练的“简单、中等、复杂”数据集。此外,我们还从 DIV2K 验证集中选择了 10 幅图像(索引 0801-0810)在训练期间进行验证。

4.1.2 测试数据

我们从 DIV8K数据集中选择了 300 幅图像(索引 1201-1500),而不是常用的 SR 测试集,如 Set5和 Set14,因为它们的图像太小,无法分解。具体地说,前 200 幅图像分别降采样到 2K 和 4K 分辨率,用作 Test2K 和 Test4K 数据集的 HR 图像。最后一百个图像构成 Test8K 数据集。基于 HR 图像,通过 4×4 下采样获得了 LR 图像。在测试过程中,LR 图像被裁剪成 32×32 子图像,步幅为 28。通过平均重叠区域将超分辨率子图像组合为 SR 图像。我们使用 SR 和 HR 图像之间的 PSNR 值来评估重建性能,并计算测试集中所有 32×32 子图像的平均 运算量 来评估计算成本。
图 5. ClassSR 和原始网络在具有 ×4 超分辨率的 4K 图像上的视觉结果。 右边的图像是 200×200,包含分解边界。(超分辨率子图像的大小是 128×128。) -O:原始网络
表 2. Test2K、Test4K 和 Test8K 上的 PSNR 值。 -O:原始网络。 红色/蓝色文本:最佳性能/最低 FLOP。

4.1.3 训练细节
首先,我们对 SR 模块进行预训练。SR1,SR2,SR3分别根据不同的训练数据进行训练(“简单、中等、复杂”)。最小批量大小设置为 16。L1损失函数采用 Adam 优化器(β1=0.9,β2=0.999)。采用余弦退火学习策略调整学习速率。初始学习速率设置为e3,最小值设置为 e7,余弦周期为 500k 次迭代。然后,我们对所有数据使用三个损失(w1,w2,w3权重设置为 2000、1、6)训练Class模块。请注意,我们使用更大的批大小(96),因为平均损失需要平衡每个批中的子图像数量。其他设置与训练前相同。Class模块在 200k 次迭代中进行训练。最后,我们在所有设置不变的情况下联合训练两个模块。此外,我们还使用比 ClassSR 更多的迭代次数来训练原始网络,以便进行公平比较。所有模型均基于 PyTorch 框架构建,并使用 NVIDIA 2080Ti GPU 进行训练。

4.2. 现有 SR 网络的 ClassSR

ClassSR 是一个通用框架,它可以包含大多数基于深度学习的SR 方法,而不管网络结构如何。因此我们不会将 ClassSR 与其他网络加速策略进行比较,因为 ClassSR 还可以进一步加速它们。因此为了证明其有效性,我们使用 ClassSR 来加速不同网络规模的代表性网络 FSRCNN(微型)、CARN(小型)·、SRResNet(中型)和 RCAN (大型)。它们的 SR 模块都包含三个分支。最复杂的分支f_SR^3是原始网络,而其他分支是通过减少每个卷积层中的信道而获得的。具体而言,三个分支的信道配置分别为(16、36、56)用于 FSRCNN,(36、52、64)用于 CARN,(36、52、64)用于 SRResNet,以及(36、50、64)用于 RCAN。训练和测试遵循与上述相同的程序。

结果汇总在表 2 中。显然大多数 ClassSR 方法可以获得比原始网络更好的性能,并且计算成本较低,从 70%到 50%不等。FLOP的减少与测试数据的图像分辨率高度相关。Test8K 上的加速度是最显著的,几乎是所有方法的 2 倍(50%的FLOP)。这是因为较大的输入图像可以分解为更多的子图像,这些子图像被简单分支处理的概率更高。

为了进一步了解 ClassSR 的工作原理,我们使用 ClassSR – FSRCNN 来说明不同训练阶段的行为和中间结果。首先让我们看看 SR 模块预训练的性能。如表 1 所示,相应验证集中 SR 分支的结果与原始网络大致相同。这与我们在3.1节的观察一致。然后我们在图 6 中展示了训练Class模块和联合训练的验证曲线。我们可以看到,即使在Class模块的训练过程中,PSNR 值也会随着FLOP次数的减少而增加。这表明性能的提高并不是以计算负担为代价的。换 句话说,在训练过程中,输入图像被分类为更合适的分支,这证明了两种训练过程的有效性。训练后,我们在 Test8K 上测试 ClassSR – FSRCNN。统计上,61%、23%、16%的子图像分别分配给 FSRCNN(16)、FSRCNN(36)、 FSRCNN(56)。整体FLOP从 468 M下降到 236 M。这进一步反映了分类的有效性。

图 5 显示了一个可视示例,其中我们观察到 ClassSR 方法可以获得与原始网络相同的可视效果。此外,不同区域之间的过渡平滑自然。换言之,对不同区域进行不同处理将不会在相邻子图像之间带来不相干。
在测试过程中的复杂性分析,首先,我们使用一个测试集中所有 32×32 子图像的平均FLOP次数来评估运行时间,因为 FLOP 与设备无关,并且为大多数研究人员和工程师所熟知。FLOP已经包括 Class模型的成本,仅为 8M,几乎可以忽略整个模型的成本。其次,我们需要澄清 ClassSR 的目的是保存FLOP而不是参数。前者可以表示实时运行时间,而后者主要影响内存。请注意模型参数带来的内存开销远小于保存中间特征,因此 ClassSR 带来的增加的参数是可以接受的。
图6 ClassSR-FSRCNN的Class-Module(Class)和联合训练(Joint)的训练曲线。
4.3. 消融研究
4.3.1 Class损失的影响

在消融研究中,我们使用 ClassSR – FSRCNN 测试了不同组件和设置的效果。首先我们通过从损失函数(w_2=0)中删除所提出的Class损失来测试其影响。图 7 显示了训练期间的 PSNR 和 FLOP曲线。如果没有Class损失,两条曲线都无法收敛。这是因为在平均损失的影响下,Class模块的输出概率向量都变为[0.333,0.333,0.333]。换句话说,输入图像被随机分配到 SR 分支,导致性能不稳定。这说明了Class损失的重要性。
图 7. Class-Module 的 Class-Module 训练曲线比较,有/没有 Class-Loss for ClassSR-FSRCNN。
4.3.2 平均损失的影响
然后,我们通过从损失函数(w_3=0)中删除平均损失来评估其影响。从图 8 中,我们可以看到,PSNR 和 FLOPs从一开始就停止变化。原因是所有输入图像都分配给最复杂的分支,这对于优化来说是一个不好的局部最小值。平均损失被提出为了避免分类结果的偏差。

4.3.3类别数量的影响

我们还研究了类别的数量的影响,也就是 SR 分支的数量。我们对2、3、4、5类别进行试验。为了预训练SR分支,我们还使用与4.1.1节相同的等分策略将训练数据划分为不同数量的类。相应地,我们为不同的设置设置了不同的通道号,如表 3 所示。从结果中我们可以观察到更多的类别将带来更好的表现。然而,这些差异是微不足道的。即使是两类情况也取得了令人满意的结果。这表明 ClassSR 对于类的数量是健壮的。
表 3. ClassSR 获得的 PSNR。 ClassSR-FSRCNN(2) (16, 56):ClassSR 有 2 个分支。 f_SR^1 有 16 个通道,f_SR^2 有 56 个通道。
表 4. ClassSR 在 Test2K、Test4K 和 Test8K 上使用不同层和通道获得的 PSNR 值。 ClassSR-SRResNet (38 12,54 14, 64 16):f_SR1有42个通道12层,f_SR2有54个通道14层,f_SR^3有64个通道16层。
图 8. Class-Module 的训练曲线比较,有/没有平均损失的 ClassSR-FSRCNN。
4.3.4 以其他方式控制网络复杂性

如第3.4节所述。我们通过同时改变通道和层的数量来获得具有不同网络复杂度的分支网络。如表 4 所示,我们可以获得与表 2 中减少通道类似的性能。我们不只是减少层数的原因是,在轻型网络中,中间层带来的FLOP只占总FLOP的一小部分(FSRCNN 为 3%,CARN 为 58%,SRResNet 为 47%)。换句话说,即使移除所有中间层,也只能减少很少的FLOP。因此针对不同的基本网络,选择合适的方式来降低网络复杂度是非常必要的。

4.4. 其他低级任务中的 ClassSR

为了证明我们提出的 ClassSR 是灵活的,并且可以很容易的应用于处理不同区域具有不同恢复困难的其他低视力任务,我们进行了图像去噪实验。我们使用具有不同通道(38、52、64)的 DnCNN 作为去噪模块来代替 SR 模块。 然后,我们按照上述训练设置在 Div2K 上训练网络。
如表 5 所示,我们在相同噪声水平下对 Test2K 和 Test4K 上的网络进行评估。采用 ClassSR 框架的 DnCNN 可以获得比原 DnCNN 更高的PSNR,而且计算量较低。与 SR 任务相比,噪声图像中没有足够的“简单”子图像用于去噪。因此,ClassSR 节省的计算成本不如 SR 任务节省的计算成本。然而这一结果表明 ClassSR 可以适用于其他低级视觉任务。

表 5. Test2K 和 Test4K 上的 PSNR 值。 -O:原始网络。 -C:使用 ClassSR 帧去噪

5、致谢

在这项工作中,我们提出了带有一种新的分类方法和两种新的损失函数的 ClassSR,它可以在大图像(2K-8K)上加速几乎所有基于学习的 SR 方法。其关键思想是使用一个Class模块将子图像分类为不同的类(例如,“简单、中等、复杂”),每个类对应于具有不同网络容量的不同处理分支。大量的实验很好地证明 ClassSR 可以在不同的数据集上加速大多数现有的方法。处理具有更多“简单”区域(例如 DIV8K)的图像将节省更多的FLOP。此外,ClassSR 还可以应用于其他低级视觉任务。
致谢。这项工作部分由中国上海科学技术委员会(批准号 20DZ1100800)资助,部分由中国国家自然科学基金(61906184)、中国科学院科技服务网络倡议(KFJSTQYZX092)资助,深圳人工智能与机器人学会。

二、个人理解

在我的理解下,作者是提出了一种新颖的方法,这种方法可以加速大多数的网络。一开始百度PSNR的意思,个人觉得可以理解为图像失真相关的一个量,它的值越大代表图像失真越小,然后将将整体思路大概就是:
一个大图像进去首先被切分为数个小图像,然后小图像根据自己的PSNR值来进行排序,较大的一部分被送进复杂的网络,较小的部分被送进简单的网络,中间的一部分被送入中间的网络。当然这只是个例子,你完全可以分更多的类,然后自己设置分类的PSNR区间值来进行分类。下一步就是在各自的网络里进行SR,先从最复杂的网络讲起,这个网络可以是上述论文提到的任何网络原型,然后将这个原型网络进行训练优化,然后将其作为最复杂的网络,下一步就是根据这个复杂网络减少通道数来得到其他较为简单的网络,可以理解为减少神经元的数量。紧接着再通过将各个处理过的子图像拼接到一起完成重建。
再来说说训练过程,这个阶段每个图象都要经过各个网络分支,这是为了通过L1,Lc,La损失来计算梯度,从而进行更新参数,而测试的时候则进行分类,选择相应的网络。

下面说说自己的想法,作者SR网络的选择好像是同一种类型的网络,我在想如果把这些处理SR网络的模型,换成不同的网络模型会不会使模型更加轻量化,或者使精确度提高一个层次。后面有机会我会尝试一下。

三、项目复现

我是在服务器上实现的,后面会更新部署在本地的教程。特别要感谢作者在github回答我的问题,给了我很大的帮助。
这篇关于ClassSR: A General Framework to Accelerate Super-Resolution Networks by Data Characteristic的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!