【论文笔记】FFA-Net: Feature Fusion Attention Network for Single Image Dehazing

在这里插入图片描述

文章目录

  • 1. 研究背景
  • 2. FFA - Net网络结构
  • 3. 实验结果
  • 4. 研究贡献
  • 5. 重点详解
    • 1. 通道注意力(Channel Attention, CA)
      • 通道注意力的实现步骤:
    • 2. 像素注意力(Pixel Attention, PA)
      • 像素注意力的实现步骤:
    • 3. 结合通道注意力与像素注意力

在这里插入图片描述

1. 研究背景

  • 图像去雾的重要性
    • 单图像去雾是计算机视觉中的基本低级视觉任务。由于大气中存在烟雾、灰尘等悬浮粒子,拍摄的图像常出现色彩失真、模糊和低对比度等问题,这不仅影响图像质量,还会给后续的分类、跟踪等高级视觉任务带来困难。因此,图像去雾旨在从受损的输入图像中恢复出清晰的无雾图像,作为高级视觉任务的预处理步骤。
  • 现有方法的局限性
    • 传统先验方法:早期的去雾方法大多基于物理散射模型,如DCP(Dark Channel Prior)等。这些方法基于不同的图像统计先验,将其作为额外约束来补偿信息损失。然而,先验可能在实际中不可靠,例如当场景对象与大气光相似时,会导致传输图估计不准确,在某些实际情况下效果不佳。
    • 深度学习方法:随着深度学习的兴起,出现了许多基于神经网络的去雾方法,如DehazeNet、MSCNN等。这些方法直接回归中间传输图或最终的无雾图像,相比传统方法具有更好的性能和鲁棒性。但现有的基于CNN的图像去雾网络通常对通道和像素特征同等对待,无法处理雾在图像中不均匀分布的情况,且随着网络加深,浅层特征信息难以保留。

