旷视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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NFT Insider #120:福布斯在 The Sandbox 推出永久建筑,哈佛教授表示Web3 和 NFT 将会继续存在

引言:NFT Insider由NFT收藏组织WHALE Members (https://twitter.com/WHALEMembers)、BeepCrypto (https://twitter.com/beep_crypto)联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜…

《初阶数据结构》尾声

目录 前言: 《快速排序(非递归)》: 《归并排序》: 《归并排序(非递归)》: 《计数排序》: 对于快速排序的优化: 分析: 总结: 前言&#xff1a…

《UE5_C++多人TPS完整教程》学习笔记24 ——《P25 完善菜单子系统(Polishing The Menu Subsystem)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P25 完善菜单子系统(Polishing The Menu Subsystem)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主&…

200万上下文窗口创飞Gemini 1.5!微软来砸谷歌场子了

谷歌刚刷新大模型上下文窗口长度记录,发布支持100万token的Gemini 1.5,微软就来砸场子了。 推出大模型上下文窗口拉长新方法——LongRoPE,一口气将上下文拉至2048k token,也就是200多万! 并且1000步微调内&#xff0c…

深入浅出:探究过完备字典矩阵

在数学和信号处理的世界里,我们总是在寻找表达数据的最佳方式。在这篇博文中,我们将探讨一种特殊的矩阵——过完备字典矩阵,这是线性代数和信号处理中一个非常有趣且实用的概念。 什么是过完备字典矩阵? 首先,我们先…

<网络安全>《49 网络攻防专业课<第十四课 - 华为防火墙的使用(2)>

6 防火墙的防范技术 6.1 ARP攻击防范 攻击介绍 攻击者通过发送大量伪造的ARP请求、应答报文攻击网络设备,主要有ARP缓冲区溢出攻击和ARP拒绝服务攻击两种。 ARP Flood攻击(ARP扫描攻击):攻击者利用工具扫描本网段或者跨网段主机时…

MT8791迅鲲900T联发科5G安卓核心板规格参数_MTK平台方案定制

MT8791安卓核心板是一款搭载了旗舰级配置的中端手机芯片。该核心板采用了八核CPU架构设计,但是升级了旗舰级的Arm Cortex-A78核心,两个大核主频最高可达2.4GHz。配备了Arm Mali-G68 GPU,通过Mali-G88的先进技术,图形处理性能大幅提…

网络原理-UDP/TCP协议

协议 在网络通信中,协议是非常重要的一个概念,在下面,我将从不同层次对协议进行分析. 应用层 IT职业者与程序打交道最多的一层,调用系统提供的API写出的代码都是属于应用层的. 应用层中有很多现成的协议,但是更多的,我们需要根据实际情况来进行制作自定义协议. 自定义协议…

Vue3 (unplugin-auto-import自动导入的使用)

安装 参考链接 npm i -D unplugin-auto-importvite.config.ts里面配置 import AutoImport from unplugin-auto-import/viteAutoImport({imports:[ vue,vue-router]})重新运行项目会生成一个auto-imports.d.ts的文件 /* eslint-disable */ /* prettier-ignore */ // ts-nochec…

C++之类作用域

目录 1、全局作用域 2、类作用域 2.1、设计模式之Pimpl 2.2、单例模式的自动释放 2.2.0、检测内存泄漏的工具valgrind 2.2.1、可以使用友元形式进行设计 2.2.2、内部类加静态数据成员形式 2.2.3、atexit方式进行 2.2.4、pthread_once形式 作用域可以分为类作用域、类名…

高并发系统实战课个人总结(极客时间)

高并发系统实战课 场景 读多写少 我会以占比最高的“读多写少”系统带你入门,梳理和改造用户中心项目。这类系统的优化工作会聚焦于如何通过缓存分担数据库查询压力,所以我们的学习重点就是做好缓存,包括但不限于数据梳理、做数据缓存、加缓…

有趣的CSS - 文字加载动画效果

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是用 css 实现多字符模拟加载动画效果。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页…

【Python笔记-设计模式】享元模式

一、说明 享元模式是一种结构型设计模式,它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。 (一) 解决问题 旨在减少大量相似对象创建时的内存开销 (二) 使用场景 大量…

这是我见过最全的权限系统设计方案!

日常工作中权限的问题时时刻刻伴随着我们,程序员新入职一家公司需要找人开通各种权限,比如网络连接的权限、编码下载提交的权限、监控平台登录的权限、运营平台查数据的权限等等。 在很多时候我们会觉得这么多繁杂的申请给工作带来不便,并且…

[更新]ARCGIS之土地耕地占补平衡、进出平衡系统报备坐标txt格式批量导出工具(定制开发版)

序言 之前开发的耕地占补平衡报备格式,现在之前的基础上集成了耕地进出平衡报备格式导出。 之前版本软件详见:软件介绍 一、软件简介 本软件是基于arcgis二次开发的工具(插件),需要授权后才能使用; 本软件…

125 Linux C++ 系统编程4 Linux 静态库制作,动态库制作,静态库和动态库对比。静态库运行时找不到库的bug fix

一 静态库 和动态库 对比 静态库的原理:假设我们有一个 静态库,大小为500M,这个静态库实现了一些打牌的逻辑算法,提供了一堆API,让开发者 可以轻松的实现 54张扑克牌的随机发牌,指定发牌等功能。 我们写了…

Nuxt3实现多语言与事件总线(EventBus)

我的nuxt版本为 3.10.0 一、多语言实现 这里我使用得是 nuxtjs/i18n 这个库 安装 npm install -D nuxtjs/i18nnext根目录创建 i18n.config.ts 文件 export default {legacy: false,locale: zh, // 默认值messages: {zh: {home: 首页,useKill: 使用技巧,helpCenter: 帮助中…

H桥逆变控制方式(单极性倍频)

单极性倍频图像 内部做了载波取反:正相载波和负相载波 最后都和调制载波一起比较 正相载波:Q7导通为高电平,Q15导通为低电平 负相载波:Q16导通为高电平,Q8导通为低电平 导通次序为:Q7Q16——Q7Q8——Q7Q…

Mamba 作者谈 LLM 未来架构

文章目录 前言 1、为什么注意力机制有效? 2、注意力计算量呈平方级增长 3、Striped Hyena 是个什么模型? 4、什么是 Mamba? 5、Mamba 硬件优化 6、2024年架构预测 7、对 AI 更多的预测 本片文章来自【机器之心】对Mamba作者进行采访所进行的编译整理。 …

Sora 对未来视频创作伦理的挑战和思考

Sora 对未来视频创作伦理的挑战和思考 随着人工智能技术的飞速发展,AI视频模型Sora的出现为视频创作带来了革命性的变革。然而,在技术进步的同时,也带来了一些伦理问题值得我们深思。 1. 真实性和虚假信息: Sora能够生成逼真的视频画面&…