SUNet: Swin Transformer UNet for ImageDenoising

news2024/11/24 2:00:28

Abstract

图像恢复是一个具有挑战性的不适定问题,也是一个长期存在的问题。在过去的几年中,卷积神经网络(cnn)几乎主导了计算机视觉,并在不同层次的视觉任务中取得了相当大的成功,包括图像恢复。然而,最近基于Swin transformer的模型也表现出了令人印象深刻的性能,甚至超过了基于cnn的方法,成为高级视觉任务的最先进的技术。在本文中,我们提出了一个名为SUNet的恢复模型,它使用Swin Transformer层作为我们的基本块,然后应用到UNet体系结构中进行图像去噪。源代码和经过训练的模型可以在https://github.com/FanChiMao/SUNet上找到。

I. INTRODUCTION

图像恢复是一种重要的底层图像处理方法,可以提高目标检测、图像分割和图像分类等高级视觉任务的性能。在一般的恢复任务中,损坏的图像Y可以表示为:

 其中X为干净图像,D(.)为退化函数,n为加性噪声。一些常见的恢复任务是去噪、去模糊和块化。

传统的图像恢复方法通常是基于算法的,称为基于先验或基于模型的方法,如BM3D[1]、WNNM[2]进行去噪;反卷积[3],图像优先于[4]去模糊。虽然大多数基于卷积神经网络(CNN)的方法已经取得了很好的性能[5]-[10],但朴素卷积层存在一些问题。首先,卷积核与图像是内容无关的。使用相同的卷积核来恢复不同的图像区域可能不是最好的解决方案[11],[12]。其次,因为卷积内核可以被看作是一个小的patch,其中获取的特征是局部信息,也就是说,在我们进行远程依赖建模时,会丢失全局信息。虽然在一些论文中提出了自适应卷积[13]、[14]、非局部卷积[15]、全局平均池化[16]等方法来克服这些缺陷,但直到Swin Transformer的出现才有效地解决了这些问题。

最近,[11]提出了一种新的基于transformer的骨干网——Swin transformer,并在图像分类方面取得了令人印象深刻的性能。此外,在越来越多的计算机视觉任务中,包括图像分割[11]、[17]-[19]、物体检测[11]、嵌绘[20]、超分辨率[12]、[21],使用Swin Transformer作为骨干已经超越了基于cnn的方法,达到了最先进的水平。在本文中,我们也将Swin Transformer作为我们的主要骨干,并将其集成到名为SUNet的UNet架构中,用于图像去噪。

总体而言,本文的主要贡献可归纳如下:

  • 我们提出了一种基于图像分割Swin-UNet模型的Swin Transformer网络,用于图像去噪。
  • 我们提出了一种双上采样块架构,其包括子像素和双线性上采样方法以防止棋盘伪影。实验结果表明,该方法优于原来的转置卷积上采样方法。
  • 据我们所知,我们的模型是第一个将Swin Transformer和UNet纳入去噪的模型。
  • 我们在两个常见的图像去噪数据集中展示了我们的SUNet的竞争结果。

II. RELATED WORK

