【论文阅读笔记】Split frequency attention network for single image deraining

1.论文介绍

Split frequency attention network for single image deraining
用于单幅图像去噪的分频注意力网络
Paper Code
2023年 SIVP

2.摘要

雨纹对图像质量的影响极大,基于数据驱动的单图像去噪方法不断发展并取得了巨大的成功。然而,传统的卷积神经网络只能隐式地对频域特征进行建模,而离散余弦变换(DCT)可以看作是对频域特征的显式建模。因此,我们提出了一种分裂频率注意力,以改善内部相关性的输入特征在频域的DCT。我们选择前K个低频分量作为DCT层的输出,在频域恢复出高质量的图像,而分裂机制使网络聚焦于信息丰富的区域,保持了恢复图像细节的保真度。在几个数据集上的实验表明,我们的方法取得了更好的结果比最近的最先进的方法。

Keywords:频域,去噪,图像恢复

3. Introduction

雨条纹降低了从相机捕获的图像,大多数高级别的户外视觉任务需要清晰的图像,并且由于下雨场景,这些方法通常表现不佳。因此,研究者们提出了许多处理降雨图像的算法。大多数方法忽略了图像的结构信息,并且由于不能保持图像细节和结构的保真度而破坏了纹理细节。由于分裂注意力通过对输入特征图进行分裂和分类,使网络专注于具有丰富信息的区域。分裂注意力通过改善输入特征的内部相关性,保持了图像细节的保真度和图像结构的一致性。因此,我们采用了分裂注意力的方法来恢复降雨图像。

综上所述,我们提出了一个分裂频率的注意力网络用于单图像去噪。首先,我们提出了一个分裂频率注意(SFA),以改善内部相关性的输入特征在频域的DCT。在此基础上提出了一种分裂频率注意块(SFAB)算法,从图像的丰富信息区域中提取特征,使恢复后的图像保持了图像细节和结构的保真度。最后,提出了一种分裂频率注意组(SFAG)级联的端到端网络,恢复雨图像。

4.网络结构介绍

网络结构如下图,主要包含四个模块:预处理模块、分裂频率注意力特征提取、动态特征增强(DFE)模块和重建模块。预处理模块包含一个3 × 3卷积层和两个下采样层,大大降低了GPU的内存消耗。使用分裂频率注意组来提取深度特征。然后利用两个DFE模块融合更多的空间信息,增强了变换能力。对称地,重建模块包含两个上采样层和一个3 × 3卷积层,用于恢复特征的大小和输出恢复的图像。mixup操作用于连接下采样层和上采样层。
在这里插入图片描述

频域学习

根据二维离散余弦变换(DCT),频谱可按下式计算:在这里插入图片描述
其中 x ∈ R H × W x ∈ R^{H×W} xRH×W表示输入,H和W分别是输入的高度和宽度。基函数 B h , w i , j B^{i,j}_{h,w} Bh,wi,j为:
在这里插入图片描述
相应地,可以通过下式从频谱f中恢复x:
在这里插入图片描述
如果假设h、w =0,则:
在这里插入图片描述
f 0 , 0 d c t f^{dct}_{0,0} f0,0dct表示2D DCT的最低频率分量,并且它与全局平均池化(GAP)成比例。

当使用GAP时,仅保留最低频率信息。将GAP推广到2D DCT的更多频率分量,并使用2D DCT的多个频率分量压缩更多信息。设X为输入特征图,分配2D DCT分量来压缩通道注意力的结果,并定义:
在这里插入图片描述
[ui vi ]是对应于X的频率分量2D索引,并且Freqi是压缩向量。在信道注意之后,DCT层的输出被定义为:
在这里插入图片描述
其中sigmod是激活函数,fc表示诸如一维卷积或全连接层的映射函数,并且Freq是具有不同2D DCT分量的整个压缩向量:
在这里插入图片描述
其中K是前K个低频分量,根据先前的工作,低频分量更适合CNN。

就是介绍了一下二维离散余弦变换和逆变换:
在这里插入图片描述
然后根据频域信号,只提取低级特征,即i=0、1、……K-1的信号,把它们连接在一起然后形成Freq。

分离的网络

由于受感受野的限制,CNN缺乏交互性和相关性,所以提出了一种分裂网络,通过对特征进行分裂和分类来提高输入特征的内部相关性,并从信息丰富的区域中提取特征,使恢复后的图像保持图像细节和结构的保真度。在分裂网络和频率关注度的基础上,设计了一种基本的分块分裂频率关注度(SFA)来构建去盲网络。

