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

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

  • 1 背景
    • 1.1 问题
    • 1.2 提出的方法
  • 2 创新点
  • 3 方法
  • 4 模块
    • 4.1 混合注意力模块(HAB)
    • 4.2 重叠交叉注意力模块(OCAB)
    • 4.3 同任务预训练
  • 5 效果
    • 5.1 消融实验
    • 5.2 和SOTA方法对比

论文:https://arxiv.org/pdf/2205.04437

代码:https://github.com/xpixelgroup/hat

1 背景

1.1 问题

虽然Transformer based的超分模型效果比CNN好,但是原因还是不得而知。一个直观的解释是,这种网络可以受益于自注意力机制并利用远距离信息。

因此作者采用归因分析方法LAM来考察SwinIR中用于重建的信息所涉及的范围,发现SwinIR并没有比基于CNN的方法在超分辨率上利用更多的输入像素,如图2所示。
在这里插入图片描述

此外,虽然SwinIR获得了更高的量化性能,但由于使用的信息范围有限,在一些样本中产生了不如RCAN的结果,这些现象说明Transformer对局部信息的建模能力更强,但其利用信息的范围还有待扩大。作者还发现在SwinIR的中间特征会出现块状伪影,如图3所示。论证了平移窗口机制无法完美实现跨窗信息交互。
在这里插入图片描述

1.2 提出的方法

为了解决上述问题,进一步挖掘Transformer在超分辨率重建中的潜力,本文提出了一种混合注意力Transformer,即 HAT。

  • HAT结合了通道注意力和自注意力机制,以利用前者获取全局信息的能力和后者强大的表征能力。

  • 此外,引入重叠交叉注意力模块,以实现相邻窗口特征更直接的交互,受益于这些设计,模块可以激活更多的像素重建,从而获得更显著的性能提升。

2 创新点

  • 设计了一种新颖的混合注意力Transformer( Hybrid Attention Transformer,HAT ),将自注意力、通道注意力和一种新的重叠交叉注意力相结合,以激活更多的像素,从而更好地进行重建。

  • 提出了一种有效的同任务预训练策略来进一步挖掘SR Transformer的潜力,并表明了大规模数据预训练对于该任务的重要性。

  • 方法达到了最先进的性能。通过进一步扩展HAT构建大模型,极大地扩展了SR任务的性能上界。

3 方法

在这里插入图片描述

整体网络由3部分组成,包括浅层特征提取、深层特征提取和图像重建。对于给定的低分辨率输入 I L R ∈ R H × W × C i n I_{LR}∈R^{H×W×C_{in}} ILRRH×W×Cin,首先利用一个卷积层来提取浅层特征 F 0 ∈ R H × W × C F_0∈R^{H×W×C} F0RH×W×C,其中 C i n C_{in} Cin C C C 是输入图像和中间特征的通道数。然后利用一系列残差混合注意力组 RHAG 和一个 3×3 卷积层 H C o n v ( ⋅ ) H_{Conv}(·) HConv() 进行深度特征提取。之后,使用一个全局残差来融合浅层特征 F 0 F_0 F0 和深层特征 F D ∈ R H × W × C F_D∈R^{H×W×C} FDRH×W×C,在最后通过重建模块对高分辨率结果进行重建,如图4。

4 模块

4.1 混合注意力模块(HAB)

如图2中所示,当采用通道注意力时,更多的像素被激活,因为全局信息参与计算通道注意力权重。此外,还有很多工作表明卷积可以帮助Transformer获得更好的视觉表示或实现更简单的优化。因此,作者在标准Transformer块中融入基于通道注意力的卷积块来增强网络的表达能力。

如图4所示,在第一个Layer Norm层后的标准Swin Transformer块中并联一个通道注意力模块CAB,该模块与基于窗口的多头自注意力模块W-MSA并联,在连续的HAB块中,间隔使用基于移动窗口的自注意力模块SW-MSA。为了避免CAB和MSA在优化和可视化表达上可能存在冲突,在CAB的输出上乘以一个较小的常数 α \alpha α。对于给定的输入特征 X X X,整个HAB的计算过程如下:
在这里插入图片描述

其中 X N X_N XN X M X_M XM 表示中间特征。 Y Y Y 表示HAB的输出。将每一个像素看作是一个块的嵌入的token。给定输入特征 H × W × C H×W×C H×W×C,现将其划分成 H W M 2 \frac{HW}{M^2} M2HW 个尺寸为 M × M M×M M×M 的局部窗口,然后在每个窗口内部计算自注意力:
在这里插入图片描述

其中 d d d 表示 query 和 key 的维度。 B B B 表示相对位置编码。作者发现扩大窗口大小可以显著的扩大使用像素的范围,于是使用了一个大的窗口大小来计算自注意力。同时为了建立相邻非重叠窗口之间的联系,作者还是用窗口移动划分方法,并将窗口移动大小设置为窗口大小的一半。

