HAT(CVPR 2023):Hybrid Attention Transformer for Image Restoration

HAT

论文地址:HAT: Hybrid Attention Transformer for Image Restoration

代码地址:XPixelGroup/HAT: CVPR2023 - Activating More Pixels in Image Super-Resolution Transformer

摘要

​ 通过归因分析attribution analysis method - Local Attribution Map (LAM),发现目前基于Transformer的方法只能来利用有限的输入空间信息。这意味着 Transformer 的潜力在现有网络中仍未得到充分利用。为了激活更多的输入像素以获得更好的恢复,提出了一种新的混合注意Transformer(HAT)。它结合了通道注意力和基于窗口的自注意力机制,从而利用了它们的互补优势。此外,为了更好地聚合窗口之间信息,引入了一个重叠的交叉注意模块来增强相邻窗口特征之间的交互。在训练阶段,采用了相同的任务预训练策略来进一步利用模型的潜力进行进一步改进。

现阶段问题

  1. SwinIR 比基于 CNN 的方法(例如 RCAN [10])在某些场景利用的输入像素更少
  2. 在 SwinIR 的中间特征中会出现阻塞伪影。这表明移位窗口机制不能完美地实现跨窗口信息交互。

主要贡献

  1. 提出了一种混合注意力 Transformer,即 HAT。结合通道注意和自注意力机制,以利用前者transformer使用全局信息的能力(激活更多像素)和后者Self-attention强大的representative ability
  2. 引入了一个overlapping的注意力窗口模块来实现相邻窗口特征的更直接的交互,减少阻塞伪影产生。

网络框架

2023-11-22_10-03-02

HAB模块

采用标准Swin Transformer块的类似结构,并再其中融入了Channel Attention。

  • 增加window size大小为16,扩大窗口感受野,因为根据实验,限制窗口大小能节省计算成本,单通过移位窗口逐步增加感受野,却牺牲了自注意力机制的表征能力。
  • 引入通道注意力机制,会激活更多像素,因为其涉及利用全局信息计算,有利于对纹理部分的优化。

overlapping window partition

​ 我们的 OCA 与 Multi-resolution Overlapped Attention (MOA) 根本不同。MOA 使用窗口特征作为token计算全局注意力,而 OCA 使用像素token计算每个窗口特征内的交叉注意力。

​ 为什么不全部使用OCA,因为全部使用这种模块会不可避免带来大量计算负担,采用有限数量的OCA可以有效增加窗口之间的交互。

2023-11-22_10-18-02

qkv = self.qkv(x).reshape(b, h, w, 3, c).permute(3, 0, 4, 1, 2) # 3, b, c, h, w
q = qkv[0].permute(0, 2, 3, 1) # b, h, w, c
kv = torch.cat((qkv[1], qkv[2]), dim=1) # b, 2*c, h, w# partition windows
q_windows = window_partition(q, self.window_size)  # nw*b, window_size, window_size, c
q_windows = q_windows.view(-1, self.window_size * self.window_size, c)  # nw*b, window_size*window_size, ckv_windows = self.unfold(kv) # b, c*w*w, nw
kv_windows = rearrange(kv_windows, 'b (nc ch owh oww) nw -> nc (b nw) (owh oww) ch',nc=2, ch=c, owh=self.overlap_win_size, oww=self.overlap_win_size).contiguous() # 2, nw*b, ow*ow, c
k_windows, v_windows = kv_windows[0], kv_windows[1] # nw*b, ow*ow, cb_, nq, _ = q_windows.shape
_, n, _ = k_windows.shape
d = self.dim // self.num_heads
q = q_windows.reshape(b_, nq, self.num_heads, d).permute(0, 2, 1, 3) # nw*b, nH, nq, d
k = k_windows.reshape(b_, n, self.num_heads, d).permute(0, 2, 1, 3) # nw*b, nH, n, d
v = v_windows.reshape(b_, n, self.num_heads, d).permute(0, 2, 1, 3) # nw*b, nH, n, dq = q * self.scale
attn = (q @ k.transpose(-2, -1))

结论

​ 在这项工作中,我们提出了一种新的混合注意转换器HAT,用于图像恢复。我们的模型结合了通道注意力和自注意力激活更多像素以进行高分辨率重建。此外,我们提出了一个重叠的交叉注意模块增强跨窗口信息的交互。此外,我们介绍了一种用于图像超分辨率的相同任务预训练策略。广泛的基准和真实世界的评估表明,我们的HAT在几个图像恢复任务上优于最先进的方法

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

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

相关文章

JavaScript中页面位移、大小和位置属性整理

🤞🤞 一、window window 滚动位移属性 window.scroll(X,Y) 滚动数不叠加window.scrollTo(X,Y) 滚动数不叠加window.scrollBy(X,Y) 滚动数叠加window.scrollY / Firefox、Chrome、Opera均支持,IE不支持 忽略DOCTYPE定义规则 window窗口大小…

智能科技企业网站搭建的作用是什么

随着科学技术快速提升,各种智能产品随之而来,每个赛道里都涌入了大量企业商家,有些热门产品更是广受关注,对企业来说,形象、品牌、信息等方面需要完美呈现到用户眼前,而网站无疑是很好的工具。 企业通过【…

lwIP 细节之四:recv 回调函数是何时调用的

使用 lwIP 协议栈进行 TCP 裸机编程,其本质就是编写协议栈指定的各种回调函数。将你的应用逻辑封装成函数,注册到协议栈,在适当的时候,由协议栈自动调用,所以称为回调。 注:除非特别说明,以下内…

element-ui 重置resetFields()不生效

