【论文介绍】
本文提出用自己制作的弱光/正常光图像对的弱光数据集LOL数据集,利用Retinex理论中的不同光照下的图片反射率是相同的这一特点让其共享反射率,通过一个分解网络和一个增强网络对低照度图片进行处理得到最终增强的结果。
【题目】:Deep retinex decomposition for low-light enhancement
【DOI】:10.48550/arXiv.1808.04560
【时间】:2018-08-14上传于arxiv
【会议】:2018 British Machine Vision Conference(BMVC)
【机构】:北京大学
【论文链接】:https://arxiv.org/abs/1808.04560
【代码链接】:https://github.com/weichen582/RetinexNet
【工程链接】:https://daooshee.github.io/BMVC2018website/
【提出问题】
以前的方法受到反射和光照分解模型容量的限制,很难设计出适用于各种场景的有效的图像分解约束条件。此外,照明图的操作也是手工制作的,这些方法的性能通常依赖于仔细的参数调整。
【解决方案】
提出了一种数据驱动的Retinex分解方法。建立了一个融合图像分解和连续增强操作的深度网络。首先,利用子网络—解压网络将观测图像分割为不依赖光线的反射率和结构感知的平滑光照。解压网络是在两个约束条件下学习的。首先,低/正常光图像具有相同的反射率。其次,光照图要平滑,但保留主要结构,这是通过感知结构的总变化损失得到的。然后,另一个增强网络调整光照图以保持大区域的一致性,同时通过多尺度连接来裁剪局部分布。由于噪声在黑暗区域往往更大,甚至在增强过程中被放大,因此引入了反射率去噪。
【创新点】
- 用在真实场景中捕获的成对的低/正常光图像构建了一个大型数据集。LOL数据集:
- 构造了一种基于Retinex模型的深度学习图像分解算法。分解网络与连续的弱光增强网络进行端到端训练,因此该框架具有良好的光状态调节能力。
- 提出了一种结构感知的全变差约束用于深度图像分解。在梯度很强的地方,通过减轻总变化的影响,约束成功地平滑了照明图并保留了主要结构。
【网络结构】
Retinex-Net框架的增强过程分为分解、调整和重构三个步骤。
在分解步骤中,子网络DECO-NET将输入图像分解为反射率R和照度I。
首先使用3 × 3卷积层从输入图像中提取特征。然后,采用几个以直线矫正单元(ReLU)为激活函数的3×3卷积层,对RGB图像进行反射率和光照映射。一个3×3卷积层从特征空间投影R和I,用sigmoid函数约束R和I在[0,1]的范围内。
它在训练阶段采用低光/正常光图像对,而在测试阶段仅采用低光图像作为输入。在低光/正常光图像具有相同反射率和光照平滑度的约束下,Decom-Net学习以数据驱动的方式提取不同光照图像之间的一致性R。
在随后的调整步骤中,基于Enhance-Net的编码器-解码器使照明变亮。引入多尺度拼接,从多尺度角度对光照进行调整,来保持光照与大区域中的上下文信息的全局一致性,同时调整具有集中注意力的局部分布。反射上的噪声也在该步骤中被去除。
最后,通过逐元素乘法来组合调整的照明和反射。对调整后的光照和反射率进行重建,得到增强后的结果。
Enhance-Net 多尺度照明调整
编码器-解码器架构在大区域中获取上下文信息。输入图像被连续下采样到一个小尺度,在这个尺度上网络可以有一个大尺度光照分布的透视图。这给网络带来了自适应调整的能力。利用大规模光照信息,上采样块重建局部光照分布。通过逐元素求和从下采样块到其对应的镜像上采样块引入跳跃连接,这强制网络学习残差。
为了分层调整光照,即保持全局光照的一致性,同时调整不同的局部光照分布,引入了多尺度拼接。如果存在M个渐进上采样块,其中每个块提取C通道特征图,则我们通过最近邻插值在不同尺度上调整这些特征的大小到最终尺度,并将它们连接到C×M通道特征图。然后,通过1×1卷积层,将级联的特征简化为C个通道。随后是3×3卷积层以重构照明图^I。
下采样块由步长为2的卷积层和ReLU组成。在上采样块中,使用调整大小卷积层。如[19]所示,它可以避免伪影的棋盘图案。调整大小卷积层由最近邻域插值操作、跨距为1的卷积层和ReLU组成。
图像的尺度 :这里图像的尺度并非指图像的大小,而是指图像的模糊程度(σ),例如,人近距离看一个物体和远距离看一个物体模糊程度是不一样的,从近距离到远距离图像越来越模糊的过程,也是图像的尺度越来越大的过程。
【Retinex】
R - 反射率:描述了被捕获物体的内在属性,被认为在任何光照条件下都是一致的。
I - 照度:代表物体上的各种亮度。在低光图像上,它通常会受到黑暗和不平衡的照明分布的影响。
本文先把S分解成R和I,然后对R和I进行调整得到^R和^I,最后把^R和^I重组得到最终增强的^S。
【损失函数】
L = 重建损失Lrecon + 不变反射率损失Lir + 照明平滑度损失Lis:
1、Deco-Net 重构损失 Lrecon
在第一步DECO-NET分解之后得到的R和I与S的重构损失
2、不变反射率损失Lir
约束反射率的一致性
3、结构感知的全变差最小化(TV)照明平滑度损失Lis
照明图的一个基本假设是局部一致性和结构感知,如[9]所述。换句话说,一个好的光照图解决方案应该是在纹理细节上平滑的同时仍然能够保持整体结构边界。
为了使损失能反映图像的结构,对原始的TV函数采用反射图梯度加权。
其中,∇表示包括∇H(水平)和∇V(垂直)的梯度,λg表示平衡结构意识强度的系数。利用权重exp(-λg∇Ri),Lis放松了对反射梯度陡峭的地方的平滑度的约束,换句话说,图像结构所处的地方和照明应该不连续的地方。
全变差最小化 (TV):是将整个图像的梯度最小化的算法,经常被用作各种图像恢复任务的平滑先验。然而,直接使用TV作为损失函数在图像具有强结构或亮度剧烈变化的区域失效。这是由于统一的减少梯度的照明图无论该区域是文本细节或强边界。换句话说,TV损失是结构盲性的。光照模糊,反射率上留下强黑边,如图2(g)所示。
全变差最小化 (TV):[2] An augmented lagrangian method for total variation video restoration. paper
4、多尺度照明调整的 Enhance-Net 增强损失
照明增强网络采用编码器-解码器架构的整体框架。 为了从分层的角度调整光照,我们引入了多尺度连接,如图 1 所示。
Enhance-Net 的损失函数 L = 重建损失 Lrecon (Eq.6)+ 光照平滑度损失 Lis (Eq.5)
Lrecon (Eq.6)在第二步Enhance-Net调整后的得到的^I和Rlow与Snormal的重构损失
【LOL数据集】
- 包含 500 个低光/正常光图像对。
- 原始图像被调整为 400×600 并转换为便携式网络图形格式。
- 使用三步法来消除我们数据集中图像对之间的错位。
三步法消除低光/正常光图像对之间的错位:
- 第一步:获得两个正常光图像,称为 N1 和 N2。
- 第二步:更改曝光时间和 ISO 以捕捉多张低光图像。
- 第三步:将曝光时间和ISO重置为原始设置,获得另外两张正常光图像N3和N4。
- 分别计算四张图片 ground-truth 的均值 G 和 MSE(mean squared error 均方误差)的均值 M。
- 当 M 值较大时,四个正常光图像之间存在严重的错位。因此,应从数据集中删除相应的对。阈值设置为 0.1。
三步法:[1] RENOIR - A Dataset for Real Low-Light Image Noise Reduction paper
【实验结果】
1、增强结果
本文的方法在没有过度曝光的情况下,充分照亮了隐藏在暗亮度中的物体,得益于基于学习的图像分解方法和多尺度定制的光照图。
2、增强和降噪联合的结果
Retinex-Net 更好地保留了细节,而 LIME 和 JED 模糊了边缘。
依赖于照明的去噪策略:
在 Retinex-Net 中使用 BM3D [3] 作为去噪操作。由于噪声在反射率上被不均匀地放大,使用照明相对策略。
在不同的区域中,噪声的大小不相同。通过将照明与原始图像分开来放大黑暗区域中的噪声。为了防止明亮部分的过度平滑和黑暗部分的噪声,采用了依赖于照明的去噪策略。
其中I代表分解结果光照,Rt代表每次迭代t后的反射率,R0是R,BM3D(·)代表BM3D算法,σt是它的参数。 等式(4)和等式(5)为等式(6)生成照明引导图。 等式(4)删除已经清洁的区域,等式(5)加强噪声区域。 在等式(6)中,较暗的区域由 BM3D 去噪并与当前反射率相结合。 最后该操作迭代 3 次,UB1 = 1, α1 = 1, σ1 = 10, UB2 = 0.08, α2 = 10, σ2 = 20, UB3 = 0.03, α3 = 100 和 σ3 = 40。
BM3D去噪操作:
如图所示,算法一共分为两阶段,第一阶段主要实现了一个基于patch的硬阈值滤波,第二阶段主要实现了一个基于patch的维纳滤波,这里注意,BM3D的处理都是基于patch进行的,其中硬阈值滤波的过程只是一个预滤波的过程,而实际的降噪结果是来自于第二阶段的维纳滤波。图像降噪算法——从BM3D到VBM4D_Leo-Peng的博客-CSDN博客
BM3D: [3] Image denoising with blockmatching and 3d filtering paper