DeepFuse: A Deep Unsupervised Approach for Exposure Fusion with Extreme Exposure Image Pairs 阅读笔记

DeepFuse: A Deep Unsupervised Approach for Exposure Fusion with Extreme Exposure Image Pairs 阅读笔记

论文地址:https://arxiv.org/abs/1712.07384

如有侵权请联系我们

引言

文章中提出了一种基于深度学习架构,用于融合多曝光图像的算法

在神经网络的训练过程,一般都是监督学习,这样训练出的神经网络都有很不错的效果。但是由于没有足够的数据集供其使用,所以该篇论文提出了无监督的MEF(多曝光融合)深度学习框架。

介绍

首先引入HDRI的概念,这是一种存储图像的格式,相对于RGB格式来说,HDRI有更大的亮度范围,图像会更好,更清晰。

比较流行的生成HDR图像的方法被称为MEF(多次曝光融合),该方法就是将具有不同曝光的多个LDR图像(例如我们熟知的jpg,png等)融合为一个HDR图像。不同曝光的多个LDR文件也被称为曝光堆栈。

如果曝光堆栈中多个图像之间的曝光偏差最小时,大部分的MEF算法都可以取得不错的效果。但是这就带来了一个问题,曝光偏差小时,就意味着我们需要更大的存储容量以及更长的处理时间,论文中的方法是直接输入一个图像对,曝光偏差可以很大,该论文在这种情况下也可以工作的不错。

主要贡献

一种基于CNN的无监督图像融合算法,用于融合曝光叠加静态图像对。

一个新的基准数据集,可用于比较各种MEF方法

针对各种自然图像的7种最新算法的广泛实验评估和比较研究

提出的方法

总体架构

论文中使用的是使用CNN的图像融合框架。

为什么使用CNN?
因为CNN可以通过损失函数来自动更新网络中的参数,使得输出的结果不断地逼近预测值,运用在图像融合上也是一样,通过我们设定好的损失函数,CNN的输出图像结果就会逐渐趋近我们希望的结果。

主要流程

将输入曝光堆栈转换为YCbCr色通道数据。CNN用于融合输入图像的亮度通道。这是因为亮度通道中存在图像结构细节,亮度通道中的亮度变化比色度通道中的明显。

获得的亮度通道

网络结构

在这里插入图片描述
如上所示,特征提取层(C11,C21,C12和C22),融合层(Tensor addition)和重构层(C3,C4,C5)。

输入的Y1和Y2分别为曝光不足和曝光过度的图像。

C11和C12,C21和C22的参数是共享的,这有什么好处呢?
从另一角度来说C11,C21和C12,C22提取的特征是相同的,这就使得提取出的F11和F21可以通过融合层直接融合。这里融合的策略是直接相加。

损失函数

因为MEF没有预期的输出图像,因此像监督学习中使用的各种损失函数,在这里就不适用了,这里使用MEF SSIM作为损失函数,详情可参考以下论文。

K. Ma, K. Zeng, and Z. Wang. Perceptual quality assess-
ment for multi-exposure image fusion. IEEE Transactions
on Image Processing, 24(11):3345–3356, 2015.

在这里插入图片描述

如上图,yk代表表示在输入图像p像素位置周围提取的块,这里k属于(1,2),即代表一张高曝光和曝光不足的图像;uyk代表yk的平均值,Ck代表yk这里的对比度,Sk代表结构,Lk代表亮度

知道了以上公式之后我们再往下看

对比度越高,图像越好,因此这里c hat(就是c的预测值)就是两张图像中yk中的最大的c

在这里插入图片描述

结构的预测值公式如下

在这里插入图片描述

总体的y的预测如下
在这里插入图片描述
由于局部面片中的亮度比较不重要,因此从上述等式中删除亮度分量(文章中提到的,不是很理解)

以上都是为损失函数做铺垫,接下来才到了真正的损失函数

在这里插入图片描述
在这里插入图片描述
σ2y hat 是y hat的的方差,σy hat yf是是二者之间的协方差,N是图中像素总数

以上就是对论文中的损失函数的介绍了

训练

训练数据
25个公开的曝光堆栈+50个不同场景特征的曝光堆栈,每个场景由两个LDR图像组成。

在这些堆栈中剪裁了30000个大小为64*64的图像用于训练。

训练参数
学习率为10的-4次方,经过100次训练,每次训练所有的数据

测试

遵循标准的交叉验证程序来训练模型,并在不相交的测试集上测试最终模型。

