【读论文】AttentionFGAN

news2025/7/21 5:20:39

【读论文】AttentionFGAN

  • 介绍
  • 网络架构
    • 提取红外图像目标信息的网络
    • 辨别器
  • 损失函数
    • 生成器损失函数
    • 辨别器损失函数
  • 总结
  • 参考

论文: https://ieeexplore.ieee.org/document/9103116/
如有侵权请联系博主

介绍

好久没有读过使用GAN来实现图像融合的论文了,正好看到一篇2021年的论文,很感兴趣。

论文中介绍了一种基于多尺度和SE注意力用于可视图像与红外图像融合的方法,网络架构基于GAN,有点类似DDcGAN的结构,也是有两个辨别器。接下来咱们一起来看看吧。

网络架构

在这里插入图片描述
网络的总体架构如上图所示,先来简单看一下,可以认为整个网络由四个组件购成,分别是一个用于提取红外图像中目标信息的网络,一个用于提取可视图像中背景信息的网络和两个用来分辨输入的图像是融合图像还是红外/可视图像

提取红外图像目标信息的网络

在这里插入图片描述
单看这一部分,我相信除了作者谁也不知道这是干啥的,不过还好还有下面这张图
在这里插入图片描述

上图就是红外多尺度注意力网络的网络结构,可以看到,整个网络中包含三个尺度的基于注意力的特征提取模块,从上到下,依次为原图像信息,2x2池化之后产生的图像数据和4x4池化之后产生的图像数据。

我们来仔细看一下上面这张图,还是有很多细节的。

依据我们之前所知道的,每一个尺度的图像特征信息的高和宽应该是不同的,那为什么这里直接最后可以把提取到的三个尺度特征信息进行通道维度上的相连呢?

这是因为在SE注意力计算权重之后,并不是权重直接与原尺度特征进行相乘,而是与原尺度特征上采样之后的特征进行相乘,这里的上采样自然是将三个尺度的特征信息信息上采样到同一个高与宽

作者在文中给出了SE注意力的计算公式。计算公式如下
在这里插入图片描述
在这里插入图片描述

最终将各尺度提取的特征连接在一起就是提取到的红外特征。

可视特征注意力网络与红外的结构以及原理相同。

生成器的网络结构如下表所示,包含多尺度特征提取的网络结构和一个融合网络结构。
在这里插入图片描述

辨别器

在这里插入图片描述

因为两个辨别器的结构大致相同,这里就统一来讲。

类似于DDcGAN的结构,这里也是使用两个辨别器,分别是用来判断是融合图像还是红外图像,是融合图像还是可视图像。

看到上面网络结构之后,你会发现怎么又多了两个多尺度注意力网络?

作者在这里的解释是他希望每个辨别器都可以更加关注应该关注的区域而不是整张图像。那么怎么理解呢

以红外/融合图像辨别器为例,**这里作者希望辨别器更加关注红外图像中的目标信息特征而并非背景信息和全部信息。**同样,可视/融合图像辨别器也是如此。而SE注意力块恰好可以根据目标损失函数进行调整权重,即增大我们想要的特征信息的权重,减小哪些不想要的特征信息的权重

这样就比较清晰了,辨别器的输入就是多尺度注意力块的输出和原图信息进行相连之后的信息。

辨别器的结构如下表所示,由卷积层Conv和全卷积FC构成。
在这里插入图片描述

损失函数

生成器损失函数

先来看下生成器整体的损失函数,三个部分,对抗损失,内容损失和注意力损失。
在这里插入图片描述
先来看下内容损失,还是我们熟悉的公式,是为了保证融合图像的目标强度信息与可视图像中的相似。
因为毕竟是2021年的论文,没有考虑到可视图像中的显著目标信息,和我们现在经常看到的损失不是很一致。
在这里插入图片描述

再来看下注意力损失函数,个人认为是本文的亮点
在这里插入图片描述
这里att代表的是经过SE注意力处理之后产生的特征信息,在前面我们已经提到了加入SE块的原因就是像生成我们希望注意到的特征信息而并非全局信息同理这里的att也就是网络认为我们想要注意到的内容。

例如在红外与融合图像鉴别器中,我们肯定希望通过输入图像显著目标信息来判断输入图像是可视图像还是融合图像。那么怎么判断呢?