分频注意
如下图所示,在SFA中,输入特征图沿通道轴沿着分成m个部分。以 X ∈ R W × H × C X ∈ R^{W×H×C} XRW×H×C为输入特征图,利用3 × 3卷积得到 X 1 ∈ R W × H × C 1 X_1 ∈ R^{W×H×C_1} X1RW×H×C1,其中C1=mC,然后利用逐元素求和运算融合这些分裂。跨多个分裂的元素求和可以融合组合表示。

然后将融合特征f ∈ RW×H×C通过一个DCT层得到X2 ∈ RW×H× C,然后采用两个1 × 1卷积层得到X3 ∈ RW×H×C和X4 ∈ RW×H×C1,然后使用r − softmax操作增强来自丰富区域的信息,然后将特征再次分类为m个分裂。然后将每个分裂乘以前一个分裂,最后再次使用逐元素求和运算以获得输出特征。结构如下:
在这里插入图片描述

分裂频率注意块(SFAB)是基于SFA设计的。SFAB由若干个1 × 1卷积层、批归一化(BN)、校正的线性激活函数(ReLU)和SFA。
在这里插入图片描述

使用跳过连接来增强细节信息。然后利用SFAB和SFA建立分裂频率注意群(SFAG)。在SFAG中,输入特征被分成两条路径,一条是SFA,另一条是几个SFAB,两个结果融合生成输出:
在这里插入图片描述
其中G(·)由几个SFAB和一个3×3卷积层组成。
在这里插入图片描述

动态特征增强

通常,在卷积层中使用固定网格内核。具有固定网格内核的卷积不能提取结构化信息。提出了具有动态和灵活内核的可变形卷积以利用结构化信息。两个可变形卷积层被用作动态特征增强(DFE),以从丰富区域捕获更重要的信息。

混接

在浅层中捕获的低级特征可以通过短连接传递到更深层,并且可以增强图像的细节信息。但是深度网络表现出了不受欢迎的行为,如鲁棒性和记忆,并且提出了一种mixup操作。混淆很简单,它可以增加神经网络的鲁棒性我们应用mixup来连接下采样层和上采样层,并且下采样层中的细节信息可以与更深的上采样层中捕获的高级特征融合。第二下采样层的输出与第一上采样的输出混合,并且第一下采样层的输出与第二上采样的输出混合。混合操作定义为:
在这里插入图片描述
其中fmix是输出,α是在训练期间学习的参数,f↓是来自下采样层的特征,f↑表示来自上采样层的特征图。

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

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

相关文章

C/C++动态链接库的封装和调用

1 引言 静态链接库是在编译时被链接到程序中的库文件,在编译时,链接器将静态链接库的代码和数据复制到最终的可执行文件中。动态链接库是在程序运行时加载的库文件,在编译时,可执行文件只包含对动态链接库的引用,而不…

外贸网站文章批量生成器

随着全球贸易的不断发展,越来越多的企业开始关注外贸市场,而拥有高质量的内容是吸引潜在客户的关键之一。然而,为外贸网站生产大量优质的文章内容可能是一项耗时且繁琐的任务。因此,外贸网站文章批量生成软件成为了解决这一难题的…

remote: GitLab: LFS objects are missing(pre-receive hook declined)

Git push 遇到错误: remote: GitLab: LFS objects are missing. Ensure LFS is properly set up or try a manual "git lfs push --all". To http://192.168.x.x/xxxxxx.git! [remote rejected] dev -> dev (pre-receive hook declined) error: faile…

语音识别:whisper部署服务器(远程访问,语音实时识别文字)

