论文阅读笔记:Kindling the Darkness: A Practical Low-light Image Enhancer
摘要
在弱光条件下拍摄的图像通常能见度较差。除了不令人满意的照明,由于有限的相机质量,还有多种类型的退化,如噪音和颜色失真,被隐藏在黑暗中。换句话说,仅仅提高黑暗区域的亮度将不可避免地放大隐藏的退化。这项工作建立了一个简单而有效的"点燃黑暗"的网络(该网络为KinD),受Retinex理论的启发,将图像分解为两个部分。一个部分(照明 illumination)负责光照调节,而另一个部分(反射 reflectance)负责去除退化。这样,原始空间被解耦成两个更小的子空间,期望得到更好的正则化/学习。值得注意的是,“我们”的网络是用在不同条件下拍摄的成对图像来训练的曝光条件,而不是使用ground-truth的真实反射率和照明信息。大量的实验证明了“我们”的设计的有效性和它优于目前最先进的算法。“我们”的产品对严重的视觉缺陷具有很强的鲁棒性,并且用户友好,可以任意调整光照水平。此外,“我们”的模型在2080Ti GPU上处理VGA分辨率的图像所花费的时间不到50ms。以上优点使“我们”的成果具有实用价值。
论文要点
论文旨在解决的问题
- 实际上弱光图像并不存在绝对的ground-truth,对于不同的人/需求,最喜欢的照明水平可能是多种多样。
- 在没有ground-truth的情况下,该如何去训练网络。
- 黑暗区域中的噪声往往更难去除,要如何设置模型对其进行降噪、颜色保真?
论文中所采用的方案
- 引入一个人为设置的参数来控制照明的增强程度。用一对不同光照强度的图像来训练模型。
- 根据先验知识来寻求不同光照图像的关系,构建合适的损失函数来指导模型训练。
- 噪声是复杂分布在反射图R中,分布很大取决于光照L分布,故利用L来辅助重构R。此外,还解决了颜色失真的问题。
网络设计
KinD由Layer Decomposition(层次分解) 、Illumination Adjustment(照明度调节)、 Reflectance Restoration(反射率恢复)三个部分组成。
该网络用两张不同光照程度
I
l
、
I
h
I_l、I_h
Il、Ih的成对图像来训练网络,而
I
h
I_h
Ih不再需要是ground-truth。
Layer Decomposition
网络结构
论文中并没有对网络中的细节有很详细的阐述,于是我去github找了该论文的源码,仔细阅读了源码,发现图中网络与源码在某些细节上(如层数)有细微的差别,这可能是因为原作者后续又细微修改了代码的原因。
损失函数
-
根据先验知识,不同光照程度的图像分解出的反射率map应该相同,故有反映其相似度的 l o s s loss loss:
R l 、 R h R_l、R_h Rl、Rh分别为 I l 、 I h I_l、I_h Il、Ih在Layer Decomposition 层分解出的反射率map。 -
对于分解出的照明度map来说,照明度map具有结构光滑的性质。于是作者引入了相对于输入图像照明结构的平滑度项 l o s s loss loss:
-
同时引入了分解出的光照图L的相互平滑度 l o s s loss loss:
-
分解出的 R 、 L R、L R、L,应该要具备通过 I = R ∘ L I=R\circ L I=R∘L式子可还原为原来图像 I I I的性质。故引入了反映分解准确度的 l o s s loss loss:
最后结合以上 l o s s loss loss,Layer Decomposition 的损失函数为:
Illumination Adjustment
网络结构
作者在Illumination Adjustment部分中引入一个人为设置的参数
α
\alpha
α来控制照明的增强程度。该参数在网络中直接与
L
L
L map 联合一起作为Illumination Adjustment的输入。在训练过程中,
α
\alpha
α由
α
=
L
t
/
L
s
\alpha=L_t /L_s
α=Lt/Ls来定义。其中
L
t
L_t
Lt为调整目标,
L
s
L_s
Ls为待调整的图像,
L
t
与
L
s
都
可
以
为
L
l
o
r
L
h
L_t与L_s 都可以为L_l or L_h
Lt与Ls都可以为LlorLh,
α
\alpha
α大于1还是小于1反映着该网络是增强亮度还是降低亮度。
损失函数
引入反映增强后的相似度项
l
o
s
s
loss
loss:
L
^
\hat{L}
L^为Illumination Adjustment层的调整结果。
Reflectance Restoration
网络结构
根据先验知识,噪声是复杂分布在反射图
R
R
R中,分布很大取决于照明度
L
L
L分布,故利用
L
L
L来辅助恢复R。因此在Reflectance Restoration层中,作者将分解出的
R
、
L
R、L
R、L一同联合作为输入,来重建
R
R
R。
损失函数
采用恢复结果
R
^
\hat{R}
R^与目标结果
R
h
R_h
Rh的
L
2
L_2
L2距离以及SSIM、两map梯度的
L
2
L_2
L2距离作为该模块的损失函数:
相关试验
训练模型所使用的数据集:LOLdataset。
实验结果:
- 在LOL数据集中验证得出的结果(源码显示:使用的ratio=5.0):
- 与各前沿算法的增强结果的视觉比较:
从上图来看,KinD的增强结果噪声更少、颜色更加真实。 - 除了在LOLdataset中验证外,作者还将KinD与其他前沿算法在LIME、NPE、MEF数据集中验证,并比较各算法的验证结果:
NIQE为一个常用的无参考图像的图像质量评价指标,NIQE值越小代表该图像质量越好。
个人对该模型的评价
优点
- 用一对不同光照强度的图像来训练模型,无需ground-truth。
- 根据先验知识来寻求不同光照图像的关系,构建了合适的损失函数来指导模型训练。
- 噪声是复杂分布在反射图R中,分布很大取决于光照L分布,故利用了L来辅助重构R。此外, 还解决了颜色失真的问题。
- 模型较轻量,处理效率高。
缺点/不足之处
- 作者通过引入一个人为设置的参数来控制照明的增强程度,来辅助指导无需ground-truth的模型训练,虽说可以算是"用户友好",但这也会导致在验证时或实际应用时,将难以人工选取较合适的参数α。
- 在论文中没有对α的选择做探讨,特别是验证过程时α的选择
- 对各 l o s s loss loss功能还可以进一步作消融实验,以验证 l o s s loss loss设计的合理性。