当前位置: 首页 > news >正文

基于域自适应的双光融合

目录

    • 引言
    • DAF-Net
      • 编码器-解码器分支
        • 编码器部分
        • 融合层
        • 解码器部分
      • 域自适应层
        • 概述
        • 多核最大均值差异(MK-MMD)
        • 第一阶段:编码器-解码器分支训练
          • 训练过程
          • 损失函数
        • 第二阶段:融合层训练
          • 训练过程
          • 损失函数
    • 实验与结果
    • 总结

文章声明,非广告,仅个人体验;

引言

红外和可见光图像融合的目标是将红外图像和可见光图像的互补信息结合起来,以实现更全面的环境感知。这意味着通过融合两种类型的图像,可以获得比单独使用任何一种图像更丰富的场景信息。

参考文献,全部资源均可在该地址获取:https://www.aspiringcode.com/content?id=17323478187973&uid=3bf8b73ec4ff407a90291a8502a8c1db

红外图像在夜间监控和目标检测等低光环境下表现优异。这是因为红外图像能够捕捉到热辐射,这种辐射不受可见光照明条件的限制,因此可以在完全黑暗或光线不足的环境中“看到”物体和场景。

可见光图像保留了丰富的细节和色彩,提供了清晰的现场表示。这是因为可见光图像捕捉的是人眼可以看到的光谱范围,因此它们能够提供与人类视觉感知相似的图像,包括颜色和纹理等细节。

将这两种模态的图像融合起来可以弥补各自的局限性。例如,红外图像虽然能在夜间“看见”,但缺乏色彩信息;而可见光图像虽然色彩丰富,但在低光环境下表现不佳。通过融合,可以结合红外图像的夜间监控能力和可见光图像的细节和色彩信息,从而提供更完整的环境理解。

尽管融合的优势明显,但由于成像原理、分辨率和光谱响应的差异,保持关键信息的一致性成为一个主要挑战。这意味着在融合过程中,需要找到一种方法来确保两种图像中的关键特征(如边缘、纹理和轮廓)能够被准确地结合在一起,而不是相互冲突或丢失。

现有的图像融合方法大致分为三类:

  • 传统方法:如像素级或特征级融合方法,这些方法通过简单的规则进行融合,计算效率高,易于实现,但无法充分利用红外和可见光图像的互补信息,导致融合效果有限。- 变换域方法:如小波变换和拉普拉斯金字塔技术,这些方法通过将图像分解为不同的频率成分来保留细节,但在重建过程中可能丢失关键的模态特定特征,难以同时保留全局结构和细节纹理。- 基于深度学习的方法:近年来,深度学习方法取得了显著进展,如卷积神经网络(CNN)和生成对抗网络(GAN)。这些方法能够通过学习模态间的非线性关系,生成视觉质量更高的融合图像。然而,深度学习方法通常需要大量标注数据,这在数据稀缺时成为限制因素。此外,在保持全局结构和细节纹理方面仍然存在挑战。
    为了更好地对齐红外和可见光图像的潜在特征空间,论文《DAF-Net: A Dual-Branch Feature Decomposition Fusion Network with Domain Adaptive for Infrared and Visible Image Fusion》提出了一种域自适应的双分支特征分解融合网络(DAF-Net)。该方法通过引入多核最大均值差异(MK-MMD)来减少红外和可见光图像之间的分布差异,从而提高融合图像的质量。

DAF-Net的基础编码器基于Restormer网络,负责捕捉全局结构信息;细节编码器基于可逆神经网络(INN),负责提取细节纹理信息。MK-MMD仅在基础编码器中应用,以确保全局特征的一致性,避免局部细节的过度对齐和模态特定信息的丢失。该结构使得DAF-Net能够在全局结构和细节保留之间取得平衡。

DAF-Net

DAF-Net由一个编码器-解码器分支和一个基于混合核函数的域自适应层组成。

编码器-解码器分支

编码器-解码器分支是DAF-Net网络架构的核心部分,负责提取和重建图像特征。以下是编码器-解码器分支的详细解释:

编码器部分

