HAT论文详解:Activating More Pixels in Image Super-Resolution Transformer

code:https://github.com/XPixelGroup/HAT
paper: https://arxiv.org/abs/2309.05239

1. 概述

本文是对Swinir的改进,目前很多图像超分Benchmark的SOTA。相对于SwinIR的改进主要有三个地方:1. 引入Channel Attention,以获得更好的全局能力;2. 提出了overlapping cross-attention模块,来进行跨window的信息交互;3. 提出一个预训练策略。

2. 引言

2.1 阐明swinir存在的问题

  • SwinIR在SR任务上取得了突破,然而为什么Transformer-based方法要比CNN-based方法好,却很难说清楚。一个直观的解释是Transformer方法可以受益于self-attention机制,并能够利用远距离信息。作者通过LAM分析发现,与RCAN相比,SwinIR并没有利用更大range的信息,这是反直觉的。同时可以说明SwinIR具备比CNN强的映射能力,可以利用更少的信息取得更好的效果。但是由于利用的pixel的范围有限,SwinIR可能会restore出错误的纹理。如下图所示。
    在这里插入图片描述

  • 尽管平均性能优于RCAN,但是有一些结果也比RCAN差

  • 这说明Swin transformer建模局部信息的能力很强,但是探索的信息范围需要扩大

  • 在SwinIR的特征图上发现了block artifacts,这是由于窗口划分造成的,这说明移动窗口机制并不能有效的建立跨窗口的交互。。
    在这里插入图片描述

2.2 本文的贡献:

  • 设计了一个Hybrid Attention,结合了channel attention, self-attention和overlapping cross-attention;
    channel attention:具备很好地获取全局信息的能力
    self-attention: 强大的表达能力(representative ability)

  • 提出一个预训练策略
    因为transformer不具备cnn的归纳偏置,所以需要大规模数据进行预训练,才能解锁潜力。

3. 方法介绍

