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

相关文章

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

Python3中Sanic中间件的使用

《Python3中Sanic中间件的使用》Sanic框架中的中间件是一种强大的工具,本文就来介绍Python3中Sanic中间件的使用,具有一定的参考价值,感兴趣的可以了解一下... 目录Sanic 中间件的工作流程中间件的使用1. 全局中间件2. 路由中间件3. 异常处理中间件4. 异步中间件5. 优先级

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage