【论文阅读笔记】Activating More Pixels in Image Super-Resolution Transformer

论文地址:https://arxiv.org/abs/2205.04437
代码位置:https://github.com/XPixelGroup/HAT

论文小结

  本文方法是基于Transformer的方法,探索了Transformer在低级视觉任务(如SR)中的应用潜力。本文提升有效利用像素范围得到的网络,提出了一种混合注意力Transformer,命名为 HAT(Hybrid Attention Transformer)。
  本文的混合注意力Transformer结合channel attention和基于窗口的self-attention方案,所以认为是结合了全局数据统计和局部拟合能力的互补优势。为了进一步聚合跨窗口的信息,作者使用了重叠交叉注意模块来增加相邻窗口特征之间的交流。

  本文方法比当时最先进的方法领先PSNR指标1dB以上。

论文简介

  使用LAM方法测试(可以得到选择区域哪些像素贡献了最多),得到结论:虽然swinIR的平均指标更高,但基于transformer的swinIR的信息利用范围并不比基于CNN的RCAN方法要大,如下图所示。有效信息范围较小,但指标高,可能可以得出SwinIR比CNN方法拥有更大的映射能力的结论。但与此同时,由于其利用像素区域的范围有限,可能会恢复出错误的纹理。所以本文设计网络的时候考虑了在使用近self-attention结构的时候利用更多的像素用于重构

  查看swinIR的中间状态,有的样本的中间状态会有块效应。这表明移位窗口机制不能完美地实现跨窗口信息交互。所有本文加强了滑动窗口之间的连接,这样可以改善基于窗口的self-attention方法。

  为了解决上述问题,释放Transformer在SR方向上的潜力,作者提出了HAT,混合注意力Transformer。HAT结合了channel attention和self-attention,意图使用前者的全局信息能力和后者强大的表达能力。此外还引入了重叠交叉注意模块来实现相邻窗口特征更直接的交互。

  由于Transformer不像CNN那样具有归纳偏差,因此使用大规模数据预训练的模型参数对于释放此类模型的潜力非常重要。在本文中,作者提供了一种有效的同任务预训练策略。IPT使用多个恢复任务进行预训练。EDT使用多个退化级别进行预训练。作者直接使用大规模数据集对同一任务进行预训练,并相信大规模数据对于预训练来说才是真正重要的。以训练出来的指标作为验证,如下图所示,比其他方法高 0.1 0.1 0.1~ 1.2 1.2 1.2dB。

论文方法

网络架构

  本文设计的网络结构如下图所示:和很多网络一样,整个网络由三个部分组成,包括浅层特征提取,深层特征提取和图像重构。

HAB

  如图2所示,当采用channel attention时,更多的像素会被激活,因为有一个全局信息作为权重(个别图的牵强解释?)。所以本文引入channel-attention为基础的conv block,加入到Transformer block中来增强网络的表达能力。
  如上图4所示,一个channel attention block(CAB)被塞到了标准的Swin Transformer block下的第一个LayerNorm(LN)层后面,与window-base multi-head self-attention(W-MSA)模块平行。

  类似于SwinIR和Swin Transformer,在连续的HAB中,每隔一段时间就采用基于偏移窗口的自注意力(SW-MSA)。为了避免CAB和MSA在优化和视觉表示上可能的冲突,CAB的输出乘以一个小常数 α \alpha α。对于给定的输入,HAB的整个计算过程:其中 X N X_N XN X M X_M XM都是中间特征, Y Y Y是HAB的输出。