CAB由两个带有GELU激活的标准卷积层和一个通道注意力模块组成,如图4所示。由于基于Transformer的结构往往需要较多的嵌入,直接使用宽度不变的卷积会产生较大的计算开销,所以作者使用一个常数 β \beta β 来压缩两个卷积层将通道数。对于一个具有 C C C 个通道的输入特征,将第一个卷积层后的输出特征的通道数压缩为 C β \frac{C}{\beta} βC。然后通过第二层将输出通道扩展为 C C C。其次,利用一个标准的CA模块自适应的缩放通道特征。

4.2 重叠交叉注意力模块(OCAB)

在这里插入图片描述

作者引入OCAB直接建立跨窗口连接,增强窗口自注意力的表示能力。OCAB类似于一个标准的Swin Transformer,由一个重叠交叉注意力层OCA和MLP层组成。但是对于OCA,如图5所示,作者使用不同的窗口大小对投影后的特征进行划分。具体来说,对于输入特征 X X X X Q , X K , X V ∈ R H × W × C X_Q,X_K,X_V∈R^{H×W×C} XQ,XK,XVRH×W×C X Q X_Q XQ 被划分成大小为 M × M M×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×M_o Mo×Mo H W M 2 \frac{HW}{M^2} M2HW 个重叠窗口,其计算公式为:
在这里插入图片描述

其中 γ \gamma γ 是控制重叠尺寸的常数。为了更好的理解这个操作,标准的窗口划分可以为认为是一个滑动划分,其核大小和步长都等于窗口大小 M M M,相比之下,重叠窗口划分可以看做是一个滑动划分,其核大小等于等于 M o M_o Mo,而步长等于 M M M。窗口超出的尺寸采用补零的方式来填充。计算注意力矩阵的方式同式2,同样采样相对位置偏差 B 属于 R M × M o B属于R^{M×M_o} B属于RM×Mo。与WSA不同的是,WSA的query,key和value都是通过相同窗口特征的计算得到,而OCA从更大的视野中计算key和value,query可以利用更多有用的信息。

4.3 同任务预训练

预训练在许多高级视觉任务上被证明是有效的。最近的工作也证明了预训练对低级视觉任务是有益的。IPT 强调使用各种低级任务,如去噪、去雨、超分辨率等,而EDT则利用特定任务的不同退化程度进行预训练。这些工作集中于考察针对某一目标任务的多任务预训练的效果。相比之下,作者基于同样的任务直接在更大规模的数据集(即ImageNet )上进行预训练,表明预训练的有效性更依赖于数据的规模和多样性。例如,当我们想要训练一个× 4 SR的模型时,我们首先在ImageNet上训练一个× 4 SR的模型,然后再对其进行微调,如在DF2K上。所提出的策略,即同任务预训练,更简单的同时带来更多的性能提升。值得一提的是,足够的训练迭代次数进行预训练和合适的小学习率进行微调对于预训练策略的有效性非常重要。我们认为这是由于Transformer需要更多的数据和迭代次数来学习任务的一般性知识,但需要较小的学习率进行微调,以避免对特定数据集的过拟合。

5 效果

5.1 消融实验

不同窗口尺寸的消融实验和可视化效果对比。
在这里插入图片描述
在这里插入图片描述

提出的OCAB和CAB模块的消融实验和可视化效果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同任务预训练策略消融实验的效果。
在这里插入图片描述
在这里插入图片描述

5.2 和SOTA方法对比

和SOTA方法的指标对比。
在这里插入图片描述

和SOTA方法的可视化效果对比。
在这里插入图片描述

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

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

相关文章

制作gif动图并穿插到CSDN文章中

一、下载LICEcap软件 安装包放在文章末尾 二、双击运行 会出现一个透明框,可以通过左下角的Size来修改画布大小,也可以直接拖动来调整 把透明框拖至自己想放置的位置 点击record进行录制,点击stop暂停,录制完成后给自己的gif图…

新160个crackme - 093-kesan

运行分析 需破解用户名和注册码 PE分析 Delphi程序,32位,无壳 静态分析&动态调试 ida找不到字符串,根据Delphi程序逻辑,双击进入cls_Unit1_TForm1查找 向下翻找后发现4个事件,逐个分析 动调_TForm1_Edit1Change函数…

自己开发得期货资管模拟软件演示1.0.15版仅供学习

期货资管模拟软件演示1.0.15版仅供学习——C技术栈知识分享 本文将以期货资管模拟软件演示1.0.15版为例,分享其基于C技术栈的框架知识。 一、C技术栈在期货交易软件开发中的应用 C作为一种高性能的编程语言,以其强大的内存管理能力和高效的执行速度&a…

详解:字符串常量池

字符串常量池是Java运行时环境(JRE)的一部分,它用于存储字符串字面量。字符串字面量是源代码中直接用双引号括起来的字符串,例如"hello"。在Java中,字符串是不可变的,这意味着一旦创建了一个字符…

三次样条插值算法及推导过程

