C. Wei, W. Wang, W. Yang, and J. Liu, “Deep retinex decomposition for low-light enhancement,” in BMVC, 2018.
-
总的来说,就是提出利用一个分解网络首先将输入的图片分解为照度分量和反射分量,然后用一个增强网络调节照度分量,并用去噪算法对反射分量进行去噪。将去噪后的反射分量和增强后的照度分量相乘得到增强结果。同时提出了一个数据集.
-
这里有一段对基于Retinex的模型的介绍:
-
为了训练分解网络,设定了两个约束:1. 成对的亮图和暗图其反射分量应该相同;2. 照度分量要平滑且保留主要结构信息(阴影等),用修改后的总变分损失来约束。
-
总的来说,loss是由三部分组成
-
首先是重建损失。首先输入一组paired的图片,低光的和低光自身可以算一个分解后的重建损失,正常光照同理,然后正常光照分解后的反射分量和低光的照度分量相乘可以和低光图片算一个重建损失,低光照分解后的反射分量和正常光照的照度分类相乘可以和正常光照图片算一个重建损失。个人觉得这个设计非常巧妙。
-
然后是反射分量的损失,指低光照图片分解后的反射分量和正常关照图片分解后的反射分量的差求绝对值
-
对于照度分量,我们希望它不具有太多纹理,但又要保存结构信息,也即一些边界。换句话说,有些梯度我们是要的,比如光被挡住之类的形成的一个强梯度,有些梯度我们是不需要的比如物体表面的颜色性纹理。为此如果直接采用总变分损失来最小化图片整体的梯度,会丢失掉我们想要保留的边界,因此文章对TV Loss做了修改:
-
上述修改使用了反射分量梯度的负对数来加权照度分量的变分损失,因此梯度强烈的地方损失会因为这个对数权重而变小,从而保留结构信息导致的强梯度。注意这里用的是反射分量的梯度,而LIME中使用的是照度分类(不仅不是反射分量而且不是梯度)。我感觉这里使用反射分量的梯度其实也不太合理的样子。比如,如果一面墙上有许多黑白斑点,那么照度分类在这里应该是平缓的而不会有很多陡峭的变换,可反射分量就会有很多陡峭的梯度,这时利用反射分量的梯度的负对数来加权照度分类的总变分损失就是错误的。
-
由于我们希望照度分量尽量平滑,那么噪声就多数留在了反射分量。为此要对反射分量进行去噪。用的是BM3D(非深度学习)这个算法来去噪的