HAT结构图
在这里插入图片描述
上面两张图分别是HAT和SwinIR的整体结构图,可以看出HAT延续了SwinIR的基本结构,将RSTB升级成RHAG,内部的STL也对应升级成HAB,并且在每个Block中加入了一个OCAB。下面具体来看这两处改动。

  • 向(STL)Swin Transformer Layer中加入了Channel Attention,也就是将(S)W-MSA与CAB的结果叠加起来。

    CAB的代码实现:

    class ChannelAttention(nn.Module):"""Channel attention used in RCAN.Args:num_feat (int): Channel number of intermediate features.squeeze_factor (int): Channel squeeze factor. Default: 16."""def __init__(self, num_feat, squeeze_factor=16):super(ChannelAttention, self).__init__()self.attention = nn.Sequential(nn.AdaptiveAvgPool2d(1),nn.Conv2d(num_feat, num_feat // squeeze_factor, 1, padding=0),nn.ReLU(inplace=True),nn.Conv2d(num_feat // squeeze_factor, num_feat, 1, padding=0),nn.Sigmoid())def forward(self, x):y = self.attention(x)return x * yclass CAB(nn.Module):def __init__(self, num_feat, compress_ratio=3, squeeze_factor=30):super(CAB, self).__init__()self.cab = nn.Sequential(nn.Conv2d(num_feat, num_feat // compress_ratio, 3, 1, 1),nn.GELU(),nn.Conv2d(num_feat // compress_ratio, num_feat, 3, 1, 1),ChannelAttention(num_feat, squeeze_factor))def forward(self, x):return self.cab(x)
    
  • 在每一个RHAG的最后引入一个Overlapping Cross-Attention Block (OCAB),直接建立跨窗口的连接,同时增强窗口自注意力的表达能力。实现方式仍是基于W-MSA,只是在窗口划分时,Q的窗口是正常的无overlap的窗口,窗口大小为MM,而K和V的窗口大小是M0M0, M0=(1+gamma)*M, gamma是用于控制重叠大小的参数。虽然窗口的大小不一样,但是窗口的数量是相同的,一一对应的。

      Q shape: (nums_of_windows, M*M, emb_dims)K shape: (nums_of_windows, M0*M0, emb_dims)V shape: (nums_of_windows, M0*M0, emb_dims)QK.T shape: (nums_of_windows, M*M, M0*M0)因此得到的结果仍是 (nums_of_windows, M*M, emb_dims),但其过程中获取了跨窗口的信息,因为OCA的key和value是从更大的区域中计算得到的,因此更多有用的信息将被query查询到;
    
    • 预训练

      使用Imagenet进行X4预训练,再在DF2K上进行finetune, 发现很有效,预训练的效果取决于数据的量级和多样性;同时,作者指出充分的iteration和合适的小学习率对于预训练来说非常重要;

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

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

相关文章

通过OCR实现纯数字识别

基于飞浆paddle训练框架 照这个改的 https://www.paddlepaddle.org.cn/documentation/docs/zh/practices/cv/image_ocr.html 训练不到10分钟 10epoch cpu:inter i5 8250 U 脚本生成的图10000 验证训练:3:7 预测结果 chatgpt写的代码,生成数…

PLC_博图系列☞基本指令“异或“运算

PLC_博图系列☞基本指令“异或“运算 文章目录 PLC_博图系列☞基本指令“异或“运算背景介绍X:“异或”运算说明参数示例真值表 关键字: PLC、 西门子、 博图、 Siemens 、 异或 背景介绍 这是一篇关于PLC编程的文章,特别是关于西门子的…

shell脚本实现Mysql分库分表备份

一.数据库的分库分表? 12张图把分库分表讲的明明白白!阿里面试:我们为什么要分库分表https://mp.weixin.qq.com/s?__bizMzU0OTE4MzYzMw&mid2247547792&idx2&sn91a10823ceab0cb9db26e22783343deb&chksmfbb1b26eccc63b784879…

PCIE1—快速实现PCIE接口上下位机通信(一)

1.简介 PCI Express(PCIE)是一种高速串行总线标准,广泛应用于计算机系统中,用于连接主板和外部设备。在FPGA领域中,PCIE也被广泛应用于实现高速数据传输和通信。FPGA是一种灵活可编程的集成电路,可以根据需…

猫头虎分享已解决Bug || Web服务故障:WebServiceUnavailable, HTTPServerError

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

ubuntu常见配置

ubuntu各个版本的安装过程大差小不差,可以参考,ubuntu20.04 其它版本换一下镜像版本即可 安装之后需要配置基本的环境,我的话大概就以下内容,后续可能有所删改 sudo apt-get update sudo apt-get install gcc sudo apt-get inst…

vulnhub靶场之Deathnote

一.环境搭建 1.靶场描述 Level - easy Description : dont waste too much time thinking outside the box . It is a Straight forward box . This works better with VirtualBox rather than VMware 2.靶场下载 https://www.vulnhub.com/entry/deathnote-1,739/ 3.启动环…

网络安全“降本增笑”的三大帮手

在网络安全这个快速变化和危机四伏的领域中,通过使用正确的工具和方法,我们可以在工作中取得更高的效率,并降低相关成本。 雷池社区版 雷池社区版—开源Web应用防火墙。这款产品凭借强大的规则引擎,它允许用户自定义安全策略&…

洛谷p1002过河卒

[NOIP2002 普及组] 过河卒 题目描述 棋盘上 A A A 点有一个过河卒,需要走到目标 B B B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C C C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为…

三防平板丨三防工业平板电脑丨三防平板电脑有哪些优势?

三防平板电脑通常使用特殊材料和制造工艺来达到防水、防尘、防摔的目的,这样可以在极端条件下使用,并保证设备的稳定性和可靠性。因此,三防平板电脑适用于各种恶劣环境,如户外野营、物流、工业制造等应用场景。那么相比于普通消费…

Pregnostic®–PE IIp ELISA,用于测量人源ESM-1水平

Pregnostic PE Pregnostic是由IQ Products公司开发的重点关注女性健康的产品线。其中的Pregnostic -PE项目,旨在开发有助于筛查孕期先兆子痫风险的产品,可用于区分早发性和晚发性先兆子痫。 ESM-1 内皮细胞特异性分子(ESM-1)&am…

BabylonJS 6.0文档 Deep Dive 动画(一):动画介绍

1. 动画介绍 无论动画如何实现,它都必须考虑所需的动作、时间、产生所需流动性所需的帧数以及序列中的关键点。这个介绍应该有助于理解Babylon.js是如何进行动画的,以及它们是如何实现的。 动画由一系列图像、帧生成,这些图像、帧一个接一个地…

【Spring底层原理高级进阶】基于Spring Boot和Spring WebFlux的实时推荐系统的核心:响应式编程与 WebFlux 的颠覆性变革

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《Spring 狂野之旅:底层原理高级进阶》 &#x1f680…

QT_day2

1.思维导图 2.使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin"&#xff…

幻兽帕鲁1.4.1单机畅玩教程

文章目录 游戏简介游戏背景游戏玩法资源安装和配置教程游戏包的下载和安装Steam客户端下载和配置 毕业存档使用教程第一步:个人存档备份第二步:毕业存档导入 游戏简介 Palworld:一款由日本独立游戏工作室Pocketpair制作发行的动作角色扮演游…

LaunchPad 市场的复苏,Penpad 成新兴生力军

以 Fair Launch 为主要启动方式的铭文市场的爆发,推动了 LaunchPad 市场的复苏,绝多数所铭文项目都能通过 Fairr Launch 的方式筹集资金实现启动,该赛道的爆发不仅推动了数百亿美元的热钱开始在链上不断涌动,同时也进一步形成了新…

【xss跨站漏洞】xss漏洞利用工具beef的安装

安装环境 阿里云服务器,centos8.2系统,docker docker安装 前提用root用户 安装docker yum install docker 重启docker systemctl restart docker beef安装 安装beef docker pull janes/beef 绑定到3000端口 docker run --rm -p 3000:3000 janes/beef …

JS实现根据数组对象的某一属性排序

JS实现根据数组对象的某一属性排序 一、冒泡排序(先了解冒泡排序机制)二、根据数组对象的某一属性排序(引用sort方法排序) 一、冒泡排序(先了解冒泡排序机制) 以从小到大排序为例,冒泡排序的原…

【EI会议征稿通知】第十届能源材料与环境工程国际学术会议(ICEMEE 2024)

第十届能源材料与环境工程国际学术会议(ICEMEE 2024) 2024 10th International Conference on Energy Materials and Environment Engineering 随着前9年的成功,ICEMEE在2024年迎来了第10届。很荣幸地宣布,第十届能源材料与环境…

【rust】vscode下rust-analyzer和Rust Test Lens的Lens

背景 一个粉丝问: 我编辑的launch.json为什么只在按F5的时候工作 按这个debug按钮就不工作? 那在哪改这个插件的配置文档?我一直用的F5 今天上午才注意到这个问题,比如怎么改程序的命令行参数,我意思是如果我非要用…