Java教程

大幅降低计算&性能有提升,华为诺亚从频率角度出发提出频率感知动态超分网络FADN

本文主要是介绍大幅降低计算&性能有提升,华为诺亚从频率角度出发提出频率感知动态超分网络FADN,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

编辑:Happy
首发:AIWalker

标题&作者团队

本文是华为诺亚、清华大学以及悉尼大学提出的一种用于高效图像超分的频率感知动态网络。本文从图像的不同频率成分复原难度、所需计算量等角度出发,提出了一种动态调节不同频率特征计算分支的模块并由此引出了本文所提方案FADN。所提方法可以大幅降低模型性能,且保持超分性能不变,甚至有些微提升。比如,所提方法可以减少50%EDSR计算量,同时还有0.02~0.05dB的性能提升。

Abstract

深度学习技术已成为图像超分的主流方案,为得到更好的视觉感知质量与重建效果,现有方法往往采用具有重度计算量的复杂网络。然而,移动端设备的计算资源极为有限,难以满足现有超分方案的计算负载要求。

为缓解上述问题,我们探索了一种新颖的频率感知动态网络,它将输入按照其在DCT域的系数划分为不同部分。实际上,高频部分需要采用复杂的操作处理,对低频部分采用廉价操作处理以减少计算量要求。由于低频区域包含非常少的纹理,因此该动态网络不会影响最终超分图像的质量。此外,我们将频率预测器嵌入到端到端动态网络中对手工设计的频率感知掩码进行微调。

我们在公开基准数据集上进行了充分实验,结果表明:所提频率感知动态网络可以适用于不同图像超分架构并取得更好的重建质量与计算复杂度均衡。比如,所提方法可以减少EDSR模型近50%计算量,同时保持SOTA超分性能。

Introduction

自从SRCNN提出以来,深度学习就成为了图像超分的主流,出现了各式各样的超分架构,比如简单到极致的EDSR、WDSR、RDN、注意力机制的应用RCAN与SAN、图的应用IGNN、NAS的应用FALSR、传统迭代反投影的应用DBPN、递归的应用DRRN以及GAN的应用SRGAN、ESRGAN等等。

尽管前述超分方案在重建客观指标方面取得非常好的指标,同时具有较好的视觉感知质量,但伴随而来的是高计算量,这对于资源受限的实际场景场景来说天战极大。比如,采用RDN生成 1280 × 720 1280 \times 720 1280×720(720p)大小图像需要10194G计算量。

尽管有也有不少方案聚焦于如何降低整体的计算量,但这些方法不够充分有效。自然图像由不同频率信号构成。高频信息的重建需要更高的计算量,而低频信息的重建并不需要高计算量。以下图为例,低频区域采用最轻量的模型所取得效果与重度模型效果基本一致;而高频区域方能看到重度模型重建质量的有效性。

frequency

Method

受上述现象启发,从频率角度出发,我们提出了一种新颖的频率感知动态网络FADN,网络结构见下图。FADN由动态残差模块构成,对每个模块,我们引入了一个预测器基于DCT将输入特征划分为多个成分,即低频、中频以及高频。预测器通过手工频域掩码在训练集上通过有监督方式学习。然而不同部分的特征采用不同计算量的卷积处理。

fadn

Dynamic ResBlock

dyresblock

