论文精读-SRFormer Permuted Self-Attention for Single Image Super-Resolution

论文精读-SRFormer: Permuted Self-Attention for Single Image Super-Resolution

SRFormer:用于单图像超分辨率的排列自注意
Params:853K,MACs:236G
优点:

1、参考SwinIR的RSTB提出了新的网络块结构PAB(排列自注意力块),由此构建了新的网络层PSA。

2、通过信道压缩(减少通道数)+重排列(恢复通道数+缩减窗口大小,/r*r)减少了时间复杂度,并解决了大窗口自注意的参数量、计算成本大的问题。

3、将MLP中的普通卷积替换为深度卷积,补偿了缺失的高频信息。

如果图不全:论文精读-SRFormer Permuted Self-Attention for Single Image Super-Resolution

概述

增加基于变压器的图像超分辨率模型(例如SwinIR)的窗口大小可以显着提高模型性能,但计算开销也相当大。在本文中,我们提出了一种简单而新颖的SRFormer方法,它可以享受大窗口自关注的好处,但引入的计算负担更少。我们的SRFormer的核心是排列自注意(PSA),它在自注意的渠道和空间信息之间取得了适当的平衡。我们的PSA简单,可以很容易地应用于现有的基于窗口自关注的超分辨率网络。在没有任何附加功能的情况下,我们的SRFormer在Urban100数据集上实现了33.86dB的PSNR得分,比SwinIR高0.46dB,但使用的参数和计算量更少。我们希望我们的简单而有效的方法可以作为未来超分辨率模型设计研究的有用工具。

背景介绍

单图像超分辨率(SR)是一种从降级的低分辨率图像中恢复高质量图像的方法。基于cnn的方法长期以来一直是图像超分辨率的主流。这些方法大多利用残差学习[26,30,32,38,55,80]、密集连接[58,67,87]或通道关注[72,86]来构建网络架构。在SwinIR中适当地扩大窗口以转移窗口自关注可以带来明显的性能增益(见图1)。然而,随着窗口尺寸变大,计算负担也是一个重要问题。此外,与之前基于cnn的方法相比,基于变压器的方法利用自注意力,需要更大的通道数网络[26,86,87]。为了探索高效且有效的超分辨率算法,一个直截了当的问题应该是:如果我们减少通道数,同时增加窗口大小,性能会如何?

**在大窗口内建立成对关系的有效方法(例如,24 ×24)。其目的是使更多的像素参与到注意图计算中,同时不引入额外的计算负担。**为此,我们建议缩小键和值矩阵的通道维度,并采用置换操作将部分空间信息传递到通道维度中。这样,尽管通道减少了,但没有空间信息的损失,并且每个注意头也被允许保留适当数量的通道来产生表达性的注意图[60]。此外,我们还通过在两个线性层之间添加深度卷积来改进原始前馈网络(FFN),我们发现这有助于高频分量的恢复。

相关工作

CNN SR

自SRCNN[9]首次将CNN引入图像超分辨率(SR)以来,出现了大量基于cnn的SR模型。DRCN[27]和DRRN[55]引入递归卷积网络,在不增加参数的情况下增加了网络的深度。一些早期的基于cnn的方法[9,27,55,56]试图将低分辨率(LR)作为输入进行插值,这导致了计算代价高昂的特征提取。为了加速SR推理过程,FSRCNN[10]在LR尺度上提取特征,并在网络末端进行上采样操作。这种带有像素洗牌上采样[52]的流水线在后来的作品中得到了广泛的应用[37,85,86]。LapSRN[29]和DBPN[19]在提取特征时进行上采样,学习LR和HR之间的相关性。也有一些作品[30,65,67,83]使用GAN[14]在重建中生成逼真的纹理。MemNet[56]、RDN[87]和HAN[49]有效地聚合了中间特征,增强了重建图像的质量。非局部注意力[64]也在SR中得到了广泛的探索,以更好地模拟远程依赖关系。这类方法包括CS-NL[48]、NLSA[47]、SAN[7]、IGNN[89]等。

视觉Transformer SR

