论文阅读——Restormer

news2024/11/27 18:46:45

项目地址:

GitHub - swz30/Restormer: [CVPR 2022--Oral] Restormer: Efficient Transformer for High-Resolution Image Restoration. SOTA for motion deblurring, image deraining, denoising (Gaussian/real data), and defocus deblurring.

论文地址:

Restormer: Efficient Transformer for High-Resolution Image Restoration

应用:defocus deblurring(single-image and dual-pixel data), and image denoising(Gaussian grayscale/color denoising, and real image de-noising).

期刊: CVPR 2022


概述

和MIRnet一样,都来自于阿联酋的Inception Institute of Artificial Intelligence。这篇文章聚焦于解决Transformer应用在vision中的痛点。

Vision Transformers(ViT)把图像分成多个patch,学习他们之间的关系。所以相比于CNN,Vision Transformers的优点是更大的感受野,可以对图像内容有自适应的能力。

Thedistinguishing feature of these models is the strong ca-pability to learn long-range dependencies between imagepatch sequences and adaptability to given input content.                 

Vision Transformers的问题是SA模块的计算量与patch的分辨率是二次指数的关系,这就限制了Vision Transformers的实际应用。

一种做法是把self attention局限在局部区域,相当于加一个窗,Swin Transformer 就是这样的思路。但这样把信息集成局限在局部,削弱了Vision Transformers原有的优势,违背了初衷,不适用于图像复原任务。

所以这里选择了另外一条路:使用多头的SA+多尺度的结构

结构

整体结构的特点:

1. 在卷积得到特征层之后,仍然是Unet的结构+skip connect,只不过每一层由Transformer Block构成。

2. u-net的deep feature再经过一个tansformer block进行refine,得到refined features。

3.refined features经过卷积层得到残差图像R,残差图R和原始图相加得到最终的复原图。

encoder-decoder

encoder-decoder共四层,每一层由tansformer block构成,由小到大表示四个尺度。在最后的level之后又经过transformer block,融合了encoder的low-level image features和decoder的 high-levelfeatures得到了deep feature。

encoder-decoder是对称的四层。它的输入是3x3卷积之后得到的low-level image features,使用F_o表示,encoder-decoder的输出是deep features,使用 F_d表示。

像u-net一样,encoder部分的四层的分辨率越来越低,但是通道层面越来越宽。decoder则逐步恢复分辨率。下采样和上采样分别使用pixel-unshuffle和pixel-shuffle实现。

在每一层中,为了辅助恢复的过程,encoder下采样之前的数据和decoder上采样后的数据会进行信息整合,使用的操作是通道层面的concatenation。为了避免通道数过多,会再使用1x1的卷积进行通道层面的压缩(压缩至一半)。

Transformer Block

MDTA(Multi-Dconv Head Transposed Attention)

MDTA作为transformer block的第一部分。

传统的SA在空域中计算点积,空域本身就是二维的,所以传统的SA的复杂度是O(W^2H^2)。而在MDTA中是在通道之间计算点积,本质上是计算通道之间的协方差cross-covariance。

所以可以看到下图中的通道维度C被标红了:

除了通道方面的改进,可以看到Q、K、V都经过了两层卷积,分别是1x1和3x3的深度可分离卷积,并且是bias-free的。MDTA在计算协方差之前,使用深度可分离卷积depth-wise convolutions,可以强调局部语义信息。

得到Q、K、V之后,还会进行reshape操作,把H和W的乘积看作一个维度,通道看作另外一维。因为Q和K在softmax之前会进行内积的计算,reshape之后再内积的结果是CxC的,这就达到了通道之间协方差的表示,称之为transposed-attention map A。

transposed-attention map A和V再做内积,达到注意力机制的目的。此时得到的仍然是HWxC大小,再进行reshape恢复成三维度的数据。

再经过1x1卷积得到残差,和输入求和,得到最终的输出。

GDFN(Gated-Dconv Feed-Forward Network)

GDFN作为transformer block的第二部分。MDTA的作用是特征提取,GDFN的作用是特征转换。

 特征转换通常使用regular feed-forward network(FN),使用两次1x1卷积,先扩展通道,再压缩通道。两次1x1卷积还能引入非线性。

GDFN仍然使用了1x1卷积和3x3深度可分离卷积结合的方式,并且使用了门逻辑来操作对应像素。具体做法是分成两路:一路经过GELU non-linearity激活器,激活的结果作为权重,施加到另外一路上去。对应像素按权重求和,得到的结果

GDFN的本质是控制信息流。因为每一层的transformer都有GDFN,所以不同层可以专注于提取不同的互补的特征。

总结

先看看疗效,Restormer 在效果和速度上都能找到优势:

0.3 dB and 0.25 dB over the previous best CNN method MIRNet and Transformer model Uformer;

compared to SwinIR , Restormer has 3.14× fewer FLOPs and runs 13× faster

restomer中的两个重要改进其实都是多头基础上进行的:不同头直接经过门响应或者内积得到权重,对另外的分支进行加权。

在后面的文章中,可以看到NAFnet对此进行了进一步的简化:把多头使用多个通道代替,并且因为对应乘积本身有非线性,激活层甚至都可以去除掉。


reference:

论文及代码详解——Restormer-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Angular 保姆级别教程三

RxJS 13.1.1 什么是 RxJS ? RxJS 是一个用于处理异步编程的 JavaScript 库,目标是使编写异步和基于回调的代码更容易。 13.1.2 为什么要学习 RxJS ? 就像 Angular 深度集成 TypeScript 一样,Angular 也深度集成了 RxJS。 服务、表单、事件、全局状…

雷池WAF自动化实现安全运营实操案例终极篇

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Cookie与Session详解与应用

White graces:个人主页 🙉专栏推荐:Java入门知识🙉 🐹今日诗词:青山一道同云雨,明月何曾是两乡🐹 目录 Cookie和Session 伪造Cookie 获取Cookie数据 传统方法获取Cookie​编辑 使用注解获取Cookie 设…

【CXL协议-性能注意事项(13)】

13.0 Performance Considerations CXL 为加速器访问系统提供了低延迟、高带宽的路径。CXL 的性能取决于多种因素。表 13-1 列出了 CXL 的主要性能属性。 1.实现的带宽取决于协议和有效载荷大小。CXL.cache 和 CXL.mem 的效率预计为 60-90%。效率与 CXL.io 上的 PCIe* 类似 一…

Git的多人协作模式与企业级开发模型

目录 多人协作一 1.要完成的任务 2.准备操作 3.用户的开发操作 4.merge操作 多人协作二 1.要完成的任务 2.用户的开发操作 3.merge操作 4.解决远程分⽀删除后,本地git branch -a 依然能看到的问题 企业级开发模型 1.了解一些常识 2.系统开发环境…

(Golang)初识Go语言!!为什么选择Go?如何配置Go的开发环境?VS Code如何配置Go环境?