首先,我们对ResNet与EDSR中的残差模块进行重思考,结构见上图。ResBlock由两个 3 × 3 3\times 3 3×3卷积、两个BN与两个ReLU构成;SRResBlock则移除了BN与最后的ReLU。SRResBlock模块可以描述如下:
Y i = X i + f ( X i ) Y_i = X_i + f(X_i) Yi​=Xi​+f(Xi​)
在SRResBlock中,所有像素共享相同的滤波器。然而,SR任务中的像素不需要同等对待,这是因为高频信号的信息缺失要比低频更严重。换句话说,低频信号可以采用更简单的操作重建。基于此,我们设计了动态残差模块,它包含一个掩码预测器与多个不同计算量的分支。在推理阶段,每个像素按照频率掩码M划分到不同分支。以Figure3c为例,它包含三个分支,最右分支计算量最大,默认等同于SRResBlock。假设分支数量为K,分支k的函数表示 f k f_k fk​,动态残差模块可以描述如下:
Y i = X i + ∑ k = 1 K M ) i , k ⋅ f k ( X i ) s . t . M i , k ∈ { 0 , 1 }  and  ∑ k K M i , k = 1 Y_i = X_i + \sum_{k=1}^K M){i,k} \cdot f_k(X_i) \\ s.t. M_{i,k} \in \{0,1\} \text{ and } \sum_{k}^K M_{i,k}=1 Yi​=Xi​+k=1∑K​M)i,k⋅fk​(Xi​)s.t.Mi,k​∈{0,1} and k∑K​Mi,k​=1

Mask Predictor

如何将 X i X_i Xi​按照频率强度送入到合适分支非常重要,这是低频信号采用轻量分支重建节省计算量的关键。一种直观的思路是采用DCT生成频率掩码。以下图为例,我们首先采用DCT将图像从空域变换到频域,b1代表全频率带信息,b2部分为低频区域,b3部分为中频区域,b4部分则是高频区域。c图则给出了按照频率阈值划分并变换到空域后的频率掩码。

不幸的是,手工阈值对于噪声比较敏感,故而不适用于所有图像。我们希望网络可以自适应学习一个频率掩码。由于掩码不具有微分性质,我们采用Gumbel Softmax技巧使Mask Predictor变成可微分形式。