变压器最近在各种视觉任务中显示出巨大的潜力,包括图像分类[11,59,62,74,75],目标检测[4,12,16,54,73],图像字幕[33,69,84],语义分割[53,71,88],图像恢复[5,17,37,76]等。其中,最典型的工作应该是Vision Transformer (ViT)[11],它证明了变压器在特征编码上比卷积神经网络有更好的表现。变压器在低层次视觉中的应用主要包括两大类:生成[8,24,31,78]和恢复。进一步,恢复任务也可以分为两类:视频恢复[13、39、40、42、51]和图像恢复[5、18、68、70、76]。作为图像恢复的一项重要任务,图像超分辨率需要保持输入图像的结构信息,这对设计基于变压器的图像模型提出了很大的挑战。IPT[5]是基于Transformer编码器和解码器结构的大型预训练模型,并已应用于超分辨率、去噪和去训练。SwinIR[37]基于SwinTransformer编码器[41],在8 ×8局部窗口上进行特征提取的自关注,实现了极其强大的性能。ELAN[85]简化了SwinIR的架构,并使用在不同窗口大小下计算的自关注来收集远程之间的相关性像素。

SRFormer

SRFormer也是基于Transformer的。与前面提到的直接利用自我关注来构建模型的方法不同,我们的SRFormer主要针对的是自我关注本身。我们的目的是研究如何在不增加参数和计算成本的情况下,在大窗口内计算自注意力,以提高SR模型的性能。

方法

模型架构

SwinIR:

图片

SRFormer(基础架构与SwinIR一致,只是将其中的RSTB块替换为了PAB块):
在这里插入图片描述

像素嵌入层(低维信息获取):

使用CNN网络 3x3卷积

特征编码器(高维信息获取):

使用新的 基于PAB+CNN的PSA网络

PSA=MxPAB+3x3Conv

整个中间层=NxPSA+3x3Conv

重构模块:

3x3 卷积+亚像素卷积层

损失函数:仍然使用L1像素损失

排列自注意

image-20240519145214962

1、Xin ∈ R(H×W×C)

2、拆分窗口=> X ∈ R(N*S^2×C) N个S x S的窗口

3、通道压缩=>

在这里,Q保持与X相同的通道维度,而LK和LV将通道维度压缩为C/r^2,得到

image-20240519150615882

4、线性转换=> image-20240519145447136

5、通道恢复=>

为了使更多的token参与到自关注计算中,避免计算成本的增加,我们建议将K和V中的空间token置换到通道维度。

(只需要移动数据,不需要计算)

image-20240519150056384

然后我们使用Q和缩小的Kp和Vp来执行自注意操作。

6、自注意力计算=>

image-20240519150150612

B是对齐的位置嵌入

其中Q:windows size:sxs C个通道

Kp:windows size:s/rxs/r C个通道

Vp:windows size:s/rxs/r C个通道

为了能够计算,需要填充相应的数据,可以填充相同数据,这样相同数据的计算可以避免(only copy)。

所以实际计算就是sxs 与 s/r x s/r进行MatMul的计算量。

计算复杂度

传统Attention计算:

4个线性投影:(Q,K,V,softmax)

=>4hwC^2 而 h*w =(h * w/N) *N

=> N * 4 * (S * S * C^2)其中括号内=S * S * C1、S * S * C2

2个矩阵乘法:(Q*K^T,attention score * V)

=>2W^2 hwC

=>N * 2 * ( S * S * S * S * C)其中括号内=S * S * C、S * S * C

image-20240519151712476

使用排列自注意(PSA)后:

4个线性投影:(Q,K,V,softmax)

其中的Q和softmax仍然和普通attention一致,即2hwC^2,而K和V计算,因为进行了通道压缩,所以

=>2hwC2/r2 而 h*w =(h * w/N) *N

=> N * 2 * (S * S * (C/r) ^2)其中括号内=S * S * C1/r、S * S * C2/r

2个矩阵乘法:(Q*K^T,attention score * V)

=>2W^2 (h/r)(w/r)C

=>N * 2 * ( S * S * S/r * S/r * C)其中括号内=S * S * C、S/r * S/r * C

image-20240519152711031

PSA将K、V的线性投影计算和注意力计算减少到1/r^2。

深度卷积

注意力可以被视为一个低通滤波器[50,61]。为了更好地恢复高频信息,通常在每组transformer的末尾添加3 ×3卷积。

在PAB中,我们建议在FFN块的两个线性层之间添加一个局部深度卷积分支,以帮助编码更多细节。我们将新块命名为ConvFFN。经验上看,几乎不增加计算量,但可以补偿自注
意引起的高频信息损失。

image-20240519153202919

大窗口自注意

1、token reduction

image-20240519154504448