element-ui 重置resetFields()不生效 初始化数据 data() {return {dialogVisible: false,form: {name: ,age: ,sex: ,birth: ,addr: }}}弹窗关闭重置数据 handleClose() {// 弹窗关闭的时候清除数据this.$refs.form.resetFields()this.dialogVisible false }以上操作this.$…

常用whl文件地址整理

文章目录 一、Deep Graph Library(DGL)二、torch torchvision torchaudio三、numpy四、pandas可留言其他whl文件地址,不定期更新 一、Deep Graph Library(DGL) DGL是一个专门用于深度学习图形的Python包, 一款面向图神…

代码随想录算法训练营第50天| 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

JAVA代码编写 123.买卖股票的最佳时机III 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 **注意:**你不能同时参与多笔交易(你必须在再次购买前出…

HDPE硅芯管材具有优异的耐腐蚀性、耐磨损性和耐老化性

HDPE硅芯管材作为一种优质的管道材料,具有许多突出的性能。其中,其优异的耐腐蚀性、耐磨损性和耐老化性是其主要特点之一。 首先,HDPE硅芯管材具有出色的耐腐蚀性。它的高密度聚乙烯(HDPE)材料具有良好的耐腐蚀性能&a…

2023快速上手新红利项目:短剧分销推广CPS

短剧分销推广CPS是一个新红利项目,对于新手小白来说也可以快速上手。 以下是一些建议,帮助新手小白更好地进行短剧分销推广CPS: 学习基础知识:了解短剧的基本概念、制作流程和推广方式。了解短剧的市场需求和受众群体&#xff0c…

Django视图

一、url路由 自上而下的,如果匹配的路由中是包含int转换器,则不能匹配其他的不是int的相关字符,譬如文字等; 自定义路由转换器: 1、创建一个converter.py的文件; 2、再写一个类: class FourDig…

安卓手机上的软件的安装

本文主要介绍以下怎么在adb下安装软件。 一、首先还是要有安装包。 二、在adb链接上手机之后,使用adb install "软件包绝对路径“ 进行软件的安装。 如果出现问题,可以逐个排除 1.如果adb shell进入后发现可以连上,那就说明手机已经…

使用 std::vector 和 std::pair 管理二维点对

赋值 向 matched_indices 赋值意味着在这个向量中添加 std::pair<int, int> 类型的元素。每个元素都是一个包含两个整数的对。这可以通过使用 push_back 方法实现&#xff1a; matched_indices.push_back(std::make_pair(1, 2)); // 添加一个元素&#xff0c;其中包含一…

STM32F030C8读取CS1237采集模拟

STM32F030C8读取CS1237采集模拟 Chapter1 【问题解决记录】STM32F030C8读取CS1237采集模拟问题描述原因分析&#xff1a;解决方案&#xff1a; Chapter2 CS1237 STM32控制程序以及原理图需要注意事项 Chapter1 【问题解决记录】STM32F030C8读取CS1237采集模拟 原文链接&#x…

【技术分享】常见VLAN部署方式

VLAN部署方式&#xff1a; 第一种End-to-End VLAN&#xff08;端到端VLAN&#xff09; 全局部署的VLAN&#xff0c;VLAN信息可以扩展到整个网络&#xff08;换句话说就是每台交换机上VLAN信息一致&#xff09; 将用户分组到与物理位置无关的VLAN中&#xff1b;如果用户在园区…

第7章:深度剖析知识图谱中的知识推理:方法与应用探究

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

《算法通关村——回溯模板如何解决回溯问题》

《算法通关村——回溯模板如何解决回溯问题》 93. 复原 IP 地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 "192.1…

【活动回顾】ABeam News | 兰州大学外国语学院回访ABeam 旗下德硕管理咨询(上海),持续推进远景合作

访企拓岗深入调研 持续推进远景合作 继11月上旬ABeam旗下艾宾信息技术开发&#xff08;西安&#xff09;团队一行拜访兰州大学并举行隆重的校企签约仪式后&#xff0c;近日兰州大学一行领导也如约莅临德硕管理咨询&#xff08;上海&#xff09;有限公司开展拓岗调研。 深化…

线上业务优化之案例实战

本文是我从业多年开发生涯中针对线上业务的处理经验总结而来&#xff0c;这些业务或多或少相信大家都遇到过&#xff0c;因此在这里分享给大家&#xff0c;大家也可以看看是不是遇到过类似场景。本文大纲如下&#xff0c; 后台上传文件 线上后台项目有一个消息推送的功能&#…

从零开发短视频电商 使用Jsoup进行HTML爬取解析与操作

文章目录 简介原理依赖基础示例功能解析和遍历文档输入从字符串中解析文档从 URL 加载文档从文件加载文档 数据提取使用 DOM 方法导航文档使用 CSS 选择器查找元素使用 XPath 选择器查找元素和节点从元素中提取属性、文本和 HTML 清理HTML 官网&#xff1a; https://jsoup.org…

实物+3D动画展示离心式过滤器的工作原理 #雨水收集#雨水过滤

产品规格型号 规格型号&#xff1a;LLLXGL-100、LLLXGL-150、LLLXGL-200、LLLXGL-300

第一届古剑山ctf-pwn全部题解

1. choice 附件&#xff1a; https://github.com/chounana/ctf/blob/main/2023%E7%AC%AC%E4%B8%80%E5%B1%8A%E5%8F%A4%E5%89%91%E5%B1%B1pwn/choice.zip 漏洞代码&#xff1a; 漏洞成因&#xff1a; byte_804A04C输入的长度可以覆盖nbytes的值&#xff0c;导致后面输入时存…