发布时间:2023-06-25 18:00
在弱光条件下拍摄的图像通常能见度较差。除了不令人满意的照明,由于有限的相机质量,还有多种类型的退化,如噪音和颜色失真,被隐藏在黑暗中。换句话说,仅仅提高黑暗区域的亮度将不可避免地放大隐藏的退化。这项工作建立了一个简单而有效的\"点燃黑暗\"的网络(该网络为KinD),受Retinex理论的启发,将图像分解为两个部分。一个部分(照明 illumination)负责光照调节,而另一个部分(反射 reflectance)负责去除退化。这样,原始空间被解耦成两个更小的子空间,期望得到更好的正则化/学习。值得注意的是,“我们”的网络是用在不同条件下拍摄的成对图像来训练的曝光条件,而不是使用ground-truth的真实反射率和照明信息。大量的实验证明了“我们”的设计的有效性和它优于目前最先进的算法。“我们”的产品对严重的视觉缺陷具有很强的鲁棒性,并且用户友好,可以任意调整光照水平。此外,“我们”的模型在2080Ti GPU上处理VGA分辨率的图像所花费的时间不到50ms。以上优点使“我们”的成果具有实用价值。
KinD由Layer Decomposition(层次分解) 、Illumination Adjustment(照明度调节)、 Reflectance Restoration(反射率恢复)三个部分组成。
该网络用两张不同光照程度 I l 、 I h I_l、I_h Il、Ih的成对图像来训练网络,而 I h I_h Ih不再需要是ground-truth。
论文中并没有对网络中的细节有很详细的阐述,于是我去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:
分解出的 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部分中引入一个人为设置的参数 α \\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层的调整结果。
根据先验知识,噪声是复杂分布在反射图 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。