2. FFA - Net网络结构

  • 整体架构
    • FFA - Net是一个端到端的特征融合注意力网络,用于直接恢复无雾图像。其架构主要由三个关键部分组成(如图2所示):
      • 浅层特征提取部分:输入为雾图,首先经过这部分提取浅层特征。
      • 多个带有跳跃连接的组结构(Group Architectures):提取的浅层特征被送入N个组结构,每个组结构包含B个基本块结构(Basic Block Structure),且具有跳跃连接。这些组结构用于进一步提取和处理特征。
      • 特征融合与重建部分:组结构输出的特征通过特征注意力(Feature Attention,FA)模块进行融合,然后经过重建部分(包括两层卷积网络和全局残差学习结构)得到无雾输出。
  • 关键模块
    • 特征注意力(FA)模块

  • 目的:考虑到不同通道特征包含完全不同的加权信息,且雾在图像像素上分布不均匀,FA模块旨在为不同的通道和像素分配不同的权重,以突出重要的特征,抑制不重要的特征,从而提供处理不同类型信息的灵活性,扩展CNN的表示能力。

  • 结构与工作原理

    • 通道注意力(Channel Attention,CA)
      • 首先对输入特征图进行全局平均池化,将通道方向的全局空间信息整合到一个通道描述符中。公式为:
        g c = H p ( F c ) = 1 H × W ∑ i = 1 H ∑ j = 1 W X c ( i , j ) g_{c}=H_{p}\left(F_{c}\right)=\frac{1}{H × W} \sum_{i=1}^{H} \sum_{j=1}^{W}X_{c}(i,j) gc=Hp(Fc)=H×W1i=1Hj=1WXc(i,j)
        其中 X c ( i , j ) X_{c}(i, j) Xc(i,j) 是第 c c c 个通道 x c x_{c} xc 在位置 ( i , j ) (i, j) (i,j) 的值, H p H_{p} Hp 是全局池化函数,得到一个 C × 1 × 1 C ×1 ×1 C×1×1 的向量 g c g_{c} gc

      • 然后特征经过两个卷积层和 ReLU、sigmoid 激活函数得到不同通道的权重:
        C A c = σ ( C o n v ( δ ( C o n v ( g c ) ) ) ) CA_{c}=\sigma\left(Conv\left(\delta\left(Conv\left(g_{c}\right)\right)\right)\right) CAc=σ(Conv(δ(Conv(gc))))
        其中 σ \sigma σ 是 sigmoid 函数, δ \delta δ 是 ReLU 函数。

      • 最后将输入特征 F c F_{c} Fc 与通道权重 C A c CA_{c} CAc 进行逐元素乘法操作,得到经过通道注意力加权后的特征:
        F c ∗ = C A c ⊗ F c F_{c}^{*}=CA_{c} \otimes F_{c} Fc=CAcFc

    • 像素注意力(Pixel Attention,PA)
      • 以通道注意力的输出 F ∗ F^{*} F 为输入,将其送入两个带有 ReLU 和 sigmoid 激活函数的卷积层,形状从 C × H × W C ×H ×W C×H×W 变为 1 × H × W 1 ×H ×W 1×H×W,得到像素注意力权重:
        P A = σ ( C o n v ( δ ( C o n v ( F ∗ ) ) ) ) PA=\sigma\left(Conv\left(\delta\left(Conv\left(F^{*}\right)\right)\right)\right) PA=σ(Conv(δ(Conv(F))))
      • 最后将 F ∗ F^{*} F P A PA PA 进行逐元素乘法操作,得到经过像素注意力加权后的特征:
        F ~ = F ∗ ⊗ P A \tilde{F}=F^{*} \otimes PA F~=FPA
        此即为 FA 模块的输出。
    • 基本块结构(Basic Block Structure)

  • 目的:由局部残差学习(Local Residual Learning,LRL)和特征注意力(FA)模块组成,旨在允许薄雾区域或低频等不重要信息通过多个局部残差连接绕过,使主网络专注于有效信息,同时提高网络性能和训练稳定性。

  • 工作原理:局部残差学习通过跳跃连接,将不重要信息绕过主网络路径,而特征注意力模块则进一步对特征进行加权处理,突出重要信息。

  • 注意力基础的不同层次特征融合(Attention-based Different Levels Feature Fusion,FFA)结构
  • 目的
    将不同层次的特征进行融合,保留浅层信息并传递到深层,同时自适应学习不同层次特征信息的权重,给予重要特征更多权重,以提高网络性能。

  • 工作原理

    1. 首先将 G G G 个组结构输出的所有特征图在通道方向上进行拼接:
      F concat = Concat ( F 1 , F 2 , . . . , F G ) F_{\text{concat}} = \text{Concat}(F_1, F_2, ..., F_G) Fconcat=Concat(F1,F2,...,FG)
    2. 然后通过 FA 模块计算注意力权重,并进行乘法融合:
      F output = FA ( F concat ) ⊗ F concat F_{\text{output}} = \text{FA}(F_{\text{concat}}) \otimes F_{\text{concat}} Foutput=FA(Fconcat)Fconcat
      这样能够有效增强不同层次特征的贡献,提高网络性能。

3. 实验结果

  • 与现有方法比较
    • 在RESIDE数据集的SOTS测试集上,与DCP、AOD - Net、DehazeNet、GCANet等四种不同的现有先进去雾算法进行比较。结果表明,FFA - Net在PSNR和SSIM指标上大幅超越现有方法,例如在室内测试集上,PSNR从30.23dB提升到36.39dB。从定性比较来看,FFA - Net在图像细节和色彩保真度恢复上表现更优,能更好地处理厚雾和纹理丰富区域。
  • 消融实验
    • 为进一步证明FFA - Net架构的优越性,对网络的不同模块进行消融实验,主要考虑FA模块、LRL与FA的组合以及FFA结构。实验结果表明,每个考虑的因素都对网络性能起着重要作用,尤其是FFA结构。即使仅使用FA结构,网络也具有竞争力,LRL可稳定训练并提升性能,FA和FFA的结合使结果达到很高水平。