编码器部分由三个主要层次组成:共享特征层、基础编码器和细节编码器。

  1. 共享特征层: 这一层基于Transformer架构,用于处理输入的红外和可见光图像。它提取图像的浅层特征,这些特征是后续编码过程的基础。共享特征层的输出表示为 YSI=ES(I)YSI=E****S(I) 和 YSV=ES(V)YSV=E****S(V),其中 ES(⋅)E****S(⋅) 表示共享编码器,II 和 VV 分别代表红外和可见光图像。1. 基础编码器: 基础编码器使用Restormer块构建,目的是捕获图像的全局结构信息。它接收共享特征层的输出,并进一步提取更深层次的特征。基础编码器的输出表示为 YBI=EB(YSI)YBI=E****B(YSI) 和 YBV=EB(YSV)YBV=E****B(YSV),其中 EB(⋅)E****B(⋅) 表示基础编码器。1. 细节编码器:细节编码器基于INN(Invertible Neural Networks)块构建,专注于提取图像的细节纹理信息。它同样接收共享特征层的输出,并提取细节特征。细节编码器的输出表示为 YDI=ED(YSI)YDI=E****D(YSI) 和 YDV=ED(YSV)YDV=E****D(YSV),其中 ED(⋅)E****D(⋅) 表示细节编码器。
融合层

融合层包括基础融合层和细节融合层,它们分别对基础编码器和细节编码器提取的特征进行融合。

  • 基础融合层 FBF*B细节融合层 FD**FD
  • 基础融合层接收基础编码器提取的特征 YBIYBI 和 YBVYBV**,并输出融合后的基础特征 YBIV**YB**I*V**。
  • 细节融合层接收细节编码器提取的特征 YDIYDI 和 YDVYDV**,并输出融合后的细节特征 YDIVYDIV*。
  • 融合层的输出表示为 YBIV=FB(YBI,YBV)YBI****V=F****B(YBI,Y*BV) 和 YDIV=FD(YDI,YDV)YDIV**=FD*(YDI,YDV)。
解码器部分

解码器部分负责将编码器提取的特征转换回图像空间,生成重建的红外图像、可见光图像或融合图像。

  1. 第一阶段重建: 解码器首先使用基础和细节特征 YBIYBI 和 YDIYDI 重建红外图像 I**I**。同样,使用 YBVY*BV 和 YDVYDV** 重建可见光图像 V**V**。重建过程表示为 I=D(YBI,YDI)**I**=D(YBI,YDI**) 和 V=D(YBV,YDV)**V**=D(YBV,YDV),其中 D(⋅)D(⋅) 表示解码器。1. 第二阶段融合: 在第二阶段,解码器使用融合后的基础特征 YBIVYBIV** 和细节特征 YDIVYDIV** 生成融合图像 FIV**F***I**V**。融合图像的生成过程表示为 FIV=D(YBIV,YDIV)**I**V**=D(YB**IV**,YDIV**)。

域自适应层

概述

域自适应层的作用是减少红外图像和可见光图像特征之间的分布差异,从而实现跨模态的特征对齐。域自适应层被引入到基础编码器的最后三个卷积层中,以对齐全局特征。细节编码器避免使用MK-MMD,以保留局部细节和模态特定的信息。

域自适应层的主要目的是减少不同模态(红外和可见光)图像特征之间的分布差异,使得网络能够更好地进行特征融合。通过减少分布差异,域自适应层有助于提高融合图像的质量,尤其是在复杂场景下。

域自适应层通过计算多核最大均值差异(MK-MMD)来实现特征对齐。MK-MMD是一种度量两个概率分布差异的方法,它通过在再生核希尔伯特空间(RKHS)中评估分布的距离来工作。通过将特征映射到RKHS,域自适应层使用混合核函数计算分布差异,从而实现特征对齐。

在训练过程中,域自适应层通过最小化MK-MMD损失来优化网络参数,使得红外和可见光图像的特征分布更加接近。

多核最大均值差异(MK-MMD)
  1. MK-MMD的定义: MK-MMD是一种基于核方法的距离度量,它使用多个不同带宽参数的高斯核的线性组合来评估两个分布之间的差异。公式表示为:

