DenseFuse:一种红外图像和可见图像的融合方法
摘要:一种解决红外图像和可见图像融合的新型的深度学习框架。
-
编码层(得到更多有用的特征)
- 卷积神经网络层
- 密集块(每层的输出都与其他每层相连)
-
融合层
-
解码器(重建图像)
导言
红外图像可以根据辐射差异将目标与背景区分开来,这在全天候和全天/整夜的情况下效果很好。相反,可见图像与人类视觉系统一致的方式可以提供具有高空间分辨率和清晰度的纹理细节。因此,期望融合这两种类型的图像,这可以结合红外图像中的热辐射信息和可见图像中的详细纹理信息的优点。
过去的方法:
-
信号处理方法的应用
-
多尺度分解
-
基于表征学习的方法
- SR
- HOG
- JSR
-
低秩领域
- LRR
评价:
- 过去的CNN融合方法中只有最后一层结果被用作图像的特征。
- 网络可能无法正确提取典型特征。
本文方法:
- 输入:红外图像,可见图像。
- 编码器和解码器。
- 编码器由卷积层和密集块构成,用于提取特征。每一层的结果都用于构建特征图。
- 解码器用于融合。
- 在密集块中,编码网络中的每一层的输出都会级联接作为下一层的输入。
- 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
- 密集块体系优点
- 保存更多信息
- 促进信息流和梯度在网络间的传递,易于训练
- 具有正则化效果,减轻过拟合的可能性
提出的融合方法
- RGB图像和灰度图像在这个融合框架中是一样的。灰度图像,一张红外图,一张可见图,即输入两个channels。如果是RGB的话应该是六个channels。其他地方没区别。输入的图像根据现有的某种方法进行了编号。以下只考虑灰度图。直接编号输入两张图分别为I1和I2.
- 编码器由C1和密集块构成。
- 编码层的每一层输入都是16个channels。
- 编码层的优点:
- filter是3*3大小的,步长是1,因此适合任何大小的图像。
- 密集块结构能尽可能多地保存深度特征,此操作保证所有的显著特征被用于融合策略。
训练
只考虑编码层和解码层,不考虑融合层。训练直到编码层和解码层的权重都已经固定下来,之后再用适应性融合策略把编码网络提取的深层特征融合。
此训练策略的优点:为特殊的融合任务设计特殊的融合层;为融合层的改进留出更多空间。密集块之间是级联:
最小化损失函数: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
可于此链接下载