NAFNet:没有激活函数的简单网络也能刷新图像恢复SOTA(ECCV2022)

· 头条

论文题目

Simple Baselines for Image Restoration

1、简介

尽管近年来在图像恢复领域取得了重大进展,但最先进的(SOTA)方法的系统复杂性也在增加,这可能会阻碍方法的方便分析和比较。本文提出了一个简单的基线,它超过了SOTA方法,并且计算效率很高。为了进一步简化基线,揭示了非线性激活函数,如Sigmoid, ReLU, GELU, Softmax等是不必要的:它们可以用乘法代替或删除,从基线推导出一个非线性激活自由网络,即NAFNet。SOTA结果在各种具有挑战性的基准上实现,例如GoPro上的33.69 dB PSNR(用于图像去模糊),超过了之前的SOTA 0.38 dB,计算成本仅为其8.4%;在SIDD(用于图像去噪)上的PSNR为40.30 dB,超过了之前的SOTA 0.28 dB,计算成本不到其一半。

从普通块中,添加/替换SOTA方法的组件,并验证这些组件带来了多少性能增益。通过广泛的消融研究,我们提出了一个简单的基线,如图3c所示,它超过了SOTA方法,并且计算效率高。它有可能激发新的想法,并使其更容易验证。包含GELU和Channel Attention Module (CA)的基线可以进一步简化:发现基线中的GELU可以被视为门控线性单元(GLU)的一个特例,并由此经验证明它可以被一个简单的门(即特征映射的元素积)所取代。此外,还揭示了CA与GLU在形式上的相似性,并且CA中的非线性激活函数也可以被去除。总之,简单的基线可以进一步简化为一个非线性的无激活网络,称为NAFNet。在SIDD上进行图像去噪实验,在GoPro上进行图像去模糊实验,主要结果如图1所示,提出的基线和NAFNet在达到SOTA结果的同时计算效率很高。

本文的贡献总结如下:

1)通过分解SOTA方法并提取其基本组件,形成了一个具有较低系统复杂性的基线(如图3c),它可以超过以前的SOTA方法,并且具有较低的计算成本,如图1所示。它可以方便研究人员激发新的想法并方便地对其进行评价。

2)通过揭示GELU (Channel Attention to Gated Linear Unit)之间的联系,通过去除或替换非线性激活函数(如Sigmoid、ReLU和GELU)进一步简化了基线,并提出了一个非线性无激活网络,即NAFNet。虽然经过了简化,但可以达到或超过基线,这是第一个证明非线性激活函数可能不是SOTA计算机视觉方法所必需的工作。这项工作可能有潜力扩大SOTA计算机视觉方法的设计空间。

2、背景

1)图像恢复 图像恢复任务的目的是将退化的图像(如噪声、模糊)恢复到干净的图像,基于深度学习的方法在这些任务上取得了SOTA结果,并且大多数方法可以被视为经典解UNet的变体。它将块堆叠成u型结构,并采用跳接。这些变体带来了性能的提高,以及系统的复杂性,将复杂性大致分为块间复杂性和块内复杂性,一个自然的问题出现了:低块间和低块内复杂度的网络是否可能实现SOTA

2)线性门控单元 门控线性单元(GLU)可以通过两个线性变换层的元素生成来解释,本文揭示了GLU带来的重要改进,在GLU中去掉了非线性激活函数而没有性能下降。此外,基于非线性无激活的GLU本身包含非线性(因为两个线性变换的乘积会引起非线性)这一事实,基线可以通过用两个特征映射的乘法替换非线性激活函数来简化,这是第一个在没有非线性激活函数的情况下实现SOTA性能的计算机视觉模型。

3、简单的基线

1)从头开始为图像恢复任务构建一个简单的基线,为了保持结构简单,原则是不添加不必要的实体。通过对恢复任务的实证评价,验证了结构设计对恢复任务的必要性,主要采用HINet Simple进行模型大小在16 gmac左右的实验,通过空间大小为256 × 256的输入来估计mac。在两个流行的数据集上验证结果(PSNR),去噪(即SIDD)和去模糊(即GoPro数据集)。

2)架构 为了降低块间复杂度,采用了经典的单级u型架构,并采用了跳线连接,如图2c所示,作者认为架构不会成为性能的障碍。

3)简单的块,神经网络是按块堆叠的,已经确定了如何在上面堆叠块(即在UNet架构中堆叠),但是如何设计块的内部结构仍然是一个问题,从一个包含最常见组件的普通块开始,即convolution, ReLU和shortcut,如图3b所示,将其记为PlainNet。