1. Go能做什么? go的优点:运行速度快、并发能力强 Go的应用领域: 区块链应用(BT、分布式账本技术) 后端服务应用 例如: 美团后台流量支撑程序 支撑主站的后台流量(排序、推荐、搜索等&#xf…

芯知识 | NVH-FLASH语音芯片支持平台做语音—打造音频IC技术革新

随着科技的飞速发展,人们对于电子产品的音频性能要求越来越高。在这种背景下,NVH-FLASH系列语音芯片应运而生,作为音频IC领域的一次重大技术革新,NVH-FLASH系列语音芯片凭借其卓越的性能与灵活的支持平台,正逐步引领着…

Java 解决阿里云OSS服务器私有权限图片通过URL无法预览的问题

简单描述一下此场景的业务: 由于系统中需要将上传的图片在系统中展示(private私有权限不能直接通过url直接展示),不想通过先下载下来然后以流的形式返回给前台展示这种方法很不友好,毕竟现在前台展示方式都是通过图片URL进行展示,所以就上官网查看API文档,果然找到了解决…

【数据库】Mysql的锁类型

Mysql中的锁机制主要是为了保证数据的一致性和完整性,在并发的情况下起着至关重要的作用。其中锁的类型主要是分为以下几种: 按照粒度分类 全局锁:对于整个数据库实例进行枷锁,加锁后整个实例就处于只读的状态。局锁通常用于需要…

Gin框架操作指南01:开山篇

Gin是目前最流行,性能最好的的GoWeb框架,几乎成为了学习GoWeb必备的知识。本人最近也在学Gin,在b站搜了很多教程,发现有的教程不够详细,有的教程工具包安装有问题,而官方文档的很多示例代码又不全&#xff…

基于卷积神经网络的中草药识别系统,resnet50,mobilenet模型【pytorch框架+python源码】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示: 卷积神经网络,中草药识别系统,resnet50,mobilenet【pytorch框架,python】_哔哩哔哩_bilibili (一)简介 基于卷积神经网络的中…

3.添加缓存和缓存更新策略

项目地址:https://github.com/liwook/PublicReview 添加缓存 查询商铺缓存 我们查询商店的时候,通过接口查询到的数据有很多,我们希望在此用Redis缓存数据,提高查询速度。 对于店铺的详细数据,这种数据变化比较大&a…

Win安装Redis

目录 1、下载 2、解压文件并修改名称 3、前台简单启动 4、将redis设置成服务后台启动 5、命令启停redis 6、配置文件设置 1、下载 【下载地址】 2、解压文件并修改名称 3、前台简单启动 redis-server.exe redis.windows.conf 4、将redis设置成服务后台启动 redis-server -…

xlnt加载excel报错:xl/workbook.xml:2:2581: error: attribute ‘localSheetId‘ expected

解决方案 大家不一定能看懂,地址里说的啥意思,地址过去主要说明了从https://github.com/musshorn/xlnt/tree/issue_685合入可以解决问题,后面再想推送到官方地址,但没人维护了。 我这边直接给大家说一个结果就是:问题…

python 爬虫 入门 四、线程,进程,协程

线程和进程大部分人估计都知道,但协程就不一定了。 一、进程 进程是操作系统分配资源和调度的基本单位,一个程序开始运行时,操作系统会给他分配一块独立的内存空间并分配一个PCB作为唯一标识。初始化内存空间后进程进入就绪态,PC…

GUI编程

GUI编程 【Java从0到架构师课程】笔记 GUI简介 GUI:图形用户界面,在计算机中采用图形的方式显示用户界面 java的GUI开发 AWT:java最早推出的GUI编程开发包,界面风格跟随操作系统SWT:eclipse就是java使用SWT开发的Sw…

【ArcGIS微课1000例】0125:ArcGIS矢量化无法自动完成面解决方案

文章目录 一、坐标系统问题二、正确使用自动完成面工具一、坐标系统问题 1. 数据库坐标系 arcgis矢量化的过程中,无法自动完成面,可能是因为图层要素没有坐标系造成的。双击数据库打开数据库属性,可以查看当前数据框的坐标系。 2. 图层坐标系 双击图层,打开图层属性,切…

从零开始学PHP之变量作用域数据类型

一、数据类型 上篇文章提到了数据类型,在PHP中支持以下几种类型 String (字符串)Integer(整型)Float (浮点型)Boolean(布尔型)Array(数组)Objec…

滤波算法与SLAM:从概率角度理解SLAM问题

滤波算法与SLAM 第三章:MAP/MLE问题和贝叶斯网络 文章目录 滤波算法与SLAM前言一、最大后验问题(MAP)与最大似然问题(MLE)二、贝叶斯网络与SLAM问题三、因子图与SLAM问题四、从概率角度理解Kalman Filter与SLAM 前言 …

我谈傅里叶变换幅值谱的显示

在图像处理和分析中通常需要可视化图像傅里叶变换的幅值谱。通过幅值谱,可以直观地观察频率成分的分布,帮助理解图像的结构和特征。 很多刊物中直接显示傅里叶变换的幅值谱。 FFT fftshift(fft2(double(Img))); FFT_mag mat2gray(log(1abs(FFT)));由…