【论文阅读】ESRT-Transformer for Single Image Super-Resolution

news2024/9/21 18:49:33

ESRT-Transformer for Single Image Super-Resolution

  • 论文地址
  • 摘要
  • 1. 引言
  • 2.相关工作
    • 2.1 基于 CNN 的 SISR 模型
    • 2.2 Vision Transformer Transformer
  • 3. Efficient Super-Resolution Transformer
    • 3.1. Lightweight CNN Backbone (LCB)
    • 3.2. High-frequency Filtering Module (HFM)
      • 3.2.1 自适应残差特征块(ARFB)
    • 3.3. Lightweight Transformer Backbone (LTB)
      • 3.3.1 Pre- and Post-processing for ET
      • 3.3.2 Efficient Transformer(ET)

论文地址

1、论文地址
2、论文源码

摘要

随着深度学习的发展,单图像超分辨率(SISR)取得了长足的进步。然而,大多数现有研究都侧重于构建具有大量层的更复杂的网络。最近,越来越多的研究人员开始探索 Transformer 在计算机视觉任务中的应用。但是,vision Transformer计算成本高、GPU显存占用高等问题也不容忽视。在本文中,我们提出了一种用于 SISR 的新型高效超分辨率变压器 (ESRT)。 ESRT 是一种混合模型,由轻量级 CNN 骨干网 (LCB) 和轻量级变压器骨干网 (LTB) 组成。其中,LCB 可以动态调整特征图的大小,以较低的计算成本提取深层特征。 LTB 由一系列 Efficient Transformers (ET) 组成,由于专门设计的 Efficient Multi-Head Attention (EMHA),它占用的 GPU 内存很小。大量实验表明,ESRT 以低计算成本取得了有竞争力的结果。与占用 16,057M GPU 内存的原始 Transformer 相比,ESRT 仅占用 4,191M GPU 内存。所有代码均可在 https:/github.com/luissen/ESRT 上获得。

1. 引言

单图像超分辨率(SISR)旨在从其退化的低分辨率(LR)对应物中恢复超分辨率(SR)图像,这是克服许多应用中分辨率限制的有用技术。然而,它仍然是一个不合适的问题,因为存在无限的HR图像。为了解决这个问题,已经提出了许多深度神经网络[10,13,18,21,22,26,39,40,45]。尽管这些方法取得了出色的性能,但由于计算成本高,它们无法在实际应用中轻松使用。和记忆存储。为了解决这个问题,已经提出了许多循环网络和轻量级网络,例如 DRCN [19]、SRRFN [23]、IMDN [16]、IDN [17]、CARN [2]、ASSLN [46]、MAFFSRN [31] ],和 RFDN [27]。所有这些模型都专注于构建更高效的网络结构,但网络容量的减少会导致性能不佳。

如图1所示,相同颜色的框内部区域彼此相似。因此,这些相似的图像块可以相互作为参考图像,从而可以使用参考块来恢复某个块的纹理细节。受此启发,我们将 Transformer 引入到 SISR 任务中,因为它具有很强的特征表达能力,可以对图像中的这种长期依赖性进行建模。换句话说,我们旨在探索在轻量级 SISR 任务中使用 Transformer 的可行性。近年来,一些 Vision-Transformer [11, 28] 被提出用于计算机视觉任务。然而,这些方法往往占用大量的GPU内存,极大地限制了它们的灵活性和应用场景。此外,这些方法不能直接转移到 SISR,因为图像恢复任务通常需要较大分辨率的图像作为输入,这将占用大量内存。

