赞
踩
Paper:Learning to Enhance Low-Light Image via Zero-Reference Deep Curve Estimation
Code:https://github.com/Li-Chongyi/Zero-DCE_extension
论文贡献:
受PS中亮度调整曲线的启发,作者尝试设计一种自动将低光图像映射到增强版本的曲线,并且自适应曲线的参数仅与输入的图像有关。既然是拟合曲线,自然而然就能想到使用拟合能力强大的神经网络来解决。作者认为这种曲线应该具备以下特性:
基于以上三个特性,作者设计了如下的二次曲线:
其中
x
x
x表示像素坐标,
α
∈
[
−
1
,
1
]
\alpha \in[-1,1]
α∈[−1,1]是可学习参数,同时控制曲线的级数和曝光水平。每个输入像素需要归一化到[0,1],然后分别将曲线应用于RGB三个通道而不是只应用于亮度通道,这样做能保留固有的颜色并且能减小过饱和的风险。
对(1)式进行多次迭代能获取式(2)所示的高阶曲线,能够应对更具挑战性的低光场景,
n
n
n为迭代次数,文中设为8.
如果单张图像中所有像素都采用一条曲线,相当于全局映射,很容易造成局部过曝或欠曝。如果输入图像的每个像素都对应一条高阶曲线就能解决该问题,并且操作起来也比较简单,如式(3)所示,将系数
α
\alpha
α更改为与输入图像尺寸相同的系数矩阵
A
\mathcal{A}
A即可,因此每个像素都有一个对应的系数。
整体框架比较简洁,输入一张RGB图像,经过DCE-Net输出
3
∗
n
=
3
∗
8
3*n=3*8
3∗n=3∗8共24张系数图(RGB共3个通道),然后将每个系数矩阵代入公式中迭代求解最终的增强图像。
系数图
A
\mathcal{A}
A的一个示例,可以看到对于RGB任意通道,亮区的值都比较小,暗区的值较大。
网络结构也很简洁,一共只有7个卷积层,加入了跳跃连接,注意最后一个卷积后面跟的是Tanh激活函数,保证输出的系数落入[-1,1]范围。因为迭代8次,RGB三个通道分别应用单独的曲线,所以输出通道为24。
由于没有参考图像,因此作者从空间一致、曝光控制、色彩恒常、空间连续这四个角度出发,设计了由4个无参考损失函数所组成的总损失函数。
保持原始图像与增强图像相邻区域之间的差异尽可能接近,以确保增强后的图像与增强前在空间上是一致的。
下图能够很清晰地解释空间一致性损失,将原始图像和增强后的图像划分为若干个大小为4x4的局部区域,对于每一个区域,计算其与上下左右4个邻域的差异,分别为
I
i
−
I
j
I_i-I_j
Ii−Ij和
Y
i
−
Y
j
Y_i-Y_j
Yi−Yj,再计算两者绝对值之差。(作者开源的代码中也写的很清晰,使用的是平均池化和卷积)
为了避免局部区域过曝或欠曝,将增强图像划分为
M
M
M个大小为16x16的局部区域,将每个局部区域的平均亮度
Y
Y
Y限制在
E
E
E附近,文中设置
E
=
0.6
E=0.6
E=0.6
根据灰度世界假设,对于一幅有着大量色彩变化的图像,其R,G,B 三个色彩分量的平均值趋于同一灰度值 K。对于增强图像,R、G、B三个通道的均值应该接近,基于此假设,作者设置了颜色恒常损失以保证增强图像的颜色正常。形式比较简单,3个通道两两之间分别求均值的MSE,再求和。
为了保持相邻像素间的单调性关系,在每个曲线参数图
A
\mathcal{A}
A上添加一个光照平滑损失,也就是常见的总变差损失,通过限制水平和垂直梯度来促使增强后的图像具有空间连续性。
虽然Zero-DCE的速度已经吊打各种暗光增强算法,但是作者通过调整网络结构提出了一个更轻量的版本Zero-DCE++,仅有10k参数,对于大小为1200×900×3图像,在单个GPU/CPU上的实时推理FPS能够达到1000/11。改进点如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。