近年来,基于深度学习的图像降噪/去模糊的算法,在图像恢复领域取得了显著的进展。但与此同时,这些方法的系统复杂度相应的也在上升,如图1. 所示。
由此自然产生了一个问题,简单的模型是否也有可能达到最先进的性能?本文尝试回答这个问题,并给出肯定的答复。在本文中,我们先展示如何从零开始搭建一个简单同时性能优秀的基线模型,然后进一步简化该模型:我们发现甚至连传统的激活函数(如ReLU,GELU,Sigmoid等)都不是必须的:它们可以被去除或者被简单的乘法替代。
图1. 当前一些图像恢复方法
如何从零搭建简单基线
深度学习模型通常是由一些基础操作(比如卷积/激活函数等)组合而成的模块(block)堆叠在一起构成的。我们先讨论堆叠模块的方式,然后再考虑模块内部的基础元素应该怎样选择。
图2. UNet结构示意图
在各种深度学习方法蓬勃发展的当下,堆叠模块的方式也有许多不同方案,比如MPRNet[1]/HINet[2]等网络采用了多阶段的设计,将简单的结构串联起来;MIMO-UNet[3]等方法则考虑将各个不同空间大小的特征连接在一起。
而另一方面,我们发现简单的结构:UNet(如图2.)还是有一战之力的:当前一些性能优秀的方法[4],[5]是基于UNet或其变种。基于以上观察,我们认为UNet结构仍然是构造简单基线的不二之选。
在选定了堆叠方式之后,还有一个容易被忽略的地方,就是堆叠模块的数量。为了确定此选项,我们通过模块的数量这一条线,回顾近年来图像恢复模型的发展。DeepDeblur[6] 发现将Normalization去除之后性能更优,而后续的一些方法如NBNet[7]等也使用了这样的设置,其包含9个模块。我们猜测可能是因为去除了Normalization从而使得图像恢复模型在深度增加时难以稳定训练。
去年5月份,HINet[2]则重新引入了Instance Normalization从而支持18个模块的训练。另一方面, transformer在高层视觉领域的流行也影响到了底层视觉领域,如UFormer[4](包含 18个模块), Restormer[5](进一步将模块数增加到了44个)。有证据表明,深度(或者说模块数)的增加是近期图像恢复模型性能提升的重要原因,所以我们选择了36个模块作为模型的默认配置。
图3.
左箭头:简化Restormer[5]从而获得初始结构。
右箭头:初始结构增加必要内容构成简单基线。
接下来我们考虑模块的内部结构 – 我们从Restormer[5]的模块出发, 将其简化只保留最基础的部分从而获得一个初始模块结构,如图3. 左侧箭头所示。
这个初始结构会遇到训练不稳定的问题,提醒我们需要引入Normalization。所以我们参考一些transformer的做法引入了Layer Normalization(以及GELU),并且均发现它们能有效提升图像恢复模型性能。
此外,对于注意力机制, 我们并不想引来特别多额外的计算量且希望模型结构尽可能简单,所以选择了通道注意力机制(CA),从而构造出了一个简单的基线,如图3. 右侧箭头所示。我们惊喜的发现, 此基线已经取得非常优秀的性能,见图4.。
图4. 简单基线和其他方法的性能比较
进一步简化基线
图5. Restormer[5]中的乘法
通过拆解一些领先方法如Restormer[5],我们意外的发现其中“乘法” (图5.)对性能的提升有着至关重要的作用,这提醒我们重新审视这一个操作。它可以被形式化为门线性单元,简称Gate:
此外, 通道注意力机制(CA,见图6.(a))从形式上和Gate也有相似之处。我们保留其中最重要的部分:全局信息聚合以及通道信息交互,从而获得简化版本的通道注意力(SCA),如图6.(b) 所示。
实验结果
图8. NAFNet降噪/去模糊效果图
图8. 展示了NAFNet的可视化结果,更多实验结果见论文。此外在图像超分任务上,基于NAFNet的工作NAFSSR[8]取得了NTIRE22的双目超分辨率冠军,说明NAFNet在超分任务上具有一些潜力。NAFNet代码已开源,欢迎试用。
来源:旷视研究院
作者:R
专栏文章推荐
- ECCV 2022 | 视频插帧中的实时中间流估计
- 沈向洋对话张祥雨:重新审视CNN中大卷积核问题
- ECCV 2022 Oral | 基于EM算法从视频中生成真实光流数据集
- 提速还能不掉点!深度解析 MegEngine 4 bits 量化开源实现
欢迎关注旷视研究院极术社区专栏,定期更新最新旷视研究院成果。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
加入旷视:career@megvii.com