X N = L N ( X ) , X M = ( S ) W − M S A ( X N ) + α C A B ( X N ) + X , Y = M L P ( L N ( X M ) ) + X M , (1) \begin{equation}%输入公式的区域 \begin{aligned}%aligned命令对齐,在对齐的地方用"&" X_N&=LN(X), \\ X_M&=(S)W-MSA(X_N)+\alpha CAB(X_N)+X, \\ Y&=MLP(LN(X_M))+X_M, \end{aligned} \end{equation} \tag{1} XNXMY=LN(X),=(S)WMSA(XN)+αCAB(XN)+X,=MLP(LN(XM))+XM,(1)

  把每个像素看做是embedding的一个token(比如像SwinIR一样,将patch size设置1作为patch embedding)。MLP表示多层感知机。为了计算self-attention模块,将输入的特征( H × W × C H\times W\times C H×W×C)划分为 M × M M\times M M×M大小的 H W M 2 \frac{HW}{M^2} M2HW局部窗口。对于局部窗口特征 X W ∈ R M 2 × C X_W\in\mathbb{R}^{M^2\times C} XWRM2×Cquery,keyvalue矩阵都通过线性映射计算为 Q , K Q,K Q,K V V V。然后基于窗口的自注意力被表述为 A t t e n t i o n ( Q , K , V ) = S o f t M a x ( Q K T / d + B ) V , (2) \mathcal{Attention}(Q,K,V)=\mathcal{SoftMax}(QK^T/\sqrt{d}+B)V,\tag{2} Attention(Q,K,V)=SoftMax(QKT/d +B)V,(2)  其中 d d d表示为 q u e r y / k e y query/key query/key的维度;B表示相对位置编码,计算公式由Transformer论文(Attention is all you need)可得;需要注意的是,本文使用了较大的窗口来计算self-attention,因为作者发现这样可以显著扩大使用像素的范围。除此之外,为了建立非重叠窗口邻居之间的联系,作者使用移位窗口划分方法(如Swin Transformer一样),设置偏移量为窗口大小的一半。

  一个CAB模块包含两个标准卷积层,一个GELU激活函数,一个channel Attention(CA)。由于基于Transformer的架构通常需要较大的channel数量来进行token embedding,所以直接使用恒定宽度的卷积会产生很大的计算成本。因此,作者将两个卷积层的通道数压缩一个常数 β \beta β。对于一个输入通道数为 C C C的特征,第一个卷积的输出特征的通道数会被压缩到 C β \frac{C}\beta βC,然后第二个卷积层会恢复到 C C C的通道数。接下来使用标准的CA模块来自适应调整通道特征。

OCAB

  作者引入OCAB(Overlapping Cross-Attention Block)是为了建立跨窗口连接并增强窗口自注意力的能力。本文的OCAB由重叠的交叉注意(OCA)和MLP层组成,类似于标准的Swin Transformer block。

  对于OCA结构,如下图所示,使用不同的窗口大小来划分投影特征。具体来说,对于输入特征 X X X X Q , X K , X V ∈ R H × W × C X_Q,X_K,X_V\in\mathbb{R}^{H\times W\times C} XQ,XK,XVRH×W×C X Q X_Q XQ划分为 M × M M\times M M×M H W M 2 \frac{HW}{M^2} M2HW大小的非重叠窗口,而 X K , X V X_K,X_V XK,XV被展开为 M o × M o M_o\times M_o Mo×Mo H W M 2 \frac{HW}{M^2} M2HW大小的重叠窗口,其计算方法为 M o = ( 1 + γ ) × M M_o=(1+\gamma)\times M Mo=(1+γ)×M

  其中, γ \gamma γ是控制重叠大小的常数。直观上来说,标准的窗口分区,可以认为是kernel size和stride都等于窗口大小 M M M的滑动窗口。重叠窗口分区,可以认为是kernel size为 M o M_o Mo,stride为 M M M的滑动窗口。使用大小为 γ M 2 \frac{\gamma M}2 2γMzero-padding用以保证重叠窗口的大小一致性

  使用公式(2)计算attention矩阵,位置bias B ∈ R M × M o B\in \mathbb{R}^{M\times M_o} BRM×Mo也应用。不像WSA一样,query/key/value都从同一个窗口特征计算,OCA从更大的感受野上计算key/value,在该字段中可以利用更多的信息进行查询(query)。

