【读论文】DenseFuse: 一种红外图像和可见图像的融合方法

摘要:一种解决红外图像和可见图像融合的新型的深度学习框架。

  • 编码层(得到更多有用的特征)

    • 卷积神经网络层
    • 密集块(每层的输出都与其他每层相连)
      在这里插入图片描述
  • 融合层

  • 解码器(重建图像)
    本文提出的网络架构

导言

红外图像可以根据辐射差异将目标与背景区分开来,这在全天候和全天/整夜的情况下效果很好。相反,可见图像与人类视觉系统一致的方式可以提供具有高空间分辨率和清晰度的纹理细节。因此,期望融合这两种类型的图像,这可以结合红外图像中的热辐射信息和可见图像中的详细纹理信息的优点。

过去的方法:
  • 信号处理方法的应用

  • 多尺度分解

  • 基于表征学习的方法

    • SR
    • HOG
    • JSR
  • 低秩领域

    • LRR
评价:
  1. 过去的CNN融合方法中只有最后一层结果被用作图像的特征。
  2. 网络可能无法正确提取典型特征。
本文方法:

在这里插入图片描述

  • 输入:红外图像,可见图像。
  • 编码器解码器
    • 编码器由卷积层密集块构成,用于提取特征。每一层的结果都用于构建特征图
    • 解码器用于融合。
    • 在密集块中,编码网络中的每一层的输出都会级联接作为下一层的输入。
    • DenseBlock 密集块:任何一层都与后续所有层直接相连。
def conv2d_dense(x, kernel, bias, use_relu=True):
    # padding image with reflection mode
    x_padded = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]], mode='REFLECT')

    # conv and add bias
    # num_maps = x_padded.shape[3]
    # out = __batch_normalize(x_padded, num_maps)
    # out = tf.nn.relu(out)
    out = tf.nn.conv2d(x_padded, kernel, strides=[1, 1, 1, 1], padding='VALID')
    out = tf.nn.bias_add(out, bias)
    out = tf.nn.relu(out)
    # concatenate
    out = tf.concat([out, x], 3)

    return out
  • 密集块体系优点
    1. 保存更多信息
    2. 促进信息流和梯度在网络间的传递,易于训练
    3. 具有正则化效果,减轻过拟合的可能性

提出的融合方法

  1. RGB图像和灰度图像在这个融合框架中是一样的。灰度图像,一张红外图,一张可见图,即输入两个channels。如果是RGB的话应该是六个channels。其他地方没区别。输入的图像根据现有的某种方法进行了编号。以下只考虑灰度图。直接编号输入两张图分别为I1和I2.
  2. 编码器由C1和密集块构成。
  3. 编码层的每一层输入都是16个channels。
  4. 编码层的优点:
    1. filter是3*3大小的,步长是1,因此适合任何大小的图像。
    2. 密集块结构能尽可能多地保存深度特征,此操作保证所有的显著特征被用于融合策略。
训练

只考虑编码层和解码层,不考虑融合层。训练直到编码层和解码层的权重都已经固定下来,之后再用适应性融合策略把编码网络提取的深层特征融合。

此训练策略的优点:为特殊的融合任务设计特殊的融合层;为融合层的改进留出更多空间。密集块之间是级联:
在这里插入图片描述

最小化损失函数:L=λLssim+Lp来修正权重。

​ Lp:像素损失 = || O - I ||2

​ Lssim:结构相似性损失 = 1 - SSIM( O , I )

​ λ:用于修正两种损失的尺度差异。

使用MS-COCO作为输入图像训练网络,其中包含80000个图像,所有这些图像都调整为256*256,RGB图像转换为灰色图像,学习率设置为1 * 10-4。一次训练2个样本,训练4次。

融合层策略
加法策略

在这里插入图片描述

l1-norm策略

在这里插入图片描述

others:

该文献相关resources和代码存放于此链接
原文献为:《DenseFuse: A Fusion Approach to Infrared and Visible Images》
DOI: 10.1109/TIP.2018.2887342
可于此链接下载

### DenseFuse 图像融合框架的使用与实现细节 #### 密度融合的概念 图像融合一种将多张不同模态或同一场景下的图片合成一张更高质量图像的技术。DenseFuse一种基于卷积神经网络 (CNN) 的图像融合框架,旨在通过学习特征表示来提高融合效果。 #### 安装依赖项 为了使用 DenseFuse 进行开发研究工作,需安装必要的 Python 库以及配置好支持 CUDA 加速的环境。验证 GPU 是否具备 CUDA 计算能力可以通过命令 `$ lspci | grep -i nvidia` 来完成[^3]。接着可以利用 pip 或 conda 工具安装 PyTorch torchvision 等机器学习库。 #### 数据准备 准备好待处理的数据集对于任何深度学习项目都是至关重要的一步。通常情况下,数据会被划分为训练集、验证集测试集三部分。这些数据应该按照特定结构存储于文件夹中以便后续加载器取。 #### 构建模型架构 构建一个有效的 CNN 模型用于图像融合涉及多个方面的工作。这包括但不限于定义编码器-解码器结构、设计损失函数、选择优化算法等。具体到 DenseFuse 中,则采用了密集连接的方式使得每一层都能接收到前面所有层的信息输入,从而增强了梯度传播效率并促进了更好的特征提取性能。 ```python import torch.nn as nn class Encoder(nn.Module): def __init__(self): super(Encoder, self).__init__() # Define layers here def forward(self,x): pass class Decoder(nn.Module): def __init__(self): super(Decoder,self).__init__() # Define layers here def forward(self,x): pass class DenseFusionNet(nn.Module): def __init__(self): super(DenseFusionNet, self).__init__() self.encoder = Encoder() self.decoder = Decoder() def forward(self,img1,img2): feat1=self.encoder(img1) feat2=self.encoder(img2) fused_feat=(feat1+feat2)/2.0 # Simple averaging; more sophisticated methods exist. output_img=self.decoder(fused_feat) return output_img ``` #### 实验设置与评估指标 当完成了上述准备工作之后就可以着手开展具体的实验了。此时应当考虑如何衡量所得到的结果好坏与否。常用的评价标准有 PSNR(峰值信噪比)、SSIM(结构相似性指数)等等。此外还可以借助可视化手段直观感受最终生成图的质量差异。 #### 开源资源分享 类似于其他科研成果共享模式一样,在完成一系列探索后会把整个流程打包成易于使用的工具包提供给社区成员共同进步发展。例如文中提到的一个开源库就整合了多种先进的自然语言处理技术,并提供了便捷接口让用户能够快速上手尝试新想法[^2]。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值