随着硬件的快速发展(例如基于学习的方法在执行速度和性能上都击败了传统的基于模型的方法。在本节中,我们首先将介绍以前关于去噪的工作。然后,我们将描述UNet和Swin Transformer的相关工作。

A. Image Restoration

如前所述,传统的图像恢复方法是基于图像先验或通常称为基于模型的方法的算法,例如自相似性[1],[22],备用编码[23],[24]和全变差[25]。这些方法在解决不适定问题上的性能是可以接受的,但也存在一些缺点,如耗时、计算量大、难以恢复复杂的图像纹理等。与传统的复原方法相比,基于学习的方法,特别是卷积神经网络(CNN),由于其令人印象深刻的性能,已经成为包括图像复原在内的计算机视觉领域的主流。

B. UNet

目前,UNet [5]是许多图像处理应用中众所周知的架构,因为它具有分层特征映射以获得丰富的多尺度上下文特征。此外,它使用编码器和解码器之间的跳跃连接来增强图像的重建过程。UNet广泛用于许多计算机视觉任务,如分割,恢复[9],[26]。此外,它还有各种改进版本,如Res-UNet [27],Dense-UNet [28],Attention UNet [29]和Non-local UNet [30]。由于强大的自适应骨干,UNet可以很容易地应用于不同的提取块,以提高性能。

C. Swin Transformer

Transformer[31]模型在自然语言处理(NLP)领域取得了成功,在图像分类[32]、[33]方面也具有与cnn相当的性能。然而,直接将转换器用于视觉任务的两个主要问题是:1)图像与序列的尺度差异较大。由于需要一维序列参数的平方倍左右,transform存在长序列建模的缺陷。2) Transformer不擅长解决实例分割等密集的预测任务,这是一个像素级任务[34]。而Swin Transformer[11]通过移动窗口来降低参数,解决了上述问题,并在大量像素级视觉任务中取得了目前最先进的性能。

III. PROPOSED METHOD

A. SUNet

本文提出的Swin Transformer UNet (SUNet)的架构基于图像分割模型[19],如图1所示。SUNet由三个模块组成:1)浅层特征提取;2) UNet特征提取;3)重建模块。

 

 

 

 B. Swin Transformer Block

在UNet提取模块中,我们使用STB代替传统的卷积层,如图2所示。STL[11]是基于NLP原始的Transformer层[31]。STL的个数总是2的倍数,其中一个是窗口型多头自我注意(W-MSA),另一个是移窗型多头自我注意(SWMSA)。正如在第II-C节中提到的,在CV任务中直接使用Transformer存在一些问题。因此,他们提出循环移位技术,以减少计算时间,并保持卷积的特性,包括接收场与层之间关系的平移不变性、旋转不变性和大小不变性。由于页面的限制,我们在本文中没有解释SW-MSA的原理以及它可以减少多少计算复杂度。但我们想强调Swin Transformer的一个关键属性(即,我们可以像卷积运算一样控制输出特性的分辨率(H,W)和通道数(C))。以图2(b)为例,整个过程表示为:

 其中LN(.)表示层归一化,MLP为多层感知器,具有两个全连通层,具有高斯误差线性单元(GELU)激活函数。

C. Resizing module

由于UNet具有不同尺度的特征图,因此需要调整大小模块(如下采样和上采样)。在我们的SUNet中,我们使用patch merge和提出的双上样本分别作为下采样和上采样模块。

Patch merging.

对于下采样模块,我们按照[11],[19]将每组2 × 2相邻patch的输入特征串接起来,然后利用线性层得到指定的输出特征通道数。我们也可以把这看作是做卷积运算的第一步,也就是展开输入的特征图。

Dual up-sample.

对于上采样,原来的Swin-UNet[19]采用的是patch展开方法,相当于上采样模块的转置卷积。然而,转置卷积很容易面对块效应。在这里,我们提出了一个名为dual up-sample的新模块,它由两个现有的上样方法(即Bilinear和PixelShuffle[35])组成,以防止棋盘伪像。所提出的上采样模块的结构如图3所示。

 IV. EXPERIMENTS

我们将我们的SUNet与基于先验的方法(如CBM3D[38])、基于cnn的方法(如DnCNN[6]、IrCNN[10]、FFDNet[7])和基于UNet的方法(如UNet[5]、DHDN[8]、RDUNet[9])进行了比较。图4为图像去噪后[39]、[40]结果的视觉比较。在表1中,我们对去噪后的图像进行了客观的质量评价[41]-[43],观察到以下三点:1)我们的SUNet具有有竞争力的SSIM值,因为Swin-Transformer是基于全局信息的,这使得去噪后的图像在感知上更加可信。2)与基于unet的方法(DHDN、RDUNet)相比,所提出的SUNet在三种模型中参数(↓60%)、FLOPs(↓3%)均较低,在PSNR和SSIM上均保持较高的分数。3)与基于cnn的方法(DnCNN、IrCNN、FFDNet)相比,我们的PSNR和SSIM结果最好,FLOPs几乎相同。虽然我们的模型的参数最大(99M),但这是由于自注意操作不能共享核的权值造成的。然而,更合理的是,不同层中的特性应该使用不同的内核值,正如我们在第1节中讨论的那样。