给定X,采用 1 × 1 1\times 1 1×1卷积作为Mask Predictor生成包含K通道尺寸与X相同的分布D。该分支仅仅包含一个卷积,故其计算复杂度几乎可以忽略,其计算过程可以描述如下:
KaTeX parse error: Expected '}', got '_' at position 17: …M_i = \text{one_̲hot}(argmax_{k}…
上述公式有两个缺陷:(1) 它忽视了统计随机性,因为D实际上是连续分布而非离散值;(2)它不可微分,因此无法通过端到端方式优化。因此,我们采用Gumbel Softmax技巧生成连续的可微分的正态分布:
G i = e x p ( ( D i + g i ) / τ ) ∑ k = 1 K e x p ( ( D i , k + g o , k ) / τ ) G_i = \frac{exp((D_i + g_i)/\tau)}{\sum_{k=1}^K exp((D_{i,k} + g_{o,k})/\tau)} Gi​=∑k=1K​exp((Di,k​+go,k​)/τ)exp((Di​+gi​)/τ)​
其中, g i g_i gi​服从 G u m b e l ( 0 , 1 ) Gumbel(0,1) Gumbel(0,1)分布的噪声(注:该噪声仅在训练阶段添加), τ \tau τ表示用于控制分度密度的温度参数,默认1。我们希望每个像素仅选择一个分支,在前向过程中,分支选择描述如下:
KaTeX parse error: Expected '}', got '_' at position 17: …M_i = \text{one_̲hot}(argmax_k G…
总而言之,该分支在前向与反向过程的计算量流程是不同的,描述如下:
KaTeX parse error: Expected '}', got '_' at position 30: …ases} \text{one_̲hot}(argmax_k G…

Losses

由于FADN是一种频率感知模型:低频信号采用更廉价操处理。为大搞该目的,Mask Predictor需要将DCT频率先验纳入考虑。具体来说,我们采用DCT生成的频率掩码D引导掩码训练。假设有B个动态残差模块,其DCT损失可以描述如下:
L d c t = ∑ b = 1 B C E ( M b , D ) L_{dct} = \sum_{b=1}^B CE(M_b, D) Ldct​=b=1∑B​CE(Mb​,D)
其中,CE表示交叉熵损失, M b M_b Mb​表示第b分支的预测频率掩码。

除此之外,控制不同场景的计算量也很重要。我们预测频率掩码可以反映总体计算量,即预测掩码包含越多的低频成分,计算量越低。假设每个模块有n个像素, c k c_k ck​表示分支k每个像素的计算量,动态残差模块总计算量计算如下:
C = ∑ i = 1 n ∑ k = 1 K M i , k ⋅ c k C= \sum_{i=1}^n \sum_{k=1}^K M_{i,k} \cdot c_k C=i=1∑n​k=1∑K​Mi,k​⋅ck​
稀疏损失定义如下:
L s p a = ( ∑ b = 1 B C b B ⋅ n c K − α ) 2 L_{spa} = (\frac{\sum_{b=1}^B C_b}{B \cdot nc_K} - \alpha)^2 Lspa​=(B⋅ncK​∑b=1B​Cb​​−α)2
C b C_b Cb​表示b分支的FLOPs, n c K nc_K ncK​表示是SRResBlock的FLOPs, α \alpha α表示控制频率掩码稀疏性的超参数。

总频率损失定义如下:
L m a s k = L s p a + β L d c t L_{mask} = L_{spa} + \beta L_{dct} Lmask​=Lspa​+βLdct​
β \beta β表示控制两个掩码损失的超参数。我们对其采用退货策略调整并将其逐渐下降到0,主要有这样两个原因:(1)受人工阈值与噪声敏感性影响,DCT频率掩码并不精确;(2) L d c t L_{dct} Ldct​无法方便的控制期望的计算量。

除此之外,我们还使用了 L 1 L_1 L1​损失:
L s r = ∥ s r − h r ∥ 1 L_{sr} = \| sr-hr\|_1 Lsr​=∥sr−hr∥1​
总而言之,FADN通过两种类型损失进行优化, 总损失为: L = L m a s k + L s r L = L_{mask} + L_{sr} L=Lmask​+Lsr​。

Efficient Implementation

由于每个分支的权值共享特性,计算过程空域通过GEMM实现。每个分支的第一个卷积应当具有相同的核尺寸,因此我们采用im2col将输入展开;与此同时,Mask Predictor生成频率掩码M;然而,展开X按照M拆分并送入不同分支,每个分支完成处理后合并为完整张量;最后将上述所得与输入相加即可得到该模块的输出。

Experiments

Training 我们将所提频率感知动态机制应用到EDSR,将所得模型称之为FAD_EDSR,它包含32个残差模块、256通道。训练数据采用常规的DIV2K,退化方式BI。

Evaluation 测试数据为常规Set5、Set14、B100以及Urban100,度量指标为PSNR与SSIM。

sota

上表给出所提方法与其他方案的性能对比,从中可以看到:

  • 所提方法方案FADN可以有效的计算量计算量(即FLOPs);
  • 相比EDSR,所提方法可以降低近一半的FLOPs,同时保持甚至取得性能的提升。比如,在x2任务+Set5数据方面,模型的FLOPs下降69.6%同时PSNR指标提升0.11dB;
  • 相比AdaEDSR,所提方法可以降低更多的计算量,取得更好的超分性能。比如,在x4任务+Urban100数据方面,AdaEDSR的FLOPs降低16%、PSNR降低0.06dB;而所提方案计算量空域降低35.9%且PSNR指标提升0.06dB。
  • 在大尺度任务(如x3与x4)上,AdaEDSR出现了严重的性能退化问题;受益于端到端训练,所提方案仍具有非常优秀的性能。

visual

上图给出了不同方案的视觉感知质量对比,从中可以看到:所提方法生成了与EDSR相似、甚至更优视觉质量的结果,同时显著优于AdaEDSR

flops

上图给出了不同计算复杂度模型的性能对比,可以看到:所提方法具有最佳的PSNR-FLOPs均衡

learning

上表对比了不同掩码方式的性能对比,可以看到:

  • 随机掩码会早成性能下降显著下降,因其无法有效判别频率信息并赋予合适分支;
  • 固定随机掩码的结果比多个随机掩码的结果更差;
  • DCT频率掩码要比随机掩码更加,它可以提供合理的分支预测;然而会受限于手工阈值。
  • 端到端的可学习频率掩码可以避免DCT掩码存在的问题;
  • DCT频率掩码引导的学习方式可以加速训练收敛并取得更佳性能。

mask predictor

除了性能对比了,我们还对比了学习频率掩码与DCT频率掩码的可视化效果,见上图。

  • DCT频率掩码指示了频率分布,但对噪声敏感;
  • 所提可学习频率掩码与DCT频率掩码类似,但预测更精确;同时不同模块的掩码存在细微区别。

number mask

上表对比了不同分支模型性能对比,可以看到:分支越多模型性能越好。考虑到训练与内存消耗,我们建议3分支FADN。

题外语

本文与笔者之前分享的《[https://mp.weixin.qq.com/s/vIacjZk6UvNCxJIdBWY0og](A Divergence to Convergence Approach for Image Super-Resolution)》与《CVPR2021|超分性能不变,计算量降低50%,董超等人提出用于low-level加速的ClassSR》有着比较强的相关性。

这三篇文章意识到:不同的区域重建难度不一,高频区域(纹理、边缘)重建难度更高,需要更多的计算量;低频区域(平坦)重建难度低,需要较少的计算量。

三者的出发点与所采用的方案各不相同,简单说明如下:

  • ClassSR采用最简单直接的思路:分类器预测每个图像块的复原难度,然后每个块采用不同复杂度的超分网络。从实用角度来看,ClassSR更易于部署。
  • SMSR采用了类似剪枝的思路,跳过冗余计算,在达到高计算量降低的同时保持性能不变。尽管可以大幅的降低计算量,但实际推理提升并不大,重度依赖于稀疏卷积的支持程度。
  • FADN采用了既有Class的分块的思想,同时还有SMSR的细粒度控制计算复杂度的机制。但FADN则是在模块层面采用Predictor预测高低频区域,然后采用多分支方式处理。从实际推理角度来看,FADN部署难度介于上述ClassSR与SMSR之间。
  • 从开源角度看,ClassSR与SMSR均已经开源,而FADN尚未。如有同学计划复现FADN,可考虑结合SMSR中的Gumbel Softmax实现进行FADN的复现。

推荐阅读

  1. CMDSR | 为解决多退化盲图像超分问题,浙江大学&字节跳动提出了具有退化信息提取功能的CMDSR
  2. 你的感知损失可能用错了,沈春华团队提出随机权值广义感知损失
  3. CVPR2021|超分性能不变,计算量降低50%,董超等人提出用于low-level加速的ClassSR
  4. CVPR2021 | 性能不变,计算量减少41%,国防科大提出加速图像超分高效推理的SMSR
  5. SANet|融合空域与通道注意力,南京大学提出置换注意力机制
  6. GhostSR|针对图像超分的特征冗余,华为诺亚&北大联合提出GhostSR
  7. 图像超分中的那些知识蒸馏
  8. ICLR2021 | 显著提升小模型性能,亚利桑那州立大学&微软联合提出SEED
  9. RepVGG|让你的ConVNet一卷到底,plain网络首次超过80%top1精度
  10. Transformer再下一城!low-level多个任务榜首被占领
  11. 通道注意力新突破!从频域角度出发,浙大提出FcaNet
  12. 无需额外数据、Tricks、架构调整,CMU开源首个将ResNet50精度提升至80%+新方法
  13. 46FPS+1080Px2超分+手机NPU,arm提出一种基于重参数化思想的超高效图像超分方案
  14. 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 ICLR 2021
  15. CVPR2021|“无痛涨点”的ACNet再进化,清华大学&旷视科技提出Inception类型的DBB
  16. CVPR2021|将无监督对比学习与超分相结合,国防科大提出了用于盲图像超分的无监督退化表达学习DASR
这篇关于大幅降低计算&性能有提升,华为诺亚从频率角度出发提出频率感知动态超分网络FADN的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!