其中,SIS****I 和 SVS****V 分别代表红外和可见光图像的特征分布,FIF****I 和 FVF****V 是这些特征在RKHS中的映射,E[⋅]E[⋅] 表示期望,∥⋅∥Hk2∥⋅∥H****k2 是RKHS中的平方范数。

  1. 混合核函数: 混合核函数定义为:
1. 中,kG**k****G** 是高斯核,kL**k****L** 是拉普拉斯核,c1**c**1 和 c2**c**2 是核的权重,它们的和为1。 高斯核适合捕捉全局结构信息,而拉普拉斯核对边缘更敏感,适合捕捉局部细节。通过结合这两种核,混合核函数能够同时捕获全局和局部特征。 ### 两阶段训练

为了应对红外和可见光图像融合中缺乏真实标签的问题,本文采用了两阶段学习方案来训练DAF-Net。

第一阶段:编码器-解码器分支训练

在第一阶段,目标是独立地训练编码器和解码器,以便它们能够从输入的红外和可见光图像中提取特征,并重建出高质量的图像。

训练过程

下面是第一阶段的训练过程。

  1. 共享特征提取: 输入数据包括成对的红外图像和可见光图像。输入图像首先通过共享特征层,用于提取图像的初步特征。1. 基础编码器: 共享特征层的输出被送入基础编码器,负责捕获图像的全局结构信息。1. 细节编码器: 同时,共享特征层的输出也被送入细节编码器,提取图像的细节和纹理信息。1. 域自适应层: 在基础编码器中,域自适应层通过计算MK-MMD来减少红外和可见光图像特征分布之间的差异,实现特征对齐。1. 特征融合: 基础编码器和细节编码器提取的特征被送入融合层,在这里,基础特征和细节特征被合并。1. 图像重建: 融合后的特征被送入解码器,用于重建红外图像和可见光图像。
损失函数

第一阶段的损失函数是重建损失、相关性损失、InfoNCE损失、MK-MMD损失的加权和。

  • 重建损失:包括均方误差(MSE)损失、结构相似性指数(SSIM)损失和梯度损失,用于衡量重建图像与原始图像之间的差异。
第二阶段:融合层训练

在第二阶段,目标是训练融合层,以便它们能够将从红外和可见光图像中提取的特征融合,生成高质量的融合图像。

训练过程
  1. 特征提取: 输入数据包括成对的红外图像和可见光图像,使用第一阶段训练好的编码器提取红外和可见光图像的特征。1. 特征融合: 提取的基础特征和细节特征被送入融合层,融合层将这些特征合并成单一的融合特征表示。1. 融合图像生成: 融合后的特征被送入解码器,解码器负责从融合特征中重建出融合图像。
损失函数

融合层训练的损失函数是强度损失、最大梯度损失和相关性损失的加权和。

  • 强度损失:衡量融合图像与输入图像在强度上的差异。

实验与结果

实验在三个数据集上进行:MSRS、RoadScene和TNO。部分MSRS数据集用于训练,其余部分和TNO、RoadScene数据集用于评估。采用的评价指标包括互信息(MI)、视觉信息保真度(VIF)、熵(EN)、标准差(SD)、空间频率(SF)、边缘信息QAB/F和结构相似性指数(SSIM)。

我们的实验配置是 PyTorch 1.9.0 Python 3.8(ubuntu18.04) Cuda 11.1 GPU RTX 3080 Ti(12GB)

我们在训练好模型之后,在MSRS、RoadScene和TNO数据集上,分别随机选择了361张、50张、25张图像构成测试集,测试集在附件中附上。最终的测试结果是

测试数据展示如下,从左至右依次为红外图像、可见光图像和融合图像。

可以看到,DAF-Net在融合过程中有效保留了红外图像的热辐射信息和可见光图像的细节。

总结

本文介绍了一种名为DAF-Net的新型红外和可见光图像融合网络。该网络通过引入多核最大均值差异和设计混合核函数来对齐红外和可见光图像的潜在特征空间,从而提高融合图像的质量。DAF-Net采用了双分支结构,包括一个基于Restormer网络的基础编码器和一个基于可逆神经网络的细节编码器,分别捕获全局结构信息和细节纹理信息。通过这种结构,DAF-Net能够在保持全局结构的同时,保留模态特定的细节信息。