使用一个深度卷积,直接将窗口大小缩小为S/r x S/r,从而减少计算量,它与PSA的通道恢复后进行MatMul类似。

2、token 采样

为了避免大窗口导致的计算成本增加,并想使用大窗口的带来的性能提升。token reduction采用从大窗口中随机抽取窗口大小为T的小窗口T^2 (0 ≤ T ≤ S),从而减少计算。NT^2 ×C。但是这样需要每次计算前,先进行令牌采样。且随机选择一部分令牌会丢失内容的结构信息,而这是图像SR所需要的。

计算成本:随窗口大小线性增加。

3、PSA方法

实验

1、深度卷积

image-20240519154944030

2、大窗口自注意

image-20240519155016521

3、大窗口下模型性能:

image-20240519155040908

4、经典图像SR:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5、典型图像SR:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

6、轻量级图像SR:

image-20240519155259767

7、真实世界图像SR:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8、可解释性:

image-20240519155501745

QA

(待补充…)

Q:PSA?排列自注意力

Q:残差连接,密集连接(一般指全连接层),通道关注?

Q:x2 SR x4 SR ?

Q:注意力可以被视为一个低通滤波器[50,61]。为了更好地
恢复高频信息,通常在末尾添加一个conv?

A:在图像超分辨率(Super-Resolution, SR)领域,“x2 SR” 和 “x4 SR” 指的是将输入图像的分辨率分别提高到原来的2倍和4倍。具体来说:

  1. x2 SR

    • x2 SR表示超分辨率技术将图像的水平和垂直分辨率都提高到原来的2倍。
    • 这通常意味着图像的每个维度(宽度和高度)都增加到原来的2倍,因此整个图像的像素数量增加到原来的4倍(因为 (2 \times 2 = 4))。
    • x2 SR技术可以用于改善图像细节,使图像看起来更清晰。
  2. x4 SR

    • x4 SR表示超分辨率技术将图像的分辨率提高到原来的4倍。
    • 这意味着图像的每个维度(宽度和高度)都增加到原来的4倍,整个图像的像素数量增加到原来的16倍(因为 (4 \times 4 = 16))。
    • x4 SR是一个更具挑战性的任务,因为需要从较低分辨率的图像中恢复出更多的细节信息。

这些技术可以应用于不同类型的图像超分辨率方法中,包括基于插值的方法、基于重建的方法以及基于深度学习的方法。随着深度学习技术的发展,基于深度学习的超分辨率方法,如使用卷积神经网络(CNN)、生成对抗网络(GAN)等,已经成为提高图像分辨率的有效手段。

在实际应用中,选择合适的放大倍数(如x2、x4或其他倍数)取决于目标应用的需求和可用的计算资源。更高的放大倍数虽然可以提供更多的细节,但同时也需要更复杂的算法和更多的计算资源。此外,过高的放大倍数可能会导致图像质量下降,因此需要仔细平衡放大倍数和图像质量。

Q:非局部注意力?

Q:SwinIR[37]基于SwinTransformer编码器[41],在8 ×8局部窗口上进行特征提取的自关注,实现了极其强大的性能

Q:深度方向(depth-wise)卷积?

Q:单令牌计算量?

Q:类似多头,但不是多头,因为Q使用的是全通道信息。而K,V使用的也是通道压缩后的全通道信息,并不是部分通道。

Q:transformer远程依赖,WMSA,SWMSA?令牌采样?

Q:经典图像SR,轻量级图像SR,真实世界图像SR?

A:图像超分辨率(Super-Resolution, SR)是一种图像处理技术,旨在提高图像的分辨率,使其看起来更清晰。根据实现的复杂度和应用场景的不同,图像超分辨率技术可以分为几个不同的类别:

  1. 经典图像SR

    • 经典图像超分辨率技术通常指的是早期的基于插值、重建或者学习的方法。
    • 这些方法可能包括最近邻插值、双线性插值、双三次插值等传统的图像放大技术。
    • 经典方法也可能涉及更复杂的重建技术,如基于稀疏表示的SR,它们通过学习图像的稀疏编码来恢复高分辨率图像。
    • 这些技术在理论上较为成熟,但在处理速度和效率上可能不如现代的深度学习方法。
  2. 轻量级图像SR

    • 轻量级图像超分辨率技术是为了在资源受限的环境中(如移动设备或嵌入式系统)实现快速且有效的图像放大。
    • 这些方法通常使用深度学习模型,但模型结构设计得更为简单,参数更少,以减少计算复杂度和提高运行速度。
    • 轻量级模型可能采用如ShuffleNet、MobileNet等轻量级网络结构,或者通过知识蒸馏等技术将大型模型的知识迁移到小型模型中。
  3. 真实世界图像SR

    • 真实世界图像超分辨率技术关注于处理实际场景中拍摄的图像,这些图像可能包含噪声、模糊、光照不均等问题。
    • 这类技术不仅需要放大图像,还需要处理和纠正图像中的各种退化问题,以获得更自然和高质量的结果。
    • 真实世界SR技术可能会集成多种图像处理技术,如去噪、去模糊、颜色校正等,以及使用深度学习模型来学习复杂的图像先验和退化模型。