为了解决上述问题,提出了一种高效的超分辨率变压器(ESRT)来增强- 增强 SISR 网络捕获长距离上下文相关性的能力,同时显着降低 GPU 内存成本。值得注意的是,ESRT 是一种 hy-brid 架构,它使用“CNN+Transformer”模式来处理小型 SR 数据集。具体来说,ESRT可以分为两部分:Lightweight CNN Backbone(LCB)和Lightweight Transformer Backbone(LTB)。对于LCB,我们更多地考虑减少中间层特征图的形状并保持较深的网络深度以确保较大的网络容量。受高通滤波器的启发,我们设计了一个高频滤波模块(HFM)来捕捉图像的纹理细节。借助 HFM,提出了一种高保留块 (HPB),通过大小变化有效地提取潜在特征。对于特征提取,提出了一种强大的自适应残差特征块(ARFB)作为基本特征提取单元,能够自适应调整残差路径和身份路径的权重。在 LTB 中,提出了一种高效的 Transformer(ET),它使用专门设计的 Efficient Multi-Head Attention(EMHA)机制来降低 GPU 内存消耗。值得注意的是,EMHA 只考虑局部区域图像块之间的关系,因为 SR 图像中的像素通常与其相邻像素相关。尽管它是局部区域,但它比常规卷积要宽得多,可以提取更有用的上下文信息。因此,ESRT可以有效地学习相似局部块之间的关系,使超分辨区域具有更多的参考。

主要贡献如下
• 我们提出了一种轻量级 CNN 主干 (LCB),它使用高保留块 (HPB) 动态调整特征图的大小,以低计算成本提取深度特征。
• 我们提出了一个Lightweight Transformer Backbone (LTB) 在专门设计的 Efficient Transformer (ET) 和 Efficient Multi-Head Attention (EMHA) 机制的帮助下捕获图像中相似块之间的长期依赖关系。
• 一种称为Efficient SR Transformer (ESRT) 的提出是为了有效增强图像中相似块的特征表达能力和长期依赖性,从而以较低的计算成本获得更好的性能。

2.相关工作

2.1 基于 CNN 的 SISR 模型

最近,已经为 SISR 提出了许多基于 CNN 的模型。例如,SRCNN [10] 首先将深度 CNN 引入 SISR 并取得了可喜的结果。 EDSR [26] 通过删除不必要的操作和扩展模型大小来优化残差块。 RCAN [44] 提出了一个具有残差结构和通道注意机制的深度残差网络。SAN [9] 提出了一个二阶注意网络来增强特征表达和特征相关性学习。 IDN [17] 通过使用组卷积并结合短期和长期特征来压缩模型大小。 IMDN [16] 改进了 IDN 的体系结构并引入了信息多蒸馏块以有效地提取层次特征。 LatticeNet [29] 设计了模拟快速傅里叶变换实现的点阵块,采用蝴蝶结构。尽管这些模型取得了有竞争力的结果,但它们是纯基于 CNN 的模型。这意味着它们只能提取局部特征而不能学习全局信息,不利于纹理细节的恢复。

2.2 Vision Transformer Transformer

在 NLP 中的突破引起了计算机视觉界的极大兴趣。 Transformer 的核心思想是“self-attention”,它可以捕获序列元素之间的长期信息。通过在视觉任务中采用 Transformer,它已成功应用于图像识别 [11,24,36]、目标检测 [7、47] 和低级图像处理 [8、41]。其中,ViT [11] 是第一个用 Transformer 代替标准卷积的工作。为了生成序列元素,ViT 将 2D 图像块展平为一个向量,并将它们送入 Transformer。 IPT [8] 使用一种新颖的基于 Transformer 的网络作为低级图像恢复任务的预训练模型。 SwinIR [25] 将 Swin Transformer [28] 引入 SISR,并展示了 Transformer 在 SISR 中的巨大潜力。尽管这些方法取得了可喜的结果,但它们需要大量的训练数据,并且需要大量的 GPU 内存来训练模型,不适合实际应用。因此,我们的目标是为 SISR 探索一种更高效的视觉转换器。

3. Efficient Super-Resolution Transformer

在这里插入图片描述

如图2所示,高效超分辨率变换器(ESRT)主要由四个部分组成:浅层特征提取、轻量级CNN主干(LCB)、轻量级变换器主干(LTB)和图像重建。将ILR和ISR分别定义为ESRT的输入和输出。首先,我们利用卷积层从ILR中提取浅层特征
在这里插入图片描述
其中 fs 表示浅层特征提取层。F0 是提取的浅层特征,然后用作具有多个高保留块 (HPB) 的 LCB 输入

在这里插入图片描述

其中 ⇣n 表示第 n 个 HPB 的映射,Fn 表示第 n 个 HPB 的输出。HPB的所有输出都连接起来,与几个高效变压器(ET)一起发送到LTB,以融合这些中间特征
在这里插入图片描述