此外,DAF-Net采用了两阶段训练策略来解决红外和可见光图像融合中缺乏地面真实数据的问题。第一阶段侧重于训练编码器-解码器分支以重建红外和可见光图像,第二阶段则专注于训练融合层以生成融合图像。损失函数包括重建损失、相关性损失、InfoNCE损失和MK-MMD损失,以及强度损失和最大梯度损失,这些损失函数共同优化了网络的性能。

总体而言,DAF-Net通过其创新的网络架构和训练策略,在红外和可见光图像融合领域提供了一种有效的解决方案,能够生成具有高视觉质量和融合性能的融合图像,具有广泛的应用前景。

参考文献,全部资源均可在该地址获取:https://www.aspiringcode.com/content?id=17323478187973&uid=3bf8b73ec4ff407a90291a8502a8c1db


相关文章:

基于域自适应的双光融合

目录 引言DAF-Net编码器-解码器分支编码器部分融合层解码器部分 域自适应层概述多核最大均值差异(MK-MMD)第一阶段:编码器-解码器分支训练训练过程损失函数 第二阶段:融合层训练训练过程损失函数 实验与结果总结 文章声明&#xf…...

迭代器模式 (Iterator Pattern)

文章目录 迭代器模式 (Iterator Pattern)原理优点缺点示例代码场景描述1. 定义迭代器接口2. 定义集合接口3. 实现具体集合类4. 客户端代码输出结果 UML 类图使用场景优化与扩展小结 迭代器模式 (Iterator Pattern) 迭代器模式是一种 行为型设计模式,用于顺序访问集…...