V. CONCLUSION

本文提出了基于Swin Transformer新骨干的SUNet架构,并在去噪方面取得了较好的效果。此外,我们提出了双上样例模块,以避免棋盘效应。现在说Swin Transformer可以取代卷积还为时过早。然而,Swin Transformer的潜力在未来仍然值得期待。我们未来的工作将尝试更复杂的恢复任务,如真实世界的噪音和真实世界的模糊,而模型仍然基于Swin-Transformer层。

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

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

相关文章

权限验证框架之Shiro

文章目录 前言shiro 核心项目构建默认Session模式配置测试接口Realm编写权限测试无权限测试登录测试权限测试 前后端分离tokenJWTFilter重写认证修改配置 总结 前言 交替换个脑子,一直搞考研的东西,实在是无聊。所以顺便把工程上的东西,拿来…

软件测试面试大全(全800+题)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,维护成本低,但是个性化能力低,响应速度较慢 C/S响应速度快,安全性强,一般应用于局域网中&#xff0c…

C++ [STL之list模拟实现]

本文已收录至《C语言和高级数据结构》专栏! 作者:ARMCSKGT STL之list模拟实现 前言正文基本框架节点类迭代器类list类 迭代器类功能实现list迭代器迭代器设计思想迭代器操作设计 list类功能实现默认成员函数容量查询数据访问节点插删相关头尾插删任意位置…

MySQL数据库索引的种类、创建、删除

目录 一:MySQL 索引 1、MySQL 索引介绍 2、 索引的作用 3、索引的副作用 4、 创建索引的原则依据 二、索引的分类和创建 1、 普通索引 (1) 直接创建索引 (2) 修改表方式创建 (3) 创建表的…

【Turfjs】几何计算,计算地理空间上点坐标的经纬度,距离,围成的闭合空间面积等工作,都可以通过Turfkjs来实现

​​​​​​Turf.js中文网 几何计算: 1. 前端js就用这个 Turfjs的类库。参考网站: 计算两线段相交点 | Turf.js中文网 2. 后端java语言就可以用 JTS这个类库,参考网站:https://locationtech.github.io/jts/ https://github.com…

MVCC和undo log

MVCC多版本并发控制 MVCC是多版本并发控制(Multi-Version Concurrency Control,简称MVCC),是MySQL中基于乐观锁理论实现隔离级别的方式,用于实现已提交读和可重复读隔离级别的实现,也经常称为多版本数据库…

面向对象接口

生活中大家每天都在用 USB 接口,那么 USB 接口与我们今天要学习的接口有什 么相同点呢? 在Java程序设计中的接口 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是/要…则必须 能…”的思想。继承是一个"是不是&…

几款GB28181流媒体平台的详细介绍和使用整理

随着监控行业国标GB28181的应用范围越来越广泛,成熟的GB28181接入平台越来越多,本文梳理一下目前各大成熟的流媒体服务器平台及实际应用效果供各位参考。 1)NTV GBS NTV GBS是一款成熟、功能完善、产品化程度很高的GB28181服务平台,从2022年…

原点安全助力金融机构消费者个人信息保护合规

数字经济的发展进一步加速了金融业务与生活场景之间的融合,数亿民众在享受金融数字化便利服务的同时,也更容易遭受个人信息泄露、权益侵害等事件。在实际业务开展过程中,部分金融机构仍存在各种侵害消费者个人信息权益的乱象。 我国对数据安…

