Deep Retinex Decomposition for Low-Light Enhancement
根据Retinex方法,任意一幅图像S可以表示为

其中变量R代表反射分量、变量I代表光照分量,并采用运算符符号○进行对应点相乘操作。研究表明,在这种情况下、变量R主要受物体表面特性所决定并呈现固定值特征、相比之下、变量I则受外界光照变化的影响而呈现可变特征。基于此观察、研究者建议采用RetinexNet模型来模拟这些可变光栅特征
模型包含3个部分:分解、调整和重建,分解和调整过程各训练一个模型。

本节介绍一种基于深度学习的方法用于将单幅自然光图片分解为光照与反射成分。通过深度学习算法提取出目标场景中物体表面微facet方向信息以及环境光的方向信息。在初始阶段对输入图片应用了一个未激活的基础三维卷积层。接着进行了五次连续的应用带有ReLU激活函数的操作。随后又应用了一个带有sigmoid激活函数的额外三维卷积层来生成具有四个通道的结果图。
损失函数包含三个部分:重建损失、反射分量损失、光照分量损失。

重建损失:

即模型预测的光照分量I和反射分量R点乘应该和原图尽可能相近。
反射分量损失:

基于Retinex理论可知, 其反映物体特性的成分具有稳定性, 因此在不同光照条件下(不论是高光还是低光), 两幅图像应尽量使各自的反射成分保持一致
光照分量损失:

作者认为最佳的光照分量应在纹理细节中相对平滑,并能够较好地维持整体结构的边界。当直接采用TV损失时(即TV损失存在结构性盲点问题),因为该损失计算的是全局梯度的累加平均值,在面对复杂场景或强烈光照变化时会显著增加误差(此处强调了其局限性)。此外(因为)光照分量I往往表现出强烈的光线变化趋势(此处补充说明了问题所在),所以为了改善这一缺陷(此处指出改进目标),作者建议利用反射分量R的梯度图来作为权重分配依据。
调整模型:首先通过分解模型获得光照分量I以及反射分量R并将其输入到增强网络;其次对反射分量R进行降噪处理以提升整体效果。
- 增强网络结构如下

输入由分解模型得到的光照分量I和反射分量R进行连接。未对第一个及最后两个卷积操作应用relu激活函数。
损失函数包含:重建损失和光照分量损失
重建损失:

光照分量损失

2、反射分量去燥:使用BM3D方法
用于重建图像的过程中
实验:batch_size = 16 ,训练patch_size = 96

代码分析:

为什么需要先求三个通道的最大值?
为什么第一个卷积使用9*9卷积?感觉是代码写错了。

在计算光照分量损失权重时为何选择使用梯度的平均值?主要目的是为了缓解由于光照变化剧烈或存在强结构所带来的视觉盲区问题。然而,反射分量的梯度图也可能面临类似的挑战,因此采用平均化的处理方式有助于缓解这一问题。