4. 研究贡献

  • 提出FFA - Net用于单图像去雾,该网络性能大幅超越现有方法。
  • 提出FA模块,结合通道注意力和像素注意力机制,为处理不同类型信息提供额外灵活性,更关注厚雾像素和重要通道信息。
  • 提出由LRL和FA组成的基本块结构,允许不重要信息绕过,提高网络性能和训练稳定性。
  • 提出FFA结构,能保留并融合不同层次特征信息,自适应学习特征权重,效果优于其他特征融合方法。

5. 重点详解

在FFA-Net中,**通道注意力(Channel Attention, CA)像素注意力(Pixel Attention, PA)**是两个关键的注意力机制模块,它们分别用于处理不同通道和不同像素的特征信息。这两个模块的设计目的是为了更好地处理图像中不均匀的雾霾分布和不同通道的特征权重差异,从而提高去雾效果。

1. 通道注意力(Channel Attention, CA)

通道注意力的主要思想是:不同的通道特征包含不同的加权信息,尤其是在去雾任务中,某些通道可能包含更多的有用信息(如颜色、纹理等),而其他通道可能包含较少的信息。因此,通道注意力机制通过自适应地学习每个通道的权重,使得网络能够更加关注那些对去雾任务更重要的通道。

通道注意力的实现步骤:

  1. 全局平均池化(Global Average Pooling)
    首先,对每个通道的特征图进行全局平均池化,将每个通道的全局空间信息压缩为一个标量值。公式如下:

    g c = H p ( F c ) = 1 H × W ∑ i = 1 H ∑ j = 1 W X c ( i , j ) g_{c}=H_{p}\left(F_{c}\right)=\frac{1}{H × W} \sum_{i=1}^{H} \sum_{j=1}^{W}X_{c}(i,j) gc=Hp(Fc)=H×W1i=1Hj=1WXc(i,j)

其中 X c ( i , j ) X_{c}(i, j) Xc(i,j)是第 c c c个通道 x c x_{c} xc在位置 ( i , j ) (i, j) (i,j)的值, H p H_{p} Hp是全局池化函数,得到一个 C × 1 × 1 C ×1 ×1 C×1×1的向量 g c g_{c} gc

  1. 卷积层和激活函数
    接下来,将全局平均池化后的特征通过两个卷积层,并使用ReLU和Sigmoid激活函数来生成每个通道的权重。公式如下:
    C A c = σ ( C o n v ( δ ( C o n v ( g c ) ) ) ) CA_{c}=\sigma\left(Conv\left(\delta\left(Conv\left(g_{c}\right)\right)\right)\right) CAc=σ(Conv(δ(Conv(gc))))

,其中 σ \sigma σ是sigmoid函数, δ \delta δ是ReLU函数。

  1. 通道加权
    最后,将生成的通道权重 (CA_c) 与原始输入特征 (F_c) 进行逐元素相乘,得到加权后的通道特征:

F c ∗ = C A c ⊗ F c F_{c}^{*}=CA_{c} \otimes F_{c} Fc=CAcFc
这样,每个通道的特征都根据其重要性进行了加权,网络可以更加关注那些对去雾任务更重要的通道。

2. 像素注意力(Pixel Attention, PA)

像素注意力的主要思想是:图像中的雾霾分布是不均匀的,某些像素区域(如浓雾区域或高频纹理区域)可能包含更多的信息,而其他区域(如薄雾区域或低频区域)可能包含较少的信息。因此,像素注意力机制通过自适应地学习每个像素的权重,使得网络能够更加关注那些对去雾任务更重要的像素。

像素注意力的实现步骤:

  1. 卷积层和激活函数
    像素注意力的输入是经过通道注意力加权后的特征 F*。首先,将 F* 通过两个卷积层,并使用ReLU和Sigmoid激活函数来生成每个像素的权重。公式如下:

P A = σ ( C o n v ( δ ( C o n v ( F ∗ ) ) ) ) PA=\sigma\left(Conv\left(\delta\left(Conv\left(F^{*}\right)\right)\right)\right) PA=σ(Conv(δ(Conv(F))))

经过这两个卷积层后,特征图的形状从 C × H × W C ×H ×W C×H×W 变为 1 × H × W 1 ×H ×W 1×H×W,即每个像素都有一个对应的权重。

  1. 像素加权
    最后,将生成的像素权重 (PA) 与输入特征 (F^*) 进行逐元素相乘,得到加权后的像素特征:

F ~ = F ∗ ⊗ P A \tilde{F}=F^{*} \otimes PA F~=FPA

这样,每个像素的特征都根据其重要性进行了加权,网络可以更加关注那些对去雾任务更重要的像素区域。

3. 结合通道注意力与像素注意力

通道注意力(CA)和像素注意力(PA)相结合,形成了FFA-Net的特征注意力(FA)模块:

  1. CA 首先作用于特征图,提升关键通道的权重
  2. PA 进一步作用于 CA 处理后的特征,使网络更关注关键像素区域
  3. 最终输出的特征具有更强的表达能力,能够更好地处理雾气的去除任务

⭐感谢你的阅读,希望本文能够对你有所帮助。如果你喜欢我的内容,记得点赞关注收藏我的博客,我会继续分享更多的内容。⭐

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

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

相关文章

计算机视觉cv2入门之图像的读取,显示,与保存

在计算机视觉领域,Python的cv2库是一个不可或缺的工具,它提供了丰富的图像处理功能。作为OpenCV的Python接口,cv2使得图像处理的实现变得简单而高效。 示例图片 目录 opencv获取方式 图像基本知识 颜色空间 RGB HSV 图像格式 BMP格式 …

深度学习中的向量的样子-DCN

深度学习中向量都是 竖着的,譬如 DCN中的计算逻辑

OBS推WebRTC流,并添加毫秒级时间显示

作者在用OBS推WebRTC流,并用浏览器观看推送的实时流。另外就是想看一下延迟有多少。采用一台电脑,流媒体服务器为SRS,相关配置比较简单,可以自行搜索。 推送的流 http://localhost:1985/rtc/v1/whip/?applive&streamlivestr…

【MySQL】多表操作 —— 外键约束

目录 多表关系一对一关系一对多/多对一关系多对多关系 外键约束基本概念一对多/多对一创建外键约束外键约束下的数据操作数据插入数据删除 删除外键约束 多对多创建外键约束外键约束下的数据操作数据插入数据删除 删除外键约束 多表关系 MySQL 多表之间的关系可以概括为&#…

82.HarmonyOS NEXT 性能优化指南:从理论到实践

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT 性能优化指南:从理论到实践 文章目录 HarmonyOS NEXT 性能优化指南:从理论到实践1. 性能优化概述1.1 性能指…

树莓派急速安装ubuntu;映射磁盘与储存磁盘文件;ubuntu映射整个工程;保存系统工作状态

一、用途 在使用树莓派上下载ubuntu时,需要一张sd卡,当你需要给这张卡做备份的时候,可以是使用磁盘映射软件,从而达到备份的目的 同时有一些大佬发布了ubuntu的映射文件,可以直接使用该文件,然后还原他的整…

Qt 控件概述 QPushButton 与 QRadioButton

目录 QPushButton setIcon 设置图标 setShortCut 设置快捷键 setAutoRepeat : 设置是否连发 ​编辑RadioButton 槽函数 单选按钮的分组排异 QPushButton QPushButtoon继承于QAbstractButton(抽象类); QAbstract中与QPushButton关联性极大的属性 ​ setIcon…

HR9110 玩具单通道直流电机驱动器

1、描述 HR9110是应用于直流电机方案的单通道H桥驱动器芯片。HR9110的H桥驱动部分采用低导通电阻的PMOS和NMOS功率管。低导通电阻保证芯片低的功率损耗,使得芯片安全工作更长时间。此 外HR9110拥有低待机电流、低静态工作电流。这些性能使能HR9110易用于玩具方案。…

Mac 使用 Crossover 加载 Windows Steam 游戏库,实现 Windows/Mac 共享移动硬盘