模型预训练

  IPT使用其他低级任务(去噪、去雨、超分等)进行预训练;EDT使用同个数据集的不同退化等级进行预训练;而本文使用相同任务进行预训练,但只是在其他数据集上(比如大的图像数据集ImageNet)预训练。比如要训练 × 4 \times4 ×4的超分任务,就在ImageNet数据集上进行分 × 4 \times4 ×4的超分预训练,然后再在特定数据集(比如DF2K)上进行微调。所提出的策略,即相同任务预训练。作者认为这样的预训练会让训练更简单,同时带来更多的性能改进。

  同时,作者也提出在预训练时有足够的训练迭代次数,以及微调时适当的小学习率对于预训练策略的有效性非常重要。作者认为这是因为Transformer需要更多的数据和迭代来学习任务的一般知识,但需要较小的学习率进行微调以避免对特定数据集的过度拟合。

论文实验

结构和参数设置

  训练数据集采用DF2K(DIV2K+Flicker2K),因为作者发现只使用DIV2K会导致过拟合。在利用预训练时,采用ImageNet。使用Set5,Set14,BSD100,Urban100和Manga109评估方法。定量指标使用PSNR和SSIM,在Y通道上计算。损失函数采用 L 1 L_1 L1

  对于HAT的结构,作者采用与SwinIR相同的深度和宽度。具体而言,RHAG数量和HAB数量都设为 6 6 6。channel数量设置为 180 180 180。对于(S)W-MSA和OCA,将attention head数量和window 大小设置为 6 6 6 16 16 16。HAB的权重因子超参数 α \alpha α设为 0.01 0.01 0.01,CAB的两个卷积之间的压缩因子 β \beta β设为 3 3 3,OCA的重叠率设为 0.5 0.5 0.5
  对于更大变体结构 HAT-L ,作者采用增加深度的方式,即将HAT中的RHAG数量从 6 6 6提升到了 12 12 12
  对于与SiwnIR类似计算量,且参数更少的架构 HAT-S ,channel 数量设置成 144 144 144,同时在CAB中使用depth-wise 卷积。

消融学习

窗口大小设置

  该消融学习的实验,是在swinIR上进行了,为了避免本文新引入块的影响。定量分析如下表所示,窗口大小为 16 × 16 16\times 16 16×16的模型比 8 × 8 8 \times 8 8×8的模型要有更好的性能,特别是在Urban100上。

  定性分析如下图所示,对于红色标记的patch,窗口大小为 16 16 16的模型比窗口大小为 8 8 8的模型能利用更多的输入像素。

  定量分析和定性分析都能证明大窗口尺寸的有效性。基于这个结论,作者直接使用 16 16 16的窗口大小作为默认设置。

OCAB和CAB的有效性

  OCAB和CAB的定量分析如下表所示,在Urban100数据集上都能带来性能增益,组合起来也能有组合增益。

  如下图所示,使用OCAB的模型具有更大的利用像素范围,并能生成更好的重建结果。使用CAB时,所使用的像素甚至扩展到几乎整个图像。使用OCAB和CAB的结果获得了最高的DI,这意味着本文的方法利用了最多的输入像素。尽管使用OCAB和CAB的模型性能比w/OCAB稍低,但本文的方法获得了最高的SSIM并重建了最清晰的纹理

CAB的设计

  channel attention带来的影响如下表所示,能带来 0.05 d B 0.05dB 0.05dB的性能增益。

  作者还探索了CAB的权重因子 α \alpha α的有效性, α \alpha α就是CAB结果的输出权重, α = 0 \alpha=0 α=0就是不使用CAB的结果。如下表所示, α = 0.01 \alpha=0.01 α=0.01能获得最佳性能。这表明CAB和自注意力在优化方面可能存在潜在问题

OCAB中重叠率的影响

  超参数 γ \gamma γ被用于控制OCAB重叠交叉注意力的重叠大小。下表展示了 γ \gamma γ 0 0 0 0.75 0.75 0.75的影响。

   γ = 0 \gamma=0 γ=0表示的是标准的Transformer模块。从表中也能看到 g a m m a = 0.5 gamma=0.5 gamma=0.5能得到最佳性能。但当 γ = 0.25 \gamma=0.25 γ=0.25或者 γ = 0.75 \gamma=0.75 γ=0.75时,给模型带来的增益较小,甚至会出现性能下降。这表明,不合适的重叠率不利于相邻窗口的相互