4)归一化层,推测层规范化可能对SOTA恢复至关重要,因此将层规范化添加到上面描述的普通块中。这种变化可以使训练更加顺利,即使学习率提高了10倍,更大的学习率带来了显著的性能增益。

5)激活函数,普通块中的激活函数,整流线性单元(ReLU),在计算机视觉中被广泛使用,在SOTA方法中,有用GELU代替ReLU的趋势。本文在块中用GELU代替ReLU,因为它在保持图像去噪性能的同时,在图像去模糊方面带来了不小的增益。

6)注意力,通道注意力满足了计算效率的要求,并为特征映射带来了全局信息。此外,通道注意力的有效性已经在图像恢复任务中得到验证,因此将通道关注添加到plain block中。

4、NAFNet

1)上面描述的基线是简单且有竞争力的,但是在确保简单性的同时是否有可能进一步提高性能呢?它能在不损失性能的情况下变得更简单吗?本文试图通过寻找一些SOTA方法的共性来回答这些问题,发现在这些方法中,采用了门控线性单元(GLU),这意味着GLU可能很有前途,接下来讨论GLU。

2)GLU, 门控线性单元门控线性单元可表示为:

其中X表示特征映射,f和g是线性变换,σ是非线性激活函数,例如Sigmoid,⊙表示逐元乘法。如上所述,将GLU添加到基线可能会提高性能,但块内复杂性也会增加,这不是所期望的。为了解决这个问题,重新审视基线中的激活函数,即GELU:

式中Φ为标准正态分布的累积分布函数,GELU可以近似实现为:

由Eqn. 1和Eqn. 2可知,GELU是GLU的一个特例,即f、g为恒等函数,取σ为Φ。通过相似性,从另一个角度推测,GLU可以看作是激活函数的一种推广,它可以代替非线性激活函数。此外,注意到GLU本身包含非线性并且不依赖于σ:即使σ被去除,Gate(X) = f(X)⊙g(X)也包含非线性。在此基础上,提出了一种简单的GLU变体:直接将特征映射在通道维度上分成两部分,并将它们相乘,如图4c所示,称为SimpleGate。与Eqn.3中GELU的复杂实现相比,SimpleGate可以通过元素智能乘法实现:

其中X和Y是相同大小的特征图。通过将基线中的GELU替换为所提出的SimpleGate,图像去噪(在SIDD上)和图像去模糊(在GoPro数据集上)的性能分别提高0.08 dB和0.41 dB。结果表明,提出的SimpleGate可以取代GELU。此时,网络中只剩下几种类型的非线性激活:通道注意模块中的Sigmoid和ReLU,接下来讨论其简化。

3)通道注意力简化,将通道注意引入到块中,因为它捕获全局信息并且计算效率高。如图4a所示:它首先将空间信息压缩到通道中,然后对其应用多层感知来计算通道注意力,并将其用于加权特征图。它可以表示为:

其中,X表示特征图,pool表示将空间信息聚合到通道中的全局平均池化操作。σ为非线性激活函数,Sigmoid、W1、W2为全连通层,全连通层之间采用ReLU,*是一个channel - wise product操作。如果将通道注意力计算看作一个函数,记为Ψ,输入为X,则Eqn. 5可以重写为:

可以注意到,Eqn. 6与Eqn. 1非常相似。启发将渠道注意力视为GLU的一个特例,可以像前一小节中的GLU一样简化。通过保留渠道注意的两个最重要的作用,即聚合全局信息和通道信息交互,提出了简化的通道注意:

符号遵循公式5,简化通道注意(Eqn. 7)比原始通道注意(Eqn. 5)更简单,如图4a和图4b所示。虽然它更简单,但没有性能损失:在SIDD上+0.03 dB ,在GoPro上+0.09 dB

4)从基线开始,进一步简化了GELU,用SimpleGate和信道注意替换为简化的信道注意,而不会损失性能。强调简化后的网络中不存在非线性激活函数(如ReLU、GELU、Sigmoid等),称之为NAFNet。

5、实验

1)SIDD图像去噪方法的定性比较

2)从PlainNet构建一个简单的基线。验证了层归一化(LN)、GELU和信道注意(CA)的有效性。*表示由于学习率(lr)大,训练是不稳定的。

3)NAFNet来源于基线的简化,即将GELU替换为SimpleGate (SG),将Channel Attention (CA)替换为Simplified Channel Attention (SCA)。

4)SimpleGate(X, Y)中σ的变体= X⊙σ(Y)

5)GoPro上图像去模糊方法的定性比较

6)基于SIDD的图像去噪结果

7)GoPro上的图像去模糊效果

8)定性地比较PMRID和NAFNet的降噪效果

9)4Scenes上的raw图像去噪结果

10)在REDS-val-300上的图像去模糊结果