Zero-Reference Deep Curve Estimation for Low-Light Image Enhancement CVPR2020
pdf:https://li-chongyi.github.io/Proj_Zero-DCE.html
算法思想:结合CNN和递归迭代计算图像每个像素映射方程来曾强图像
亮点:不需要成对训练数据;仅训练每个像素的增强高阶方程参数;网络损失函数考虑了图像空间一致性,曝光,颜色一致性和亮度
难点:
1. 确定怎样的方程式子?
作者确定的方程式如下:
该方程式需要满足三个条件:输出值【0,1】,避免计算过程中值溢出;简单且可微;保证图像相邻相邻像素的差异,其中阿尔法就是需要学习的参数,不但可以增强图像,也可以控制曝光。不过作者没有给出为啥只有这个式子满足条件,其它可能式子是否更合适?
2. 如何迭代?
迭代方式如下:
原理类似于递归调用,上一次计算的输出作为本次的输入,不断迭代,可以理解为对输入图像不断进行这样的迭代,不断尝试,直到找到最优图像,也即loss最小。不过迭代多少次,本文从实验获取为8次。如何使得n也可以作为学习参数呢?
3. 怎样与CNN结合?
网络架构如下:
对输入图像的每个信道分别做迭代操作,每次迭代操作的输出和输入图像map层再次结合作为下层输入。loss的计算实际就是计算最后增强的图像和原始输入图像之间的gap最大
4. 损失函数如何设计?
本文loss包含四种,分别为:
空间一致性loss:
曝光loss:
色彩loss:
亮度平滑loss:
等式7中的加号个人认为应该是减号,这里应该写错了。
总loss:
总结:本文实现增强理论方法比较简单,而且计算速度500fps(640*480)在GPU,实验给出的效果不错,但给出的结果有的地方仍然存在曝光不足和过曝情况,是否在经过各种增强算法后,需要对图像做后处理,例如曝光矫正等?如果后处理做的精确的话,前置增强是不是效果要求不是很高就行?