实验结果

  下表对比了与SOTA方法的量化性能对比,具有更少参数和类似计算的HAT-S也可以显著由于最先进的方法SwinIR。与IPT和EDT的对比,就是使用了ImageNet预训练的结果,可以看出预训练策略能让模型受益匪浅。

  视觉对比效果如下图所示。纹理和字符等恢复的都是最好的。

  预训练策略的消融学习如下:

  在不同网络上,进行同任务预训练的对比如下:

  

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

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

相关文章

iOS增量报告生成方案

一,iOS覆盖率报告生成逻辑 iOS覆盖率报告生成与Android有很大的不同,主要的生成逻辑如下: 1,将profraw文件,通过命令xcrun llvm-profdata merge -sparse转换成profdata; 2,再将profdata文件,通…

R语言自定义颜色

一、创建颜色梯度&#xff08;渐变色&#xff09; 在绘热图时&#xff0c;需要将数值映射到不同的颜色上&#xff0c;这时就需要一系列的颜色梯度colorRampPalette 函数支持自定义的创建一系列的颜色梯度。 代码示例&#xff1a; library(RColorBrewer)x <- colorRampPal…

Neo4j安装 Linux:CentOS、openEuler 适配langchain应用RAG+知识图谱开发 适配昇腾910B

目录 Neo4j下载上传至服务器后进行解压运行安装JAVA再次运行在windows端打开网页导入数据 Neo4j下载 进入Neo4j官网下载页面 向下滑动找到 Graph Database Self-Managed 选择 社区版&#xff08;COMMUNITY&#xff09; 选择 Linux / Mac Executable Neo4j 5.17.0 (tar) 单机下…

sheng的学习笔记-AI-多分类学习:ECOC,softmax

目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 基本术语&#xff1a; 若我们欲预测的是离散值&#xff0c;例如“好瓜”“坏瓜”&#xff0c;此类学习任务称为“分类”(classification)&#xff1b; 若欲预测的是连续值&#xff0c;例如西瓜成熟度0.95、0.37&#xff0c;…

公网IP与私有IP及远程互联

1.公网有私有IP及NAT 公网IP是全球唯一的IP&#xff0c;通过公网IP&#xff0c;接入互联网的设备是可以访问你的设备。但是IPV4资源有限&#xff0c;一般ISP(Internet Service Provider)并不会为用户提供公网IP。所以家里的计算机在公司是没法直接使用windows远程桌面直接访问…

【Python】新手入门:变量的作用域是什么?有哪几种作用域?作用域的查找顺序是什么?

【Python】新手入门&#xff1a;变量的作用域是什么&#xff1f;有哪几种作用域&#xff1f;作用域的查找顺序是什么&#xff1f; &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基…

LinkedHashMap、HashSet、LinkedHashSet的源码剖析。

LinkedHashMap、HashSet、LinkedHashSet的源码剖析 1. LinkedHashMap2. HashSet3. LinkedHashSet LinkedHashMap、HashSet和LinkedHashSet都是Java中常用的集合类&#xff0c;下面分别剖析一下它们的源码看看。 1. LinkedHashMap LinkedHashMap继承自HashMap&#xff0c;通过维…

软考高级:信息系统建设原则概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

谷歌浏览器连接上WiFi之后无法正常浏览网站-报错:有一款应用正在组织Chrome安全连接到此网站

现象分析&#xff1a; 出现这个报错&#xff1a;&#xff08;明明已经连接上家里的wifi却还是无法正常登录其他网站&#xff09; 解决办法&#xff1a; 是因为电脑上加了网络代理&#xff0c;删除掉就好了 直接搜索&#xff1a;网络代理 把这2个位置记得清空&#xff0c;然…

守护Web安全:了解Web攻击与防护策略

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