目录 1、定义 2、已知条件求解 3、具体推导 4、matlab案例 5、案例结果 6、matlab仿真 1、定义 给定 n 1 n1 n1个数据点,共有 n n n个区间,三次样条方程 S ( n ) S(n) S(n)满足以下条件:在每个分段区间内 ( x i , x i 1 ) (x_i,x_{i1}) (…

[数据结构从小白到大牛]第五篇:3分钟带你吃透双链表并用C语言模拟实现

目录 1->前言 2->链表的概念和结构 2.1链表概念 2.2->带头双向循环链表结构 3->模拟实现带头双向循环链表 3.1定义链表结点 struct ListNode 3.2创建链表结点 CreateLTNode 函数 3.3链表初始化函数 ListInit函数 3.4链表打印函数 ListPrint函数 3.5链表…

Rancher的安装

1. 概览 1.1 用户界面优势 Rancher 提供了一个直观的图形用户界面(GUI)。对于不熟悉 Kubernetes 复杂的命令行操作(如使用kubectl)的用户来说,通过 Rancher 的界面可以方便地进行资源管理。例如,用户可以在…

【办公类-04-04】华为助手导出照片视频分类(根据图片、视频的文件名日期导入“年-月-日”文件夹中,并转移到“年-月”文件中整理、转移到“年”文件夹中整理)

背景需求 最近带班,没有时间整理照片,偶尔导一次,几个月的照片。发现用电脑版“华为手机助手“中的WLAN连接”与华为手机的“华为手机助手”连接,速度更快、更稳定,不会出现数据线连接时碰碰就断网的问题 1、先打开电…

CDGP|企业数据治理流程全解析

在当今信息化时代,数据已成为企业最重要的资产之一。为了充分发挥数据的价值,企业需要对数据进行全面、系统的治理。企业数据治理流程是一套确保数据质量、安全性和合规性的规范化流程,涵盖了从数据采集到销毁的全过程。本文将详细介绍一般企…

学习threejs,将多个网格合并成一个网格

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Geometry 几何体1.2 …

Linux 线程控制

一. 线程互斥 1.1 线程互斥相关概念 临界资源:多线程执行流共享的资源就叫做临界资源。临界区:每个线程内部,访问临界资源的代码,就叫做临界区。互斥:任何时刻,互斥保证有且只有一个执行流进入临界区&…

Centos安装ZooKeeper教程(单机版)

本章教程介绍,如何在Centos7中,安装ZooKeeper 3.9.3版本。 一、什么是ZooKeeper ? Apache ZooKeeper 是一个分布式协调服务,用于大型分布式系统中的管理和协调。它为分布式应用提供了一个高性能的通信框架,简化了开发人员在构建复杂分布式系统的任务。ZooKeeper 能够解决一…

企业CRM管理系统PHP源码/PHP客户关系CRM客户管理系统源码

系统功能实现 1、 公海管理:公海类型、客户公海。 2、 线索管理:我的线索、线索列表、线索状态、线索来源。 3、 客户管理:我的客户、客户列表、成交客户、行业类别、预查、地区列表、客户状态、客户级别。 4、 业绩订单:订单列表、我的订单。 5、 系统设置:系统设置…

设置JAVA以适配华为2288HV2服务器的KVM控制台

华为2288HV2服务器比较老旧了,其管理控制台登录java配置比较麻烦,华为的ibmc_kvm_client_windows客户端测试了几个版本,连接控制台也有问题,最终安装JDK解决。 一、测试环境 主机为WindowsServer2012R2,64位系统 二、Java软件包…

10大软件使用感受分享,数据恢复的得力助手!!

在找数据恢复软件?!是不是存在误删重要文件或遭遇硬盘故障,想要找回丢失的数据?别担心,今天我就来给大家分享10款我亲自使用过的数据恢复软件,分别给你说说它们各自的优缺点,希望能帮你们在数据…

一周模电速成(3) 超详细!入门小白速成!!!

目录 稳压二极管 整流二极管 晶体三极管 三极管结构图 三极管的特点 1、如何让它工作在放大状态呢 2、如何工作在截止状态呢? 3、如何让三极管工作在饱和状态呢? 在电路中要如何实现呢?工作在各个状态有什么特点呢? 截止…

Python的条件语句if与match...case

一、定义 条件语句,也叫作选择语句、判断语句。根绝特定条件判断是否成立,执行不同的语句段。简单来说,满足条件执行,不满足不执行。 条件语句是使用关键字 if 做判断,根据不同情况结合不同的关键字else 或者 elif来…

SpringBoot基础系列学习(二):日志

文章目录 一丶日志控制台介绍二丶日志的用法三丶日志级别四丶配置文件参数及介绍五丶slf4j 一丶日志控制台介绍 只要引用了spring-boot-starter依赖,就无需引入日志依赖,里面自带了logging依赖,默认情况下,springBoot使用Logback来记录日志,并用INFO级别输出到控制台 二丶日…

Bert模型介绍

简介 BERT(Bidirectional Encoder Representations from Transformers)是一个基于Transformer的双向编码器表示模型,它通过预训练学习到了丰富的语言表示,并可以用于各种自然语言处理任务。 模型结构:BERT基于Transf…