工作经验--产品季节性分析

产品季节性分析 1.了解季节性的重要性2.如何发现季节性产品统计方法:季节性指数法:傅里叶分析法:其他: 1.了解季节性的重要性 产品是否存在季节性变化,对于卖家来说相当重要,旺季提前备货、淡季防止库存冗余…

工业无监督缺陷检测,提升缺陷检测能力,解决缺陷样品少、不平衡等问题(二)

1. 工业缺陷检测简介 在工业生产中,质量保证是一个很重要的话题, 因此在生产中细小的缺陷需要被可靠的检出。工业异常检出旨在从正常的样本中检测异常的、有缺陷的情况。工业异常检测主要面临的挑战: 难以获取大量异常样本正常样本和异常样本差异较小异常的类型不能预先得知…

UNITY3D回合制游戏开发教程案例

UNITY3D实现回合制游戏 ,类似梦幻西游,口袋妖怪,阴阳师。 先上效果 UNITY3D 回合制游戏案例源码开发教程 普通攻击 AOE技能 游戏概述 回合制游戏是一种策略游戏,玩家需要在自己的回合内进行决策,然后等待对手的回合…

redis学习 -- 常用指令

应用场景 String :缓存,限流,计数器,分布式锁,分布式session Hash:存储y用户信息,用户主页访问量,组合查询 List:关注人时间轴列 Set:点赞,标签&…

【在人间】关于网吧的记忆

高考完的暑假当了两个月夜班的网管,挣得一台小米6,也见识了不少社会人。 乡镇网吧,店里有老虎机,挣的钱比网吧一晚上收入多得多,最狠的一次有人一下输了3000个币(一个币一块钱),半夜喊老板下楼哭爹喊娘的要…

Docker:启动,停止,删除

1.启动一个容器: docker run 可选参数 镜像名 [COMMAND] [ARG...] docker run -it ubuntu /bin/bash ,启动一个使用ubuntu的docker,并使用/bin/bash做为dcoker中执行的命令。 其中818d5a1c32ac为容器ID 在宿主机上,可以通过docker ps查看容器的状态: 启动容器时常用的可选…

程序员疯抢的 Java 面试宝典(PDF 版)限时开源

Java 面试 2023 届高校毕业生规模预计 1076 万人,同比增加 367 万人,对于 23 届的同学们来说,今年下半年大规模进行的秋招是获得全职 Offer 的最重要的途径!对于程序员来说,大家都知道校招难度相对于社招来说会有所降…

解析 HashMap 源码:深入探究核心方法的实现与原理

前言数据结构类属性构造方法核心方法阈值:tableSizeFor插入元素:put树化:treeifyBin扩容:resize获取元素:get删除元素:remove遍历元素:keySet、entrySet 方法 总结 前言 一切的源头从类注释开始…

【Java se】集合——迭代器(Iterator接口)的实现原理

目录 一、迭代器的应用——遍历集合 步骤1:通过集合获取迭代器 步骤2:使用while循环 案例展示: 二、跟踪源代码 #1. 通过集合获取迭代器 #2. 通过成员方法next( ) 获取每一个集合元素对象 #3. 通过成员方法hasNext( )判断是否进行下一次…

计算机组成原理 | 理解二进制编码

二进制的转换 二进制——> 十进制: 从右到左的第 N 位,乘上一个 2 的 N 次方,然后加起来,就变成了一个十进制数例如二进制数:0011,对应的十进制表示,就是 0 2 3 0 2 2 1 2 1 1 2 0…

阿里云斩获 4 项年度云原生技术服务优秀案例

日前,在 ICT 中国2023 高层论坛-云原生产业发展论坛上,由阿里云容器服务提供技术支持的 “数禾科技”和“智联招聘” 两大案例以及阿里云云原生 AI 套件、云原生 FinOps 成本分析套件两大产品技术方案,共同获得 2023 年度云原生应用实践先锋—…