就是通过输入图像产生的att进行判断,当融合图像的att与红外图像的att相似度越高时,就说明融合图像包含的红外目标信息更丰富。 同理,可视图像也是如此。

最后就是对抗损失
在这里插入图片描述
Dir是红外辨别器认为图像是红外图像的概率,Dvis是可视辨别器认为图像是可视图像的概率,我们希望生成器生成的融合图像可以骗过两个辨别器,即两个辨别器认为融合图像是可视/红外图像的概率越高越好,即Dir和Dvis越大越好,带上一个负号就是整体越小越好。

辨别器损失函数

在这里插入图片描述

辨别器的损失函数相对来说简单些,即识别来自红外/可视图像中的数据为红外/可视的概率越高越好,识别来自融合图像的数据为红外/可视的概率越低越好,但是这里的在这里插入图片描述确实不知道是啥意思。。。。。。。麻烦大佬们解答一下。

总结

整篇文章让我最惊艳的有两个点,第一个就是在多尺度特征提取那里加入了SE块,从而挑选我们想要特征;另一个就是在损失函数这里,尤其是注意力损失那个地方,通过我们希望注意的区域的特征对比来判断融合图像中是否包含了可视纹理信息红外图像中的目标信息

其他融合图像论文解读
==》读论文专栏,快来点我呀《==

【读论文】DIVFusion: Darkness-free infrared and visible image fusion

【读论文】RFN-Nest: An end-to-end residual fusion network for infrared and visible images

【读论文】DDcGAN

【读论文】Self-supervised feature adaption for infrared and visible image fusion

【读论文】FusionGAN: A generative adversarial network for infrared and visible image fusion

【读论文】DeepFuse: A Deep Unsupervised Approach for Exposure Fusion with Extreme Exposure Image Pairs

【读论文】DenseFuse: A Fusion Approach to Infrared and Visible Images

参考

[1] AttentionFGAN: Infrared and Visible Image Fusion Using Attention-Based Generative Adversarial Networks

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

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

相关文章

【Java面试八股文宝典之基础篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day14

大家好,我是陶然同学,软件工程大三今年实习。认识我的朋友们知道,我是科班出身,学的还行,但是对面试掌握不够,所以我将用这100多天更新Java面试题🙃🙃。 不敢苟同,相信大…

计算机专业要考什么证书?

大家好,我是良许。 从去年 12 月开始,我已经在视频号、抖音等主流视频平台上连续更新视频到现在,并得到了不错的评价。 视频 100% 原创录制,绝非垃圾搬运号,每个视频都花了很多时间精力用心制作,欢迎大家…

Android高仿陌陌应用点点滑动效果

效果图:分析:从效果上看图片的展示具有层次感,在数据结构上更像是stack,所以通过继承FrameLayout来实现(不清楚FrameLayout布局特点的可以先百度下哈),外面是通过继承FrameLayout自定义的TinderStackLayout&#xff0c…

SpringBoot-基础篇

SpringBoot基础篇 ​ 在基础篇中,我给学习者的定位是先上手,能够使用SpringBoot搭建基于SpringBoot的web项目开发,所以内容设置较少,主要包含如下内容: SpringBoot快速入门SpringBoot基础配置基于SpringBoot整合SSMP…

为你的Vue2.x老项目安装Vite发动机吧

天下苦webpack久矣,相信作为前端开发者一定经历过在项目迭代时间较长的时候经历漫长等待的这一过程,每一次保存都会浪费掉大量时间,这是webpack这种机制所带来的问题。 于是,尤大为我们带来了新一代前端构建工具:vite…

搜索旋转排序数组、路径总和 II、拆分数字

文章目录搜索旋转排序数组(数组、二分查找)路径总和 II(树、深度优先搜索)拆分数字(算法)搜索旋转排序数组(数组、二分查找) 整数数组 nums 按升序排列,数组中的值 互不…

Transformer学习笔记

Transformer学习笔记1. 参考2. 模型图3.encoder部分3.1 Positional Encoding3.2 Muti-Head Attention3.3 ADD--残差连接3.4 Norm标准化3.5 单个Transformer Encoder流程图4.decoder部分4.1 mask Muti-Head Attention4.2 Muti-Head Attention5 多个Transformer Encoder和多个Tra…

详解数据库基本概念

数据库(DataBase 简称 DB):是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合数据库管理系统(DataBase Management System 简称 DBMS):是一种操纵和管理数据库的大型软件&#xf…