其中Fd是LTB的输出,xx代表ET的操作。最后,Fd和F0被同时送入重建模块,以获得SR图像ISR
在这里插入图片描述

其中f和fp分别表示卷积层和PixelShuffle层。

3.1. Lightweight CNN Backbone (LCB)

轻量级CNN骨干网(LCB)的作用是提前挖掘潜在的SR特征,使模型具有超分辨率的初始能力。根据图2,我们可以观察到LCB主要由一系列高保鲜块(HPB)组成。

High Preserving Block (HPB).以前的SR网络通常在处理过程中保持特征图的空间分辨率不变。在这项工作中,为了降低计算成本,提出了一种新的高保存块(HPB)来降低处理特征的分辨率。然而,特征图尺寸的减小总是会导致图像细节的丢失,从而导致SR图像异常不自然。为了解决这个问题,在HPB中,我们创造性地保留了高频滤波模块(HFM)和自适应残差特征块(ARFB)。
在这里插入图片描述

如图3所示,首先使用ARFB提取Fn-1作为HFM的输入特征。然后,使用HFM计算特征的高频信息(标记为Phigh)。获得Phigh后,我们减小特征图的大小,以减少计算成本和特征冗余。下采样的特征图表示为 Fn-1’.对于 Fn-1’,使用多个 ARFB 来探索完成 SR 图像的潜在信息。值得注意的是,这些 ARFB 共享权重以减少参数。同时,使用单个 ARFB 处理 Phigh 以将特征空间与 Fn-1’ 对齐。特征提取后,Fn-1’通过双线性插值上采样到原始大小。之后,我们将F’n-1与P’high融合以保留初始细节并获得特征F’'n-1。此操作可以表示为
在这里插入图片描述

其中,向上和向下分别表示上采样和下采样操作。fa 表示 ARFB 的运作。为了在模型大小和性能之间实现良好的权衡,我们根据消融研究在此部件中使用了五个 ARFB,并将其定义为 fa5o
对于 F’'n-1,由于它由两个特征连接,因此使用 1x1 卷积层来减少通道数。然后,采用通道注意力模块[14]突出显示具有高激活值的通道。最后,利用ARFB提取最终特征,并提出全局残差连接将原始特征Fn-1添加到Fn中。此操作的目标是从输入中学习残差信息并稳定训练

3.2. High-frequency Filtering Module (HFM)

在这里插入图片描述

由于傅里叶变换难以嵌入CNN中,因此提出了一种可微分HFM。HFM的目标是从LR空间估计图像的高频信息。如图 4 所示,假设输入特征映射 TL 的大小为 C x H x W,则首先将平均池化层应用于 TL
在这里插入图片描述

其中 k 表示池化层的内核大小,中间特征映射 TA 的大小为 C x H/k x W/k 。TA中的每个值都可以看作是TL的每个指定小区域的平均强度。之后,对 TA 进行上采样以获得大小为C x H x W的新张量 TU。TU被视为与原始TL相比的平均平滑度信息的表达式。最后,从TL中逐个减去TU以获得高频信息。
TL、TU和高频信息的视觉激活图也如图5所示。可以观察到,TU比TL更平滑,因为它是TL的平均信息。同时,高频信息在下采样之前保留特征图的细节和边缘。因此,保存这些信息至关重要。
在这里插入图片描述

3.2.1 自适应残差特征块(ARFB)

在这里插入图片描述

正如ResNet [12]和VDSR [18]所探讨的,当模型的深度增加时,残差架构可以缓解梯度消失问题并增强模型的再现能力。受其启发,提出了自适应残差特征块(ARFB)作为基础特征提取块。如图 6 所示,ARFB 包含两个残差单元 (RU) 和两个卷积外行。为了节省内存和参数数量,RU 由两个模块组成:缩减和扩展。对于缩减,特征图的通道减少一半并在扩展中恢复。同时,设计了具有自适应权重(RSA)的残差缩放,以动态调整残差路径和身份路径的重要性。与固定残差缩放相比,RSA可以证明梯度的流动,并自动调整输入特征图的残差特征图的一致性。假设 xru 是 RU 的输入,RU 的过程可以表述为:
在这里插入图片描述

