旷视low-level系列(三):(NAFNet)Simple Baselines for Image Restoration

在这里插入图片描述

题目:Simple Baselines for Image Restoration
单位:旷视
收录:ECCV2022
论文:https://arxiv.org/abs/2204.04676
代码:https://github.com/megvii-research/NAFNet

文章目录

  • 1. Motivation
  • 2. Contributions
  • 3. Methods

1. Motivation

图像恢复领域的SOTA方法性能越来越高,但模型复杂度也随之水涨船高,对实时性要求较高的应用场景而言落地相当困难。对于业务导向的研究,自然而然就会将研究重点转向以较低的复杂度实现SOTA性能。在该篇论文中,旷视的研究员们提出了一个用于图像恢复任务的简单基线,性能超过SOTA方法,并且计算效率更高。

2. Contributions

  • 通过对SOTA方法进行分解并提取它们的基本组件,形成了一个系统复杂度较低的基线,性能上超过以前的SOTA方法,并具有较低的计算成本;
  • 通过去除或替换非线性激活函数进一步简化了基线,并提出了一个非线性无激活的网络–NAFNet,性能上匹配甚至超过基线;首次证明了非线性激活函数可能不是SOTA模型所必要的网络组件。
    在这里插入图片描述

3. Methods

为了便于讨论,作者将模型的系统复杂度分解为块间复杂度(inter-block complexity)和块内复杂度(intra-block complexity),其中,块间复杂度指的是block之间的各种连接方式的复杂程度,例如下图展示的(a)多阶段架构和(b)多尺度融合架构,块内复杂度指的是block内部组件的复杂程度。为了降低块间复杂度,作者采用了单阶段的UNet,并着重研究如何降低块内复杂度。
在这里插入图片描述

Fig.1

如何设计block的内部结构使其具有较低复杂度呢?作者的思路大概如下:先设计一个简单的plain block,然后参考SOTA模型中成熟且切实有效的模块,在plain block中逐一添加或替换得到baseline block,并通过消融实验验证性能是否有提升;最后在保证性能不损失的情况下进一步简化结构,以最大程度地降低块内复杂度。
在这里插入图片描述

Fig.2

plain block
考虑到transformer架构对于部分SOTA方法来说不是必要的,并且其计算复杂度较高,与simple baseline的目标相悖,因此设计plain block的内部结构时抛弃了self-attention这样的复杂结构,只考虑使用卷积、激活和shortcut等简单组件,排列顺序参考Restormer中的block。

baseline block
基于plain block,从normalization,activation和attention三个方面进行改进。

  • normalization
    BN不适用于low-level视觉任务应该是一种共识,网络中加入BN会导致性能下降。

BN导致性能下降的原因可能有:
1)小的batch-size带来不稳定的统计;
2)不同于high-level task倾向于寻找一致性表示,底层视觉的任务与之相反,往往是倾向于学习图片特定性以增强细节的恢复效果(比如之前有人通过捕获图像分布的sigma以增强边缘区域的效果),batchNorm由于是batch内做attention,其实很容易将其他图片的信息引入,忽略了恢复图像的特定信息,导致性能下降。

考虑到LN在transformer和众多SOTA图像恢复方法中广泛使用,作者推测LN是达到SOTA性能的一个必要组件,因此在plain block中添加了LN。由于LN的存在,即使学习率增加10倍训练过程仍然稳定,并且大的学习率能够带来显著的性能增益:SIDD+0.44dB,GoPro+3.39dB

  • activation
    ReLU被广泛应用于计算机视觉任务中,但是目前的SOTA方法中逐渐倾向于使用GELU(高斯误差线性单元激活函数)代替ReLU,例如transformer中主要使用GELU激活函数,因此作者也将plain block中的ReLU替换为GELU。替换结果:SIDD-0.02dB,GoPro+0.21dB,去噪性能相当,但是去模糊有提升,因此选择使用GELU作为激活函数。
  • attention
    low-level任务的图像输入分辨率一般都很高,例如常用的1080p,self-attention的计算复杂度随着空间分辨率的增加而二次增长这一缺陷导致其实用性大大降低。Uformer中提出只在固定大小的窗口中应用self-attention以降低计算量,但缺点是丢失了全局信息;Restormer中提出的Multi-Dconv Head Transposed Attention模块将空间attention修改为通道attention,通过计算通道上的注意力来隐式编码全局上下文信息,可以视为SENet中所提出的通道注意力的一种变体。受Restormer启发,作者认为baseline中的通道注意力只需要满足两点要求:1)计算效率高;2)能够捕获全局信息。SENet中提出的通道注意力就能满足要求,将其添加到plain block中后,SIDD+0.14dB,GoPro+0.24dB。

经过normalization,activation和attention这三个方面的改进后,形成了Fig.2c所示的baseline block。

NAFNet's block
baseline block的结构已经很简单了,但是论文中进一步提出问题:是否有可能在确保简单的同时进一步提高性能?它能在不造成性能损失的情况下更简单吗?作者们试图通过寻找一些SOTA方法的共性来回答这些问题,发现SOTA方法中大多采用了门控线性单元(GLU),这意味着GLU可能是一个有效组件。