基于嵌入式linux的DHCP服务器的搭建与移植(udhcp)

DHCP是Dynamic Host Configuration Protocol的缩写,即动态主机配置协议。DHCP是一个很重要的局域网的网络协议,使用UDP协议实现动态配置功能,主要有以下用途: 1、为内部网络或网络服务供应商自动分配IP地址; 2、为用…

利用Python和Sprak求曲线与X轴上方的面积

有n组标本(1, 2, 3, 4), 每组由m个( , , ...)元素( , )组成(m值不定), . 各组样本的分布 曲线如下图所示. 通过程序近似实现各曲线与oc, cd直线围成的⾯积. 思路 可以将图像分成若干个梯形,每个梯形的底边长为(Xn1 - Xn-1),面积为矩形的一半&#xff0c…

原创壁纸小程序独立后台(1.3.5版本介绍)

1、新版本开发目的 历经前两次版本迭代,本人发现在整个系统的架构方面存在一定的缺陷,这种缺陷就是前后端不分离,导致在后期的维护方面遇到了很多问题。 那么这次版本更新并没有带来很多新的功能,而是重构了系统并优化UI&#x…

【PyQt5图形界面编程(2)】:创建工程

创建工程 一、创建工程二、开始开发1、运行Qt5Designer,创建QT窗口2、运行pyUIC,转换xx.ui成xx.py3、main.py中引用xx.py中的类4、打包main.py成main.exe来发布5、执行终端报警处理方法三、其他(如果涉及)1、配置环境变量一、创建工程 采用虚拟环境来创建工程 相关的paka…

STM32FreeRTOS - 按键实现任务挂起和恢复

STM32f103C8T6 FreeRTOS - 按键实现任务挂起和恢复,按键按下时,LED任务执行,led闪烁,当led任务挂起,Led停止闪烁。1.STM32CubeMX 创建任务1.1配置GPIO按键配置外部中断触发GPIO绿灯,红灯配置输出模式1.2配置…

Android中级——色彩处理和图像处理

色彩处理 通过色彩矩阵处理 色彩矩阵介绍 图像的RGBA可拆分为一个4行5列的矩阵和5行1列矩阵相乘 其中4行5列矩阵即为ColorMatrix,可通过调整ColorMatrix间接调整RGBA 第一行 abcde 决定新的 R第二行 fghij 决定新的 G第三行 klmno 决定新的 G第四行 pqrst 决定新…

Ubuntu64位下安装Anaconda3的详细过程

Ubuntu下安装Anaconda的详细过程 下载 Anaconda:首先,您需要在 Anaconda 的官网上下载适合您的 Linux 版本的安装包。您可以使用以下命令下载最新版本: wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh下载完毕后…

春季 3 月 · CSM 认证周末班【提前报名特惠】“全球金牌课程”CST 导师亲授

为什么“模块化分时段”单元教学 ☆ 有脑科学研究资料揭示: 成人学习者持续 3.5 小时已经达到极限,新模式教学,给学习者留有一些时间和空间去消化吸收,反思回顾(Reflection),讲师布置一些小作业,让学员课后去练习&…

React Draggable 实现图片拖拽

React Draggable 实现拖拽 React Draggable 是 react 生态中,最好用的拖拽实现库之一。如果你的应用中需要实现拖拽功能,可以尝试用 react-draggable,它可以满足多数情况下的拖拽需求,比如一个弹出设置浮窗,可以相互遮…

2月更新!EasyOps又迎来新升级,解锁9大新特性

又到了每月产品盘点时刻,9大新功能上线和升级优化,涉及Hyperlnsight超融合持续观测平台、CMDB立体化资源管理平台、DevOps持续交付平台、AutoOps自动化运维平台、EasyHub资源共享平台,在不断的技术创新过程中,进一步加速IT运维效率…

Android framework socketpair

简述 在Linux中,socketpair函数可以用于创建一对相互连接的、通信域为AF_UNIX的套接字,其中一个套接字可用于读取,另一个套接字可用于写入。可以使用这对套接字在同一进程内进行进程间通信(IPC)。 以下是使用socketp…

python 学习

1.转义字符 字符串前加r,使转义字符不起作用 print(r"hello\t world") 2.数据类型 python数据类型分为int,float,bool,str 整数类型的形式: print("二进制0b开头", 0b10111001) print("八进制0o开头", 0o1257436) print("…