其中 yru 是 RU 的输出,fre 和 fex 表示缩减和扩展操作,
在这里插入图片描述 分别是两条路径的两个自适应权重。这两个操作使用1x1卷积层来改变通道数,以实现缩减和扩展的功能。同时,两个RU的输出连接起来,然后连接一个1 x 1卷积层,以充分利用分层特征。最后,采用3x 3卷积层对特征图的通道进行缩减,从融合特征中提取有效信息。

3.3. Lightweight Transformer Backbone (LTB)

在SISR中,图像内相似的图像块可以相互作为参考图像,从而可以参考其他图像块来恢复当前图像块的纹理细节,这是恰当的使用变压器。然而,以前的视觉Transformer变体通常需要沉重的GPU内存成本,这阻碍了Transformer在视觉领域的发展。在本文中,我们提出了一种轻量级变压器主干(LTB)。 LTB由专门设计的高效变压器(ET)组成,能够以较低的计算成本捕获图像中类似局部区域的长期依赖性。

3.3.1 Pre- and Post-processing for ET

标准 Transformer 以一维序列作为输入,学习序列的长距离依赖性。然而,对于视觉任务,输入始终是二维图像。将二维图像转换为一维序列的常用方法是将图像中的像素一一排序。然而,这种方法将失去图像独特的局部相关性,导致次优性能。在 ViT [11] 中,一维序列是由非重叠块划分生成的,这意味着每个块之间没有像素重叠。根据我们的实验,这些预处理方法不适合 SISR。因此,提出了一种新的处理方式来处理特征图。
在这里插入图片描述

如图 7 所示,我们使用展开技术将特征图分割成块,每个块被视为一个“词”。具体来说,特征映射 Fori 2 RC⇥H⇥W 被展开(通过 k ⇥ k 内核)成一系列补丁,即 Fpi 2 Rk2 ⇥C , i = {1, …, N },其中 N = H ⇥ W 是补丁的数量。在这里,由于“展开”操作会自动反映每个补丁的位置信息,因此消除了每个补丁的可学习位置嵌入。之后,这些补丁 Fp 直接发送给 ET。 ET 的输出与输入具有相同的形状,我们使用“折叠”操作来重建特征图。

3.3.2 Efficient Transformer(ET)

在这里插入图片描述

为了简单和高效,与 ViT [11] 一样,ET 仅使用编码器结构标准变压器。如图 8 所示,在 ET 的编码器中,有一个 Efficient Multi-Head Attention (EMHA) 和一个 MLP。同时,在每个块之前采用层归一化[4],并且在每个块之后也应用残差连接。假设输入embeddings是Ei,输出embeddings Eo可以通过
Em1 =​​ EMHA(Norm(Ei)) + Ei, Eo =MLP(Norm(Em1))+Em1得到,
在这里插入图片描述

其中Eo是ET的输出,EMHA (·)和MLP(·)分别代表EMHA和MLP操作。

Efficient Multi-Head Attention (EMHA)如图 8 所示,与原始 MHA 相比,EMHA 进行了多项修改,使 EMHA 更高效,占用的 GPU 内存成本更低 [37]。假设输入嵌入 Ei 的形状是 B ⇥ C ⇥ N。首先,使用减少层将通道数减少一半(B⇥C1⇥N,C1 = C2)。之后,采用线性层将特征图投影为三个元素:Q(查询)、K(键)和 V(值)。在 Transformer 中,我们线性投射 Q、K、V 和 mtimes 来执行多头注意力。 m 是头数。接下来对三个元素的形状reshapeK,V直接用大规模矩阵乘法计算self-attention,耗费内存大。假设 Q 和 K 计算形状为 B ⇥ m ⇥ N ⇥ N 的自注意力矩阵。然后这个矩阵用 V 计算自注意力,第 3 维和第 4 维是 N ⇥ N。对于SISR,图像通常具有高分辨率,导致N非常大,自注意力矩阵的计算消耗了大量的GPU内存成本和计算成本。为了解决这个问题,使用特征分割 (FS) 模块将 Q、K 和 V 分成 s 个相等的段,分割因子为 s,因为超分辨率图像中的预测像素通常仅取决于局部相邻区域LR。因此,最后一个自矩阵的第 3 维和第 4 维为 Ns ⇥ Ns,这可以显着降低计算和 GPU 内存成本。将这些段表示为 Q1、…、Qs、K1、…、Ks 和 V1、…、Vs。这些段的每个三元组分别应用缩放点积注意 (SDPA) 操作。 SDPA的结构也如图8所示,只是省略了M ask操作。之后,SDPA的所有输出(O1,O2,…,Os)连接在一起以生成整个输出特征O。最后,扩展层用于恢复通道数。

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

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

相关文章

(十一)Servlet教程——Request请求转发

1.Web应用在处理客户端的请求的时候,一般的时候都需要多个资源协同处理,比如先经过一个Servlet的处理,然后再经过另外一个Servlet的处理。但是在一个Servlet中又不能直接调用另外一个Servlet的service方法,所以Servlet就提供了请求…

c++ primer plus(2)

前言 延续上一讲的内容,今天来写一写这本书的第三章:处理数据 好吧,本次博客仍然是总结重点内容 简单变量 在本书中变量有三个属性 1信息存储在什么地方 2要存储什么 3存储类型 比如 int braincount; braincount5; 这两行代码体现了…

找不到mfc140u.dll文件如何处理?这三种方法帮你快速修复mfc140u.dll

当你的电脑出现提示,显示找不到mfc140u.dll文件,从而无法继续执行代码,你需要知道如何应对这种情况。今天我们就来详细说明如何解决mfc140u.dll文件丢失的问题,并对该文件进行详细分析。这个文件是Microsoft Visual Studio的一个重…

Vue从入门到精通-01-Vue的介绍和vue-cli

MVVM模式 Model:负责数据存储 View:负责页面展示 View Model:负责业务逻辑处理(比如Ajax请求等),对数据进行加工后交给视图展示 关于框架 为什么要学习流行框架 1、企业为了提高开发效率:…

idea的插件,反编译整个jar包

idea的插件,反编译整个jar包 1.安装插件1.1找到插件1.2 搜索插件 2.反编译整个jar包2.1 复制jar包到工件目录下:2.2 选中jar包,点出右键 3.不用插件,手动查看某一个java类3.1 选中jar包,点出右键 1.安装插件 1.1找到插…

VPN的基本概念

随着互联网的普及和应用的广泛,网络安全和隐私保护越来越受到人们的关注。在这个信息爆炸的时代,我们的个人信息、数据通信可能会受到各种威胁,如何保护自己的隐私和数据安全成为了一个迫切的问题。而VPN(Virtual Private Network…

用Jenkins Gerrit-Trigger插件实现提交gerrit后自动启动编译验证

说明:如果没有gerrit-trigger,说明缺少插件,先安装插件即可。 步骤 1.在Jenkins首页点击Manage Jenkins 2.点击Gerrit Trigger 3.配置gerrit服务器 下图是已配置好的gerrit服务器,配置完毕记得点击status下面的按钮进行测试服务…

Linux学习之路 -- 进程篇 -- 自定义shell的编写

前面介绍了进程程序替换的相关知识&#xff0c;接下来&#xff0c;我将介绍如何基于前面的知识&#xff0c;编写一个简单的shell&#xff0c;另外本文的所展示的shell可能仅供参考。 目录 <1>获取用户的输入和打印命令行提示符 <2>切割字符串 <3>执行这个…

网络安全的防护措施有哪些?

1. 安全策略和合规性 2. 物理和网络安全 3. 数据加密 4. 软件和系统更新 5. 访问控制 6. 威胁监测和响应 7. 员工培训和安全意识 8. 备份和灾难恢复 零基础入门学习路线 视频配套资料&国内外网安书籍、文档 网络安全面试题 网络安全的防护措施多种多样&#xff0c…

openssl3.2 - exp - 使用默认的函数宏,在release版中也会引入__FILE__

文章目录 openssl3.2 - exp - 使用默认的函数宏&#xff0c;在release版中也会引入__FILE__概述笔记验证是否__FILE__在release版下也能用&#xff1f;将openssl编译成release版的&#xff0c;看看CRYPTO_free()是否只需要一个参数就行&#xff1f;将工程中的openssl相关的库换…

Vue---组件

Vue—组件 目录 Vue---组件定义组件全局组件局部组件 组件通讯***重点***父子通信之父传子&#xff08;props&#xff09;父子通信之子传父&#xff08;$emit&#xff09;ref属性&#xff08;$refs&#xff09; 动态组件插槽命名插槽 定义组件 全局组件 vue2中template只能传…

2.Neo4j的搭建启动

Graph Database 图数据库 版本对应关系 官网都是高版本&#xff0c;推荐使用下载地址可以找到社区老版本&#xff1a; https://we-yun.com/doc/neo4j/ neo4j.bat 启动脚本 cypher-shell.bat 执行CQL语句的。 import文件夹可以放入excel,csv等数据文件&#xff0c;导入到…

IMU/捷联惯导常见的术语,以及性能评价标准(附Python解析代码)

0. 简介 现在的机器人领域在普遍使用IMU&#xff08;惯性导航单元&#xff09;。该系统有三个加速度传感器与三个角速度传感器&#xff08;陀螺&#xff09;组成&#xff0c;加速度计用来感受飞机相对于地垂线的加速度分量&#xff0c;陀螺仪用来感知飞机的角速率变化&#xff…

服务器被CC攻击怎么办

遇到CC攻击时&#xff0c;可采取以下措施&#xff1a;限制IP访问频率、启用防DDoS服务、配置Web应用防火墙、增加服务器带宽、使用负载均衡分散请求压力。 处理服务器遭遇CC攻击的方法如下&#xff1a; 1. 确认攻击 你需要确认服务器是否真的遭受了CC攻击&#xff0c;这可以…

基于单片机的多功能电子万年历系统

摘要:该题目要求学生综合运用单片机原理、低频电子线路、数字电路与逻辑设计等相关知识,设计完成多功能电子万年历系统。通过完成设计任务,使学生掌握单片机设计开发的基本流程,增强学生动手实践能力,培养学生分析和解决实际问题的能力,为后续课程的学习和工作打下良好基础。 关…

张大哥笔记:我付钱了,我就是大爷?

很抱歉用这个当做标题&#xff0c;来给大家分享一些电商的故事&#xff01;大家好&#xff0c;我是张大哥&#xff0c;今天聊聊在电商路上遇到过的奇葩买家&#xff1f; 比如最近我在做PDD的时候&#xff0c;就会遇到很多莫名其妙的sha子&#xff0c;咱是知识份子&#xff0c;肯…

Excel vlookup函数的使用教程 和 可能遇到的错误解决方法

使用VLOOKUP示例 被查询的表格 表一 A列B列C列A1aB2bC3c 要匹配的列 表二 F列G列H列ACBDA 要G列匹配字母&#xff0c;H列匹配数字 G 使用公式VLOOKUP(F5,A:D,3,0) 参数说明 F5 是表二 F列第五行的A A:D表是要匹配的数据列表在A到D列&#xff0c;就是表一 &#xff08;注意…

go 安装软件报go.mod file not found

执行 go get -u github.com/go-sql-driver/mysql 下载mysql 报错 解决方法: 控制台&#xff1a;输入go env 返回如下&#xff1a; 红圈值为NUL&#xff0c;需要设置GOMOD的值, 然后再控制台执行 &#xff08;1&#xff09;mkdir mod (2)go mod init mod 然后再执行下载&…

Linux逻辑方式合并物理磁盘

在日常生活中&#xff0c;我们总是遇到一个文件太大&#xff0c;以至于我们的两个磁盘都装不下&#xff0c;这时我们就需要将两块物理磁盘逻辑化的连接在一起&#xff0c;把物理磁盘使用逻辑化的方法合并在一起&#xff0c;形成卷组&#xff0c;使得磁盘空间可以公用&#xff1…

【idea】idea 中 git 分支多个提交合并一个提交到新的分支

一、方法原理讲解 我们在 dev 分支对不同的代码文件做了多次提交。现在我们想要把这些提交都合并到 test 分支。首先我们要明白四个 git 操作&#xff0c; commit&#xff1a;命令用于将你的代码变更保存到本地代码仓库中&#xff0c;它创建了一个新的提交&#xff08;commit…