图像的关键细节主要再Y通道上,因此Y通道和Cb/Cr所采用的融合策略是不同的

此外,MEF SSIM损失被公式化以计算2个灰度(Y)图像之间的得分

不知道大家有没有和我一样的疑惑,这里为什么是计算两个灰度图像之间的得分,来看下百度给结果
在这里插入图片描述
前文中我们已经提到了,论文中的方法主要是融合Y通道,这就很明朗了。

小细节

  • 这里和之前阅读的一篇论文中一样,都需要对输入的图像进行配准和对齐,因为在采集过程中,不可避免的会出现摄像机和物体的移动。 另一篇论文
  • 这里的相加策略中是单纯的相加,这时候我们想如果在两张图像中,一张图像中的特征是我们希望在融合时占的比重较大,另一张占的较小,这样实现起来也许融合图像的效果会更好,但是这就要我们计算融合时的权重了,而经过论文作者的测试,发现增加C3后的过滤器和层数也可以达到这个效果。(神经网络yyds)

待续

关于实验结果以及总结部分,这里就不赘述了,大家有兴趣可以看一下

文章读的比较糙,因为我的目的主要是想了解这个MEF SSIM损失函数,大家如果有兴趣的话建议好好读一下,非常好的论文

参考

[1] DeepFuse: A Deep Unsupervised Approach for Exposure Fusion with Extreme
Exposure Image Pairs

### 关于低照度图像增强中的多曝光融合数据集 在研究领域中,针对低照度图像增强(Low-Light Image Enhancement, LLIE),特别是基于多曝光融合(Multi-Exposure Fusion, MEF)的方法,确实存在一些公开的数据集可以供研究人员使用。以下是关于这些数据集的相关信息: #### 数据集概述 目前并没有专门标注为“low-light enhancement MEF”的单一标准数据集,但在相关研究中有一些常用的数据集被广泛采用。例如,在论文 “DeepFuse: A Deep Unsupervised Approach for Exposure Fusion with Extreme Exposure Image Pairs” 中提到的研究方法依赖于极端曝光图像对来训练模型[^3]。因此,类似的多曝光图像对数据集对于实现LLIE目标非常重要。 #### 常见的多曝光融合数据集 1. **FiveK Dataset**: 虽然 FiveK 主要是面向专业摄影后期处理设计的,但它包含了大量不同光照条件下的图片以及对应的调整版本,适合用来模拟多种曝光情况并构建自定义的MEF数据集。 2. **LIME Dataset**: 提出了轻量级逆向映射网络(Low-Illumination Image Enhancement),该数据集中包含了一些低亮度环境的照片及其正常曝光后的对比样本,可用于验证和测试新的算法效果[^1]。 3. **MPRNet Dataset**: 这是一个更现代化的选择,专注于恢复真实世界场景下拍摄到的各种恶劣条件下(包括但不限于弱光)损坏严重的照片质量。尽管它并非完全聚焦于传统意义上的MEF技术路径上,但其丰富的案例能够很好地补充这一方向上的需求空白。 4. **Custom Synthesized Datasets**: 如果上述现成资源无法满足特定实验要求,则可以通过程序化手段合成定制化的multi-exposure pairs作为替代方案之一。比如利用Adobe Lightroom或者Photoshop软件手动创建一系列具有不同程度过曝/欠曝特征的目标对象实例;又或者是借助计算机视觉工具箱自动完成相应操作过程——即先选定一张原始素材图象,再分别应用正负两级偏移参数生成对应位置处的新版副本文件集合。 #### Python脚本示例:如何生成简单的多曝光图像对 下面提供了一个简单Python脚本来展示怎样快速制作基础款式的双倍数列形式分布结构类型的假想资料组群: ```python import cv2 import numpy as np def adjust_exposure(image_path, gamma): img = cv2.imread(image_path).astype('float32') / 255. adjusted_img = ((img**(1/gamma)) * 255.).clip(0, 255).astype(np.uint8) return adjusted_img original_image = 'path_to_your_original_image.jpg' underexposed = adjust_exposure(original_image, 2.) # Gamma correction to underexpose overexposed = adjust_exposure(original_image, 0.5) # Gamma correction to overexpose cv2.imwrite('underexposed.jpg', underexposed) cv2.imwrite('overexposed.jpg', overexposed) ``` 此代码片段展示了通过改变伽马值来进行基本的曝光调节功能实现方式,并保存结果至本地磁盘当中去以便后续进一步分析探讨之用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王不头秃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值