Whisper是OpenAI于2022年发布的一个开源深度学习模型,专门用于语音识别任务。它能够将音频转换成文字,支持多种语言的识别,包括但不限于英语、中文、西班牙语等。Whisper模型的特点是它在多种不同的音频条件下(如不同的背景噪声水…

做跨境用哪种代理IP比较好?怎么选到干净的IP?

代理IP对于做跨境的小伙伴来说,都是必不可少的工具,目前出海的玩法已经是多种多样,开店、账号注册、短视频运营、直播带货、网站SEO等等都是跨境人需要涉及到的业务。而国外代理IP的获取渠道非常多,那么做跨境到底应该用哪种代理I…

linux开机启动设置方法

开机启动最简单的方法是在/etc/rc.local启动脚本中写入需要执行的命令。另一种方式是在/etc/init.d中编写一个启动脚本。但是这两种方式都不是正规的启动模式。init.d是Linux最早的服务管理方案,命令service start xxx就是去调用init.d中的启动脚本。之后init机制被…

蓝桥杯(3.18 刷真题)

P8697 [蓝桥杯 2019 国 C] 最长子序列 AC import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String s1 sc.nextLine();String s2 sc.nextLine();char[] c1 s1.toCharArray();char[] c2 s2.toCh…

使用 Redisson 实现分布式 CountDownLatch,如何使用RCountDownLatch实现内外网数据互通的超时控制?

闭锁(CountDownLatch)是一种用于同步多个线程的机制,它可以让一个或多个线程等待其他线程完成某个任务后再继续执行。 在Java中,RCountDownLatch 是 Redisson 提供的分布式闭锁实现,它基于 Redis 的分布式系统&#x…

基于Spring Boot的研究生志愿填报辅助系统

摘 要 二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多,而在线管理系统刚好能满足这些需求,在线管理系统突破了传统管理方式的局限性。于是本文针对这一…

掌握请求控制权:Axios 如何取消请求的两种方法

在前端开发中,网络请求是非常常见的操作。而有时候,我们可能需要在发送请求后取消它,比如用户在请求还未完成时离开了当前页面或者执行了其他操作,本文将介绍如何在使用 Axios 发送请求时取消这些请求。 基本概念 在 Axios 中&am…

【NLP03-新闻主题分类任务】

新闻主题分类任务 背景 以一段新闻报道中的文本描述内容为输入,使用模型帮助我们判断它最优可能属于哪一种类型的新闻,这是典型的文本分类问题,这里假定每种类型是互斥的,即文本描述有且只有一种类型 新闻主题分类数据 #通过t…

swagger使用手册

1.导入依赖 <!--引入swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><dependency><groupId>io.springfox</…

什么是集成学习

集成学习是一种机器学习方法&#xff0c;目的是将多个基本学习算法组合起来&#xff0c;以达到更好的预测性能。通过将多个模型的预测结果进行加权平均或投票&#xff0c;集成学习能够减少单个模型的偏差和方差&#xff0c;从而提高整体的泛化能力。常见的集成学习方法包括Bagg…

AR/MR产品设计(二):如何用一双手完成与虚拟对象的自然交互

AR/MR产品设计&#xff08;二&#xff09;&#xff1a;如何用一双手完成与虚拟对象的自然交互 - 知乎 手是我们与现实世界交互最重要的方式&#xff0c;同样在虚实混合的世界中是最重要的交互方式 在AR/MR/VR的交互中&#xff0c;手势交互会作为XR的重要交互动作&#xff0c;因…

鸿蒙开发 一 (一)、框架了解

一、UI框架 开发范式名称 语言生态 UI更新方式 适用场景 适用人群 声明式开发范式 ArkTS语言 数据驱动更新 复杂度较大、团队合作度较高的程序 移动系统应用开发人员、系统应用开发人员 类Web开发范式 JS语言 数据驱动更新 界面较为简单的程序应用和卡片 Web前端…

视频技术1:使用ABLMediaServer推流rtsp

ABLMediaServer定位是高性能、高稳定、开箱即用、商用级别的流媒体服务器 下边展示了如何把1个mp3作为输入源&#xff0c;转换为rtsp流的过程。 作用&#xff1a;用rtsp模拟摄像头的视频流 1、启动ABLMediaServer ABLMediaServer-2024-03-13\WinX64\ABLMediaServer.exe 配…

聚类分析 | Matlab实现基于NNMF+DBO+K-Medoids的数据聚类可视化

聚类分析 | Matlab实现基于NNMFDBOK-Medoids的数据聚类可视化 目录 聚类分析 | Matlab实现基于NNMFDBOK-Medoids的数据聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 NNMFDBOK-Medoids聚类&#xff0c;蜣螂优化算法DBO优化K-Medoids 非负矩阵分解&#xff08…

简单来说依赖注入 Unity (c#)

在游戏开发领域,构建引人入胜且组织良好的游戏是最终目标。然而,随着项目复杂性的增加,管理依赖关系和确保代码灵活性可能成为一项艰巨的任务。这就是依赖注入 (DI) 发挥作用的地方。 在本文中,我们将深入 Unity 中的依赖注入世界,探索其概念、优点和实际实现。最后,你将…

代码随想录算法训练营第14天 part02 | 二叉树的递归遍历

递归三要素 确定递归函数的参数和返回值&#xff1a; 确定哪些参数是递归的过程中需要处理的&#xff0c;那么就在递归函数里加上这个参数&#xff0c; 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。 确定终止条件&#xff1a; 写完了递归算法, 运行的时候…

信息学奥赛一本通之MAC端VSCode C++环境配置

前提 安装 Visual Studio CodeVSCode 中安装 C/C扩展确保 Clang 已经安装&#xff08;在终端中输入命令&#xff1a;clang --version 来确认是否安装&#xff09;未安装&#xff0c;在命令行执行xcode-select --install 命令&#xff0c;会自行安装&#xff0c;安装文件有点大…