Mac 使用 Crossover 加载 Windows Steam 游戏库,实现 Windows/Mac 共享移动硬盘 1. 在Crossover上安装Steam2. Steam容器加载移动硬盘3. 配置Steam库 前言:本文介绍了如何在Crossover上安装Steam并加载外接移动硬盘,实现在Window上下载的游戏…

ubuntu 24 安装 python3.x 教程

目录 注意事项 一、安装不同 Python 版本 1. 安装依赖 2. 下载 Python 源码 3. 解压并编译安装 二、管理多个 Python 版本 1. 查看已安装的 Python 版本 2. 配置环境变量 3. 使用 update-alternatives​ 管理 Python 版本 三、使用虚拟环境为项目指定特定 Python 版本…

沐数科技数据开发岗笔试题2025

描述性统计 标准差 答案: A 解析: 标准差 衡量数据集中数值变化或离散程度的一种度量。它反映了数据集中的各个数值与数据集的平均值(均值)之间的偏离程度。标准差越大,表明数据的分布越分散;标准差越小,表明数据…

ChatGPT-4

第一章:ChatGPT-4的技术背景与核心架构 1.1 生成式AI的发展脉络 生成式人工智能(Generative AI)的演进历程可追溯至20世纪50年代的早期自然语言处理研究。从基于规则的ELIZA系统到统计语言模型,再到深度学习的革命性突破&#x…

vulkanscenegraph显示倾斜模型(5.3)-相机

前言 在Vulkan中,相机的概念并非由API直接提供,而是由应用程序实现。相机的核心功能包括视图变换和投影变换:视图变换将世界坐标系中的物体转换到相机坐标系,投影变换则将相机坐标系中的物体转换到投影空间。在VSG(Vul…

【Pycharm】Pycharm无法复制粘贴,提示系统剪贴板不可用

我也没有用vim的插件,检查了本地和ubutnu上都没有。区别是我是远程到ubutnu的pycharm,我本地直接控制windowes的pycharm是没问题的。现象是可以从外部复制到pycharm反之则不行。 ctl c ctlv 以及右键 都不行 参考:Pycharm无法复制粘贴&…

MySQL 8 设置允许远程连接(Windows环境)

🌟 MySQL 8 设置允许远程连接(Windows环境) 在开发和部署应用时,经常需要从远程主机连接到MySQL数据库。默认情况下,MySQL仅允许本地连接,因此需要进行一些配置才能允许远程访问。今天,我将详细…

Prosys OPC UA Gateway:实现 OPC Classic 与 OPC UA 无缝连接

在工业自动化的数字化转型中,设备与系统之间的高效通信至关重要。然而,许多企业仍依赖于基于 COM/DCOM 技术的 OPC 产品,这给与现代化的 OPC UA 架构的集成带来了挑战。 Prosys OPC UA Gateway 正是为解决这一问题而生,它作为一款…

欢乐力扣:基本计算器

文章目录 1、题目描述2、思路代码括号 1、题目描述 基本计算器。  给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。  注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 2、思路 本人也不太会&#xff0c…

SVN学习笔记

svn:版本控制软件 解决:1.协作开发 2.远程开发 3.版本回退 服务端软件: VisualSVN http://www.visualsvn.com 客户端软件:Tortoisesvn http://tortoisesvn.net/downloads 1.checkout(检出) 第一查更新数据到本地, 2.update&#xf…

Mysql表的查询

一:创建一个新的数据库(companydb),并查看数据库。 二:使用该数据库,并创建表worker。 mysql> use companydb;mysql> CREATE TABLE worker(-> 部门号 INT(11) NOT NULL,-> 职工号 INT(11) NOT NULL,-> 工作时间 D…

[ISP] 人眼中的颜色

相机是如何记录颜色的,又是如何被显示器还原的? 相机通过记录RGB数值然后显示器显示RGB数值来实现颜色的记录和呈现。道理是这么个道理,但实际上各厂家生产的相机对光的响应各不相同,并且不同厂家显示器对三原色的显示也天差地别&…