在实际应用中,选择哪种类型的图像超分辨率技术取决于具体的应用需求、可用的计算资源以及图像的质量要求。例如,对于需要快速处理大量图像的移动应用,可能会选择轻量级图像SR技术;而对于需要极高图像质量的专业图像编辑或医学成像,可能会采用更为复杂和精细的经典或真实世界图像SR技术。随着深度学习技术的发展,基于深度学习的图像超分辨率方法已经成为研究和应用的热点。

Q:深度卷积和点卷积?

Q:通道压缩计算量没有考虑??通道压缩,使用点卷积。没有计算量???

压缩完,计算K,Q,然后执行重排列,还原通道数。再进行矩阵乘法。。。

[Ref:Zhou Y, Li Z, Guo C L, et al. Srformer: Permuted self-attention for single image super-resolution[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2023: 12780-12791.]

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

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

相关文章

盘点28个免费域名申请大全

盘点28个免费域名申请大全 免费域名推荐学习使用,免费就意味着没任何保障。 名称稳定时间支持解析模式后缀格式说明地址EU.org28 年NS.eu.org/. 国家简写.eu.org需要审核,稳定性高,限制少,国内访问有问题,可 CFeu.orgp…

反射获取或修改对象属性的值

利用反射既可以获取也可以写入,首先咱们先写几个获取的例子。 一:利用反射修改各数据(利用resultField.set修改) 首先定义实体类 public class Dog {private String dogUser;private int age;把DogUser的"hahaha"改为"geggegegege" Dog dog = new Do…

10个最佳Android数据恢复工具,用于恢复已删除的文件

由于我们现在在智能手机上存储了许多重要文件,因此了解数据恢复工具变得很重要。您永远不会知道何时需要使用适用于Android的数据恢复工具。 由于不乏Windows数据恢复工具,因此从崩溃的计算机中恢复文件很容易。但是,当涉及到从Android恢复数…

adb卸载系统垃圾应用

//获取包名 输入如下代码,然后在打开和关闭要获取包名的app就会打印出该app的包名 adb shell am monitor //卸载系统应用 -k会保留用户数据,不包含-k则不会保留用户数据 adb shell pm uninstall -k --user 0 包名 (包名一般为:c…

机械臂与Realsense D435 相机的手眼标定ROS包

本教程主要介绍机械臂与 Realsense D435 相机手眼标定的配置及方法。 系统:Ubuntu 20.0.4 ◼ ROS:Noetic ◼ OpenCV 库:OpenCV 4.2.0 ◼ Realsense D435:librealsense sdk(2.50.0)、realsense-ros 功能包&…

【map、set】C++用红黑树来封装map、set容器

🎉博主首页: 有趣的中国人 🎉专栏首页: C进阶 🎉其它专栏: C初阶 | Linux | 初阶数据结构 小伙伴们大家好,本片文章将会讲解map和set之用红黑树来封装map、set容器的相关内容。 如果看到最后您…

资料防拷贝该如何实现?数据防拷贝的方法有哪些

数据安全和隐私保护成为企业和个人关注的重点。电脑中存储的资料往往包含了重要的商业机密、个人隐私或其他敏感信息。 因此,如何有效防止他人非法拷贝电脑资料,成为了一个亟待解决的问题。 本文将探讨数据防拷贝的方法,以帮助企业和个人保护…

22-LINUX--多线程and多进程TCP连接

一.TCP连接基础知识 1.套接字 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程…

Map遍历、反射、GC

map的遍历 用foreach遍历 HashMap<Character,Integer> map new HashMap<>();map.put(A,2);map.put(B,3);map.put(C,3);for (Map.Entry<Character,Integer> entry: map.entrySet()) {char key entry.getKey();int value entry.getValue();System.out.prin…

CF451E: Devu and Flowers(容斥原理 + 考虑反面 + golang组合模版)

题目截图 题目翻译 题目分析 正难则反&#xff0c;考虑所有不符合的例子 由于n很小&#xff0c;所以可以状态压缩二进制遍历完全部不符合例子的组合 对于不符合的例子&#xff0c;假设其中第i个不符合&#xff0c;那么就消耗掉fi 1个球 以此类推&#xff0c;减剩下s2个球 这时…

Android正向开发实现客户端证书认证

前言 如果第三方模块被混淆,那hook方式均不能生效。这时就需要根据系统包去定位校验的函数,因此需要对安卓开发者是如何实现客户端证书校验的有一定了解,接下来就介绍这部分内容。 开发者实现客户端证书校验的本质是:证书/密钥 + 代码。 在形式上有:证书校验、公钥校验和…

Anthropic绘制出了大型语言模型的思维图:大型语言模型到底是如何工作

今天&#xff0c;我们报告了在理解人工智能模型的内部运作方面取得的重大进展。我们已经确定了如何在 Claude Sonnet&#xff08;我们部署的大型语言模型之一&#xff09;中表示数百万个概念。这是对现代生产级大型语言模型的首次详细了解。这种可解释性的发现将来可以帮助我们…

Hadoop 客户端 FileSystem加载过程

如何使用hadoop客户端 public class testCreate {public static void main(String[] args) throws IOException {System.setProperty("HADOOP_USER_NAME", "hdfs");String pathStr "/home/hdp/shanshajia";Path path new Path(pathStr);Confi…

AWS安全性身份和合规性之Artifact

AWS Artifact是对您很重要的与合规性相关的信息的首选中央资源。AWS Artifact是一项服务&#xff0c;提供了一系列用于安全合规的文档、报告和资源&#xff0c;以帮助用户满足其合规性和监管要求。它允许按需访问来自AWS和在AWS Marketplace上销售产品的ISV的安全性和合规性报告…

当他们在说业务的时候,到底在说什么

业务就是通过提供产品和服务给客户&#xff0c;以获取某种价值&#xff0c;形成业务闭环&#xff0c;并能自负盈亏。 文章会以生动形象的比喻来介绍业务到底是什么。 什么是业务&#xff1f; 业务&#xff0c;就像一场精彩的舞台剧&#xff0c;每个角色都有自己的任务和目标…

PHP生成二维码+二维码包含logo图片展示

composer require chillerlan/php-qrcode 用到的扩展自己安装&#xff08;注&#xff1a;只生成二维码只要开gd扩展就行&#xff09; 仅生成二维码看这个&#xff1a; use chillerlan\QRCode\QRCode;public function QRCode(){$qrcode new QRCode();$url "http://ww…

新建项目上传gitee

1.在项目根目录下打开黑窗口执行初始化 git init2.复制码云上新建仓库地址 3.本地仓库和远程仓库建立连接 远程仓库地址是之前复制的仓库地址&#xff0c;复制后直接在命令窗口中鼠标右键Paste即可在命令窗口粘贴出来 git remote add origin 远程仓库地址4.每次上传之前先更…

工厂模式(简单工厂模式+工厂模式)

工厂模式的目的就是将对象的创建过程隐藏起来&#xff0c;从而达到很高的灵活性&#xff0c;工厂模式分为三类&#xff1a; 简单工厂模式工厂方法模式抽象工厂模式 在没有工厂模式的时候就是&#xff0c;客户需要一辆马车&#xff0c;需要客户亲自去创建一辆马车&#xff0c;…

uniapp-自定义navigationBar

封装导航栏自定义组件 创建 nav-bar.vue <script setup>import {onReady} from dcloudio/uni-appimport {ref} from vue;const propsdefineProps([navBackgroundColor])const statusBarHeight ref()const navHeight ref()onReady(() > {uni.getSystemInfo({success…

Qt---录音

1.获取麦克风阵列&#xff1a; QList<QAudioDeviceInfo> infos QAudioDeviceInfo::availableDevices(QAudio::AudioInput);for (int i 0; i < infos.count(); i){qDebug() << infos.at(i).deviceName();} "麦克风阵列 (Realtek(R) Audio)" 2.QAudio…