GLU的形式如下:
在这里插入图片描述
其中 X X X表示特征图, f f f g g g为线性变换器, σ \sigma σ为非线性激活函数,如Sigmoid,⊙表示元素级乘法。添加GLU到baseline中可能会提高性能,但块内的复杂性也在增加,与“更简单”的目标相悖。为了解决该问题,作者重新审视了baseline中的GELU,发现GLU与GELU在形式上存在可转换性。GELU的形式如下:
在这里插入图片描述
不难看出,当GLU中的 f f f g g g均为identity, σ \sigma σ Φ \Phi Φ时,GLU与GELU是等价的。另外,GLU中的非线性不是仅由 σ \sigma σ决定的,在移除 σ \sigma σ的情况下, f ( X ) ⋅ g ( X ) f(X)\cdot g(X) f(X)g(X)也能引入非线性。基于以上分析,作者提出了一种GLU的变体,直接在通道维度中将特征图分成两部分,并将它们相乘,形式如下:
在这里插入图片描述

Fig.3

在这里插入图片描述
将baseline block中的GELU替换为Simple Gate后,SIDD+0.08dB,GoPro+0.41dB,该结果表明在图像恢复任务中GELU可以被Simple Gate所取代。

至此,网络中只剩下少数几种非线性激活:通道注意模块中的Sigmoid和ReLU。图穷匕见呀,作者就是想将网络中的非线性激活全部干掉,设计首个无需非线性激活的图像恢复SOTA模型!

SENet中提出的channel attention的形式如下:
在这里插入图片描述
如果将attention的生成过程用函数表示,CA(x)可以简化为:
在这里插入图片描述
突然发现和GLU的形式惊人的相似呀,作者认为可以将channel attention视为GLU的一种特殊情况,通过保留channel attention的聚合全局信息和通道信息交互这两个最重要的作用,提出了simplified channel attention(SCA):
在这里插入图片描述
在这里插入图片描述
虽然SCA相比CA在形式上更为简单,但是性能没有损失,SIDD+0.03dB,GoPro+0.09dB。

由于最终的网络中没有非线性激活函数,作者将其命名为:Nonlinear Activation Free Network,NAFNet

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/488318.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

ES6 | (一)ES6 新特性(上) | 尚硅谷Web前端ES6教程

文章目录 📚ES6新特性📚let关键字📚const关键字📚变量的解构赋值📚模板字符串📚简化对象写法📚箭头函数📚函数参数默认值设定📚rest参数📚spread扩展运算符&a…

Optimization for Deep Learning

Notations: : model parameters at time step or : gradient at used to compute : momentum accumulated from time step to time step , which is used to cpmpute Optimization What is Optimization about? 找到一组参数,使得 最小,或者说是…

视频怎么变成gif动图?一招教你在线转换

MP4是一种常见的视频文件格式,它可以包含音频和视频数据,并支持高质量的视频压缩。MP4视频可以呈现连续的动态效果,可以包含平滑的运动、音频等多媒体元素。而GIF动图是由一系列静态图像组成的,通过快速连续播放这些帧来创造出动态…

使用Python制作进度条有多少种方法?看这一篇文章就够了!

前言 偶然间刷到一个视频,说到:当程序正在运算时,会有一个较长时间的空白期,谁也不知道程序运行的进度如何,不如给他加个进度条。 于是我今个就搜寻一下,Python版的进度条都可以怎么写! 送书…

一出手就是“天价”,鹰角网络的第二款游戏《来自星尘》,备受游戏行业关注

​还有4天,鹰角网络的第二款游戏《来自星尘》即将面市。 行业内大部分人都在关注这一产品的落地情况,想要知道市场对于这一游戏的反应。 这当然有其原因。 最简单的一点是,这是鹰角网络自《明日方舟》后,时隔五年后才出的第二款…

基础光学系列:(一)光学在机器视觉中的角色:原理、应用与学习途径

光学是一门研究光的产生、传播以及与物质相互作用的科学,对于机器视觉技术的发展至关重要。机器视觉利用计算机和相机系统模拟人类视觉,解释和理解图像,广泛应用于制造业、医疗、安全监控等领域。本文旨在探讨光的传播原理及其在机器视觉中的…

二手旧物回收系统开发:推动可持续发展的关键

随着人们环保意识的增强,二手旧物回收系统的发展逐渐成为社会关注的焦点。开发二手旧物回收系统,不仅能有效减少废弃物的排放,降低对环境的污染,还能实现资源的循环利用,推动可持续发展。本文将深入探讨二手旧物回收系…

【前端素材】推荐优质后台管理系统Salreo平台模板(附源码)

一、需求分析 当我们从多个层次来详细分析后台管理系统时,可以将其功能和定义进一步细分,以便更好地理解其在不同方面的作用和实际运作。 1. 结构层次 在结构层次上,后台管理系统可以分为以下几个部分: a. 辅助功能模块&#…

【linux】查看openssl程序的安装情况

【linux】查看openssl程序的安装情况 1、查看安装包信息 $ rpm -qa |grep openssl 2、安装路径 $ rpm -ql openssl $ rpm -ql openssl-libs $ rpm -ql openssl-devel 3、相关文件和目录 /usr/bin/openssl /usr/include/openssl /usr/lib64/libssl.so.* /usr/lib64/libcrypto…

Python奇幻之旅(从入门到入狱基础篇)——面向对象进阶篇(下)

目录 引言 3. 面向对象高级和应用 3.1. 继承【补充】 3.1.1. mro和c3算法 c3算法 一句话搞定继承关系 3.1.2. py2和py3区别 3.3. 异常处理 3.3.1. 异常细分 3.3.2. 自定义异常&抛出异常 3.3.3. 特殊的finally 3.4. 反射 3.4.1. 一些皆对象 3.4.2. import_modu…

UI风格汇:扁平化风格来龙去脉,特征与未来趋势

Hello,我是大千UI工场,设计风格是我们新开辟的栏目,主要讲解各类UI风格特征、辨识方法、应用场景、运用方法等,本次带来的扁平化风格的解读,有设计需求,我们也可以接单。 一、什么是扁平化风格 扁平化风格…