NAFNet:Simple Baselines for Image Restoration

Abstract

近年来,图像复原技术取得了长足的进步,但现有的图像复原方法(SOTA)系统复杂度也在不断增加,不利于对各种方法的分析和比较。在本文中,我们提出了一种简单的基线,它超越了SOTA方法,并且计算效率很高。为了进一步简化基线,我们揭示了非线性激活函数,例如Sigmoid、ReLU、GELU、Softmax等不是必需的:它们可以被乘法替换或去除。因此,我们从基线推导出一个非线性无激活网络,即NAFNet。SOTA结果在各种具有挑战性的基准测试中实现,例如,GoPro上的33.69 dB PSNR(用于图像去模糊),超过了之前的SOTA 0.38 dB,而计算成本仅为其8.4%; SIDD上的40.30 dB PSNR(用于图像去噪),超过了之前的SOTA 0.28 dB,而计算成本不到其一半。

Introduction

  • 包含GELU[15]和通道注意模块[16](CA)的基线可以进一步简化:我们揭示基线中的GELU可以被视为门控线性单元[10](GLU)的特例,并且由此我们经验性地证明它可以被简单的门(即,特征映射的元素式乘积)代替。
  • 此外,我们还揭示了CA与GLU在形式上的相似性,并且可以去除CA中的非线性激活函数。
  1. 大多数方法可以被视为经典解决方案UNet的变体,这些变体带来了性能增益以及系统复杂度,并且我们将复杂度大致分类为块间复杂度和块内复杂度
  2. 与[30]不同的是,我们在GLU中去除了非线性激活函数,而不会降低性能。此外,基于非线性无激活GLU本身包含非线性的事实(因为两个线性变换的乘积提高了非线性),我们的基线可以通过用两个特征图的乘积代替非线性激活函数
  3. 据我们所知,它是第一个在没有非线性激活函数的情况下实现SOTA性能的计算机视觉模型。

    (a)多级架构[5,37]串联堆叠UNet架构。(b)多尺度融合架构[25,7]融合了不同尺度的特征。(c)UNet架构,一些SOTA方法采用该架构[39,36]。

Baseline

一个普通的块开始图(b)即卷积操作称为PlainNet


为什么使用CNN而不是Transformer

  1. 首先,虽然变压器在计算机视觉中表现出良好的性能,但一些作品[13,23]声称它们可能不是实现SOTA结果所必需的。
  2. 第二,深度卷积比自我注意机制更简单[34]。
  3. 第三,本文不打算讨论transformers和卷积神经网络的优缺点,而只是提供一个简单的基线。

Normalization

虽然[26]放弃了批量规格化[18],因为小批量可能会带来不稳定的统计数据[38],[5]重新引入实例规格化[33]并避免了小批量问题。随后,在Transformer发展下,层归一化[3]被越来越多的方法使用,包括SOTA方法[32,39,36,23,22]。基于这些事实,我们推测层规范化可能对SOTA恢复器至关重要,因此我们将层规范化添加到上述普通块中。总而言之,我们将层规范化添加到普通块中,因为它可以稳定训练过程。

Activation

在普通块中用GELU代替ReLU,因为它保持了图像去噪的性能,同时为图像去模糊带来了非平凡的增益。

Attention

  • vanilla自注意机制[34]是由[12,4]采用的,通过所有特征的线性组合来生成目标特征,这些特征通过它们之间的相似性来加权。因此,每个特征都包含全局信息,但其计算复杂度与特征图的大小成二次关系。一些图像恢复任务以高分辨率处理数据,这使得该自注意不实际。
  • 22,21,36\]仅在固定大小的局部窗口中应用自注意,以减轻增加的计算的问题。而它缺乏全局信息。我们不采用基于窗口的注意力,因为在平面块中通过深度卷积\[13,23\]可以很好地捕获局部信息。

到目前为止,我们从头开始构建了一个简单的基线,如表1所示。它可以超越SIDD和GoPro数据集上的SOTA结果,而计算成本只有一小部分。

Nonlinear Activation Free Network

上面描述的基线是简单和有竞争力的,但是在确保简单性的同时,是否有可能进一步提高性能?它能更简单而不损失性能吗?我们试图通过从一些SOTA方法中寻找共性来回答这些问题[32,39,20,17]。我们发现,在这些方法中,采用了门控线性单元[10](GLU)。这意味着GLU可能是有前途的。我们接下来会讨论它。

Gated Linear Units

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

其中Φ表示标准正态分布的累积分布函数。根据[15],GELU可以近似并实现为:

由方程1和方程2,可以注意到GELU是GLU的一个特例,即f,g是单位函数,取σ为Φ。通过这种相似性,我们从另一个角度推测,GLU可以看作是激活函数的推广,有可能取代非线性激活函数。此外,我们注意到GLU本身包含非线性,并且不依赖于σ:即使σ被移除,Gate(X)= f(X)⊙ g(X)也包含非线性。

在此基础上,我们提出了一个简单的GLU变体:在通道维度上直接将特征图分为两部分,然后将它们相乘,如图4c所示,标记为SimpleGate。与等式3中的GELU的复杂实现相比,我们的SimpleGate可以通过元素乘法来实现,仅此而已:

X、Y是相同大小的特征图

结果表明,SimpleGate可以替代GELU,替代后网络中只剩下通道注意力中存在激活函数。作者同样进行了优化和替代。

Simplified Channel Attention

我们将通道注意力[16]引入到我们的块中,因为它捕获全局信息并且计算效率高。如图4a所示:它首先将空间信息压缩到通道中,然后将多层感知应用于它以计算通道注意力,这将用于对特征图进行加权。它可以表示为:

其中X表示特征图,pool表示将空间信息聚合到通道中的全局平均池化操作。σ是一个非线性激活函数Sigmoid,W1,W2是全连接层,两个全连接层之间采用ReLU。如果我们将通道注意力计算视为一个函数,5可以改写为:

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

简化的通道注意力(方程式7)比原来的简单Eqn.5),如图4a和图4b所示。虽然它更简单,但性能没有损失:SIDD为+0.03 dB(39.93 dB至39.96 dB),GoPro为+0.09 dB(32.76 dB至32.85 dB)。

Experiments




相关推荐
Ronin-Lotus3 小时前
深度学习篇---剪裁&缩放
图像处理·人工智能·缩放·剪裁
Ai墨芯1114 小时前
深度学习水论文:特征提取
人工智能·深度学习
SHIPKING3935 小时前
【机器学习&深度学习】LLamaFactory微调效果与vllm部署效果不一致如何解决
人工智能·深度学习·机器学习
闻道且行之5 小时前
Windows|CUDA和cuDNN下载和安装,默认安装在C盘和不安装在C盘的两种方法
windows·深度学习·cuda·cudnn
生医转码,四海为家7 小时前
零基础-动手学深度学习-6.6 卷积神经网络(LeNet)
人工智能·深度学习·cnn
CoovallyAIHub7 小时前
避开算力坑!无人机桥梁检测场景下YOLO模型选型指南
深度学习·算法·计算机视觉
s1ckrain8 小时前
【论文阅读】ON THE ROLE OF ATTENTION HEADS IN LARGE LANGUAGE MODEL SAFETY
论文阅读·人工智能·语言模型·大模型安全
seasonsyy9 小时前
2.安装CUDA详细步骤(含安装截图)
python·深度学习·环境配置·cuda
淦暴尼11 小时前
银行客户流失预测分析
python·深度学习·算法
go546315846511 小时前
在本地环境中运行 ‘dom-distiller‘ GitHub 库的完整指南
人工智能·深度学习·神经网络·算法·矩阵·github