039集——渐变色之:CAD中画彩虹()(CAD—C#二次开发入门)

(来左边儿 跟我一起画个龙,在你右边儿 画一道彩虹 ~~~~~~~~~~~ ) 效果如下: namespace AcTools {public class Class1{public Wform.Timer timer;//定时器需建在类下面public static DateTime startTime;[CommandM…...

如何将 GitHub 私有仓库(private)转换为公共仓库(public)

文章目录 如何将 GitHub 私有仓库转换为公共仓库步骤 1: 登录 GitHub步骤 2: 导航到目标仓库步骤 3: 访问仓库设置步骤 4: 更改仓库可见性步骤 5: 确认更改步骤 6: 验证更改注意事项 如何将 GitHub 私有仓库转换为公共仓库 在软件开发领域,GitHub 是一个广受欢迎的…...

C++11 右值引用

目录 左值 右值 左值引用与右值引用比较 左值引用总结: 右值引用总结: 左值引用的使用场景: 引用传参和做返回值都可以提高效率(减少拷贝) 左值引用的短板: 右值引用和移动语义解决上述问题: 下面就是有移动…...

WPS表格学习计划与策略

一、学习目标 掌握WPS表格的基本操作:包括新建、打开、保存工作簿,单元格的编辑与格式化,数据的输入与验证等。熟练运用WPS表格的数据处理功能:包括数据排序、筛选、分类汇总,以及使用公式和函数进行计算和分析。学会制作图表与数据可视化:掌握不同类型图表(如柱状图、折…...

Android 引入 proto 项目及使用方法

Proto(Protocol Buffers)是Google开发的一种语言无关、平台无关的序列化结构数据的方法,它类似于JSON和XML,但相对于XML而言更小,相对于JSON而言解析更快,支持多语言。以下是将Proto引入Android项目的方法及…...

VSOMEIP主要流程的时序

请求服务: client应用: ​ application_impl::request_service ​ routing_manager_client::request_service (老版本是routing_manager_proxy) ​ routing_manager_client::send_request_services ​ protocol::request_service_command its_command; // 创建…...

右值引用和移动语义:

C 右值引用和移动语义详解 在 C 的发展历程中,右值引用和移动语义的引入带来了显著的性能提升和编程灵活性。本文将深入探讨右值引用和移动语义的概念、用法以及重要性。 一、引言 C 作为一门高效的编程语言,一直在不断演进以满足现代软件编程的需求。…...

经纬高LLA转地心地固ECEF坐标,公式,代码

经纬高转地心地固的目的 坐标系转换是gis或者slam系统常见操作。GNSS获取的一般是经纬高,经纬高在slam系统里无法应用,slam系统一般是xyz互相垂直的笛卡尔坐标系,所以需要把GNSS的经纬高转到直角坐标系地心地固ECEF或者高斯投影GKP。 划重点…...

VUE前端实现天爱滑块验证码--详细教程

第一步: Git地址:tianai-captcha-demo: 滑块验证码demo 找到目录 src/main/resources/static,拷贝 static 并改名为 tac 即可。 第二步: 将改为 tac 的文件,放进项目根目录中,如下图: 第三步&#xff1…...

【链表】【删除节点】【刷题笔记】【灵神题单】

237.删除链表的节点 链表删除节点的本质是不用删除,只需要操作指针,跳过需要删除的节点,指向下下一个节点即可! 删除某个节点,但是不知道这个节点的前一个节点,也不知道头节点!摘自力扣评论区…...

springboot339javaweb的新能源充电系统pf(论文+源码)_kaic

毕 业 设 计(论 文) 题目:新能源充电系统的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解…...

【嵌入式——QT】QT制作安装包

第一步 QT程序写好之后,编译release版本 第二步 拿到release生成的.exe文件 第三步 新建文件夹deploy 第四步 将.exe文件复制到deploy目录下 第五步 在该目录下输入cmd指令,回车 第六步 在打开的命令窗口下输入 windeployqt TegNetCom_1.0.…...

python的文件操作练习

文件操作&#xff1a;成绩统计 有一个文件grades.txt&#xff0c;文件内容是每行一个学生的成绩&#xff08;格式&#xff1a;姓名,成绩&#xff09;。要求&#xff1a; 读取文件内容&#xff0c;统计所有学生的平均成绩&#xff1b; 将不及格&#xff08;<60分&#xff09…...

jQuery九宫格抽奖,php处理抽奖信息

功能介绍 jQuery九宫格抽奖是一种基于jQuery库的前端抽奖效果。通过九宫格的形式展示抽奖项&#xff0c;用户点击抽奖按钮后&#xff0c;九宫格开始旋转&#xff0c;最终停在一个随机位置上&#xff0c;此位置对应的抽奖项为用户的中奖结果。 本文实现九宫格的步骤为&#xf…...

2024年一级建造师考试成绩,即将公布!

一级建造师考试成绩一般在考试结束后3个月左右的时间公布&#xff01; 根据官方通知&#xff0c;重庆、江苏、青海、江西、云南、湖南、福建、北京、山西、黑龙江等地在今年一建报名通知里提到&#xff1a;2024年一级建造师考试成绩预计于2024年12月上旬公布。考生可在这个时间…...

M4V 视频是一种什么格式?如何把 M4V 转为 MP4 格式?

M4V 是一种视频文件格式&#xff0c;主要由苹果公司用于其产品和服务中&#xff0c;如 iTunes Store 上的电影和电视节目。这种格式可以包含受版权保护的内容&#xff0c;并且通常与苹果的 DRM&#xff08;数字版权管理&#xff09;技术结合使用&#xff0c;以限制内容的复制和…...

Leetcode 每日一题 104.二叉树的最大深度

目录 问题描述 示例 示例 1&#xff1a; 示例 2&#xff1a; 约束条件 题解 方法一&#xff1a;广度优先搜索&#xff08;BFS&#xff09; 步骤 代码实现 方法二&#xff1a;递归 步骤 代码实现 结论 问题描述 给定一个二叉树 root&#xff0c;我们需要返回其最大…...

文件上传漏洞:你的网站安全吗?

文章目录 文件上传漏洞攻击方式&#xff1a;0x01绕过前端限制0x02黑名单绕过1.特殊解析后缀绕过2..htaccess解析绕过3.大小写绕过4.点绕过5.空格绕过6.::$DATA绕过7.配合中间件解析漏洞8.双后缀名绕过9.短标签绕过 0x03白名单绕过1.MIME绕过(Content-Type绕过)2.%00截断3.0x00截…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

32位寻址与64位寻址

32位寻址与64位寻址 32位寻址是什么&#xff1f; 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元&#xff08;地址&#xff09;&#xff0c;其核心含义与能力如下&#xff1a; 1. 核心定义 地址位宽&#xff1a;CPU或内存控制器用32位…...