对某旅行APP的检测以及参数计算分析【新手向-Simplesign篇】

简要概述&#xff1a; 目标so&#xff1a;scmain.so 讨论的生成过程&#xff1a;SimpleSign 使用工具&#xff1a;IDA pro 7.7、 Binary Ninja、Frida、Frida Stalker 本篇文章实现&#xff1a; SimpleSign的计算过程&#xff0c;包括前、中、后、变换四个主体阶段&#xf…

蓝桥杯刷题(二)

参考大佬代码&#xff1a;&#xff08;区间合并二分&#xff09; import os import sysn, L map(int, input().split()) # 输入n,len arr [list(map(int, input().split())) for _ in range(n)] # 输入Li,Si def check(Ti, arr, L)->bool:sec [] # 存入已打开的阀门在…

如何防御udp攻击

UDP Flood是互联网上最经典的DDoS&#xff08;Distributed Denial of Service&#xff09;攻击之一。攻击者在短时间内向目标设备发送大量的UDP报文&#xff0c;导致链路拥塞甚至网络瘫痪。一般的UDP报文由攻击工具伪造&#xff0c;通常在数据段具备相同的特征&#xff0c;另一…

从3V到12V,升压芯片该选哪个?

在电子系统设计中&#xff0c;升压芯片很重要&#xff0c;将直接影响到系统的稳定性、效率及噪声&#xff0c;特别是在需要将3V升到12V中&#xff0c;选择合适的升压芯片尤为关键&#xff0c;那么如何针对这个需求&#xff0c;合理选择升压芯片&#xff1f; 1、如何选择升压芯片…

阿里云服务器地域怎么选?速度、价格、备案、内网连接考虑因素

阿里云服务器地域选择方法&#xff0c;如何选择速度更快、网络延迟更低的地域节点&#xff0c;地域指云服务器所在的地理位置区域&#xff0c;地域以城市划分&#xff0c;如北京、杭州、深圳及上海等&#xff0c;如何选择地域&#xff1f;建议根据用户所在地区就近选择地域&…

三井住友保险中国区信息技术部负责人陈婧,将出席“ISIG-RPA超级自动化产业发展峰会”

3月16日&#xff0c;第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导&#xff0c;企智未来科技&#xff08;RPA中国、AIGC开放社区、LowCode低码时代&#xff09;主办。大会旨在聚合每一位产业成员的力量&#xff0c;深入探索R…

HNU-计算机网络-甘晴void学习感悟

前言 计算机网络其实我没太学懂&#xff0c; 仅从应试来说&#xff0c;考试成绩也不太好。 这也是为什么一直没有更新这一学科的学习感悟。 大三下还是有点闲&#xff0c;一周三天小长假&#xff0c;闲来无事还是给写了。 教材使用这本&#xff1a; 总领 期中考试 30% 期…

DeepLearning in Pytorch|我的第一个NN-共享单车预测

目录 概要 一、数据准备 导入数据 数据可视化 二、设计神经网络 版本一 版本二&#xff08;正片&#xff09; 三、测试 小结 概要 我的第一个深度学习神经网络模型---利用Pytorch设计人工神经网络对某地区租赁单车的使用情况进行预测 输入节点为1个&#xff0c;隐含…

RNN(Recurrent Neural Networks)循环神经网络

循环神经网络&#xff08;Recurrent Neural Network&#xff0c;简称RNN&#xff09;是一种处理序列数据的神经网络结构&#xff0c;它具有记忆能力&#xff0c;能够捕捉序列中的时序信息。RNN在自然语言处理、时间序列预测等方面有着很多的应用。 一、RNN 的基本结构 RNN的包…

数据结构 - 栈和队列

本篇博客将介绍栈和队列的定义以及实现。 1.栈的定义 栈是一种特殊的线性表&#xff0c;只允许在固定的一端进行插入和删除数据&#xff0c;插入数据的一端叫做栈顶&#xff0c;另一端叫做栈底。栈中的数据遵守后进先出的原则 LIFO (Last In First Out)。 插入数据的操作称为压…
最新文章