MambaCSR: 使用SSM的双交错扫描压缩图像超分辨率

2024-08-23 06:44

本文主要是介绍MambaCSR: 使用SSM的双交错扫描压缩图像超分辨率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MambaCSR: Dual-Interleaved Scanning for Compressed Image Super-Resolution With SSMs

2408.11758 (arxiv.org)

GitHub - renyulin-f/MambaCSR: The code source of MambaCSR

摘要

本文提出了MambaCSR,这是一个基于Mamba的简单但有效的框架,用于解决具有挑战性的压缩图像超分辨率(CSR)任务。

尽管Mamba依赖于对所有标记的选择性状态空间建模,但其扫描策略在恢复过程中的有效上下文知识建模方面至关重要。

本文为CSR提出了一种高效的双交错扫描范式(DIS),该范式由两种扫描策略组成:

(i)层次交错扫描,旨在通过同时利用基于局部窗口和顺序扫描的方法,全面捕获和利用图像中最潜在的上下文信息;

(ii)水平到垂直交错扫描,旨在通过减少不同方向扫描之间的冗余来降低计算成本。

为了克服非均匀压缩伪影,还提出了位置对齐的跨尺度扫描来建模多尺度上下文信息。

在多个基准测试上的实验结果表明,MambaCSR在压缩图像超分辨率任务中表现出色。

研究概述

压缩图像超分辨率(CSR)在工业应用和人类生活中逐渐成为一种高级任务,旨在同时去除由压缩和低分辨率造成的严重混合失真。与现有的单图像超分辨率(SISR)相比,CSR表现出更加不均匀和多样化的退化,包括块伪影、振铃效应、颜色漂移等,同时还伴随着关键信息的丢失。CSR的这些特点对现有超分辨率模型的上下文信息建模能力提出了重大挑战。

为了通过框架设计提高上下文建模能力,已经探索了一系列工作。常用的框架通常基于三种典型的网络,包括卷积神经网络(CNN)、Transformer和多层感知机(MLP)。特别是,CNN擅长捕获局部上下文信息,但需要通过增加网络深度来聚合全局上下文信息。相比之下,基于Transformer的工作利用自注意力机制为图像中的标记建立长距离上下文依赖关系,但这需要较大的计算成本。与上述工作不同,类似MLP的工作[25]放弃了复杂的注意力机制,并通过为标记混合器设计良好的策略来成功建模长距离上下文信息,从而显著降低了计算成本。尽管如此,基于Transformer的工作仍然是CSR任务的主流,并提供了最佳性能。这引发了一个关键问题:“是否存在一种新的框架能在CSR任务中超越Transformer的性能?

Mamba,该框架利用选择性状态空间模型(SSM),通过动态决定在扫描轨迹中为每个标记保留多少学习到的知识,从而在建模长距离上下文信息方面表现出色。随后,许多工作成功地将这一创新框架应用于各种视觉领域。得益于SSM的结构,Mamba的计算成本在理论上低于Transformer(O(n log(n)) vs O(n^2)),这缓解了Transformer在低级视觉中的基于窗口的表示学习所受到的限制。凭借上述优势,一些开创性工作已经探索了将Mamba框架应用于低级视觉任务。

然而,上述工作的扫描策略仍然遵循早期的VMamba[30],并依赖于如图1(a)所示的两个水平和垂直扫描轨迹来进行长距离依赖关系的建模,这往往忽略了局部依赖关系的探索。然而,在CSR任务的背景下,多样化和统一化的混合退化对挖掘同一图像内所有标记之间最具信息量的上下文信息提出了很高的要求。因此,对于CSR任务来说,局部依赖关系和长距离上下文信息都至关重要,这促使我们研究如何设计一种扫描策略,以实现Mamba中最全面的上下文建模。

本文提出了MambaCSR,这是第一个基于Mamba的CSR框架,旨在通过我们提出的双交错扫描(DIS)策略来激活Mamba的全面上下文建模能力。通常,如图1(b)所示的基于窗口的扫描已被证明对于Mamba捕获局部依赖关系是有效的。因此,DIS的分层交错扫描被设计为迭代地为MambaCSR应用基于窗口的扫描和基于序列的扫描,旨在同时挖掘局部和长距离的上下文信息。从另一个角度来看,原始的VMamba利用四种扫描轨迹(即两种水平和垂直扫描策略)进行上下文建模。然而,在每个操作的每个标记中,并非所有扫描轨迹都是必要或重要的,因此存在冗余。

为了降低计算成本,本文提出将四种扫描轨迹解耦,并在相邻层中迭代利用两种水平和垂直扫描轨迹,从而实现DIS的水平到垂直交错扫描。通过我们提出的双交错扫描范式,MambaCSR在CSR任务中展现出了出色的上下文建模能力和效率。

为了进一步克服CSR中的非均匀退化问题,为CSR引入了一种位置对齐的跨尺度扫描策略,旨在融合多尺度上下文信息,从而提高非均匀表示能力。值得注意的是,一种简单的方法是扫描降采样图像及其对应原始图像的特征。然而,这种方法忽略了不同尺度间的大多数相关上下文信息通常分布在同一区域。这促使本文首先跨尺度扫描相同位置的标记,然后一起移动两个尺度的扫描窗口。上述扫描策略进一步提高了MambaCSR对CSR中复杂退化的恢复能力。

贡献

1 提出了MambaCSR,这是第一个基于Mamba的CSR任务框架,它引入了双交错扫描(DIS)范式,旨在为MambaCSR激活更全面且高效的上下文信息建模。

2 为了实现DIS范式,提出了(i)分层交错扫描,以融合局部和长距离的上下文信息;(ii)水平到垂直的扫描,以减少不同标记上下文建模的计算冗余。

3 提出了位置对齐的跨尺度扫描策略,以融合多尺度上下文信息,从而消除CSR中的非均匀退化。

4 在各种压缩基准测试上的实验结果表明提出的MambaCSR具有有效性和高效性。

结果

这篇关于MambaCSR: 使用SSM的双交错扫描压缩图像超分辨率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098648

相关文章

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected