Underexposed Photo Enhancement using Deep Illumination Estimation
阅读札记
阅读札记
论文发表于2019年的CVPR。
Abstract
∙
∙
∙ 本文提出一种新的端到端欠曝光图像增强的神经网络,该网络首先估计一个图像到照明的映射,对不同的照明条件进行建模,然后获取照明图来照亮曝光不足的照片。
∙
∙
∙ 设计了一个损失函数,该函数采用了光照的各种约束和先验,从而可以有效地恢复自然曝光、适当对比度、清晰细节和生动色彩的欠曝光照片。
∙
∙
∙ 准备了一个新的数据集,3000张曝光不足的图像,每一张都有一个经过专家润色的参考。
Method
图像增强模型
图像增强任务可以看作是寻找映射函数
F
F
F,使得
I
I
I:输入的欠曝光图像
I
~
\tilde{I}
I~:输出的增强后图像
在基于Retinex的图像增强方法中,
F
F
F的逆通常被建模为一个照明映射
S
S
S,该函数以像素方式与反射图像
I
~
\tilde{I}
I~相乘,生成观察到的图像
I
I
I:
∗
*
∗:逐像素的乘法
本文将反射分量
I
~
\tilde{I}
I~视为良好曝光的图像,因此将
I
~
\tilde{I}
I~作为增强结果,而
I
I
I作为观察到的欠曝光图像。若
S
S
S已知,可通过
F
(
I
)
=
S
(
−
1
)
∗
I
F(I)= S^{(-1)}*I
F(I)=S(−1)∗I获得增强结果
I
~
\tilde{I}
I~。本文方法中
S
S
S建模为多通道(R, G, B)数据,而不是单通道数据,以提高其建模颜色增强的能力,特别是处理不同颜色通道之间的非线性。
网络结构
首先,通过下采样并将输入编码成特征图,提取局部和全局特征,并通过卷积层将它们连接起来预测低分辨率光照。然后对结果进行上采样,生成全分辨率的多通道照明
S
S
S (hot color map),并将其用于恢复全分辨率增强图像。本文方法训练端到端网络,从具有三个损失分量
L
r
i
,
L
s
i
,
L
c
i
{L_r^i,L_s^i,L_c^i}
Lri,Lsi,Lci的图像对
I
i
,
I
~
i
{I_i,\tilde{I}_i}
Ii,I~i学习
S
S
S。
损失函数
从一组
N
N
N个图像对
{
(
I
i
,
I
~
i
)
}
i
=
1
N
\{(I_i,\tilde{I}_i)\}_{i=1}^N
{(Ii,I~i)}i=1N学习光照映射。我们设计了一个损失函数
L
L
L,它由三个分量组成,并在网络训练期间使其最小化。表示为
L
r
i
,
L
s
i
,
L
c
i
L_r^i,L_s^i,L_c^i
Lri,Lsi,Lci:损失分量
ω
r
,
ω
s
,
ω
c
ω_r,ω_s,ω_c
ωr,ωs,ωc:损失分量权重。
(本文取
ω
r
=
1
,
ω
s
=
2
,
ω
c
=
1
ω_r=1,ω_s=2,ω_c=1
ωr=1,ωs=2,ωc=1)
重构损失
I
i
I_i
Ii和
I
~
i
\tilde{I}_i
I~i中的所有像素通道归一化为
[
0
,
1
]
[0,1]
[0,1]
(
)
c
∈
{
r
,
g
,
b
}
()_{c∈\{r,g,b\}}
()c∈{r,g,b}:像素颜色通道
(
I
i
)
c
≤
(
S
)
c
≤
1
(I_i)_c≤(S)_c≤1
(Ii)c≤(S)c≤1:多通道照明范围约束。(由于
F
(
I
i
)
=
S
(
−
1
)
∗
I
i
F(I_i )= S^{(-1)}*I_i
F(Ii)=S(−1)∗Ii,将
I
i
I_i
Ii设置为
S
S
S的下界可以确保增强结果
F
(
I
i
)
F(I_i )
F(Ii)中的所有颜色通道上界为1,从而避免了色域之外的颜色,而将1设置为
S
S
S的上界则可以避免错误地使曝光不足的区域变暗。)
平滑损失
根据平滑先验,自然图像中的光照一般是局部平滑的。在本文的网络中采用这个先验有两个优点,首先,它有助于减少过拟合,提高网络的泛化能力。第二,增强了图像的对比度。当相邻像素
p
p
p和
q
q
q具有相似的光照值时,它们在增强图像中的对比度可以估计为
∣
I
~
p
−
I
~
q
∣
≈
S
p
−
1
∗
∣
I
p
−
I
q
∣
|\tilde{I}_p-\tilde{I}_q |≈S_p^{-1}*|I_p-I_q |
∣I~p−I~q∣≈Sp−1∗∣Ip−Iq∣,因为
S
≤
1
S≤1
S≤1,所以也应该放大。因此照度
S
S
S上的平滑损失定义为
∂
x
,
∂
y
∂_x,∂_y
∂x,∂y:图像空间在水平和垂直方向上的偏导数
ω
(
x
,
c
)
p
,
ω
(
y
,
c
)
p
ω_{(x,c)}^p,ω_{(y,c)}^p
ω(x,c)p,ω(y,c)p:空间变化的(每通道)平滑权值,表示为
L
i
L_i
Li:输入图像
I
i
I_i
Ii的对数图像
θ
θ
θ:控制图像梯度灵敏度的参数(本文取
θ
=
1.2
θ = 1.2
θ=1.2)
ϵ
ϵ
ϵ:一个小常数,通常设置为0.0001,防止被零除。
直观地说,平滑损失使得具有小梯度的像素上的照明是平滑的,而具有大梯度的像素上的照明是不连续的。值得注意的是,对于曝光不足的图像,图像内容和细节往往较弱。不一致的照明更有可能产生大的梯度。
颜色损失
颜色损失促进增强图像
F
(
I
i
)
F(I_i )
F(Ii)中的颜色与相应的专家渲染图像
I
~
i
\tilde{I}_i
I~i中的颜色匹配
(
)
p
()_p
()p:像素
∠
(
,
)
∠(,)
∠(,):计算两种颜色夹角的算子,将RGB颜色作为三维矢量。
颜色损失为
F
(
I
i
)
F(I_i )
F(Ii)和
I
~
i
\tilde{I}_i
I~i中的每个像素对颜色向量之间的角度求和。
★本文在其他颜色空间中使用这个简单公式而不是
L
2
L_2
L2距离的原因如下:首先,重构损失已经隐式测量了
L
2
L_2
L2色差。其次,由于
L
2
L_2
L2度量仅用数字度量色差,它不能保证颜色向量具有相同的方向。
消融实验结果
对比第2和第3幅图像,发现通过最小化重构损失,结果细节更清晰,对比度更好。
对比第3和第4幅图像,通过进一步考虑平滑损失,与仅考虑重构损失的结果相比,恢复了良好的图像对比度和更清晰的细节。
对比第4和第5幅图像,可以看出有颜色损失和没有颜色损失的结果相比,色彩更加生动。
训练数据集
本文准备了一个包含3000张图片的新数据集来训练网络,该数据集涵盖了广泛的照明条件、场景、主题和风格,如图所示。本文将数据集中的图像随机分成两个子集:2750张用于训练,其余用于测试。
实现细节
本文在TensorFlow上构建网络,并在NVidia Titan X Pascal GPU上以16个小批处理大小训练它40个epoch。整个网络使用Adam优化器进行优化,固定学习率为 1 0 − 4 10^{-4} 10−4。在数据增加方面,随机裁剪512×512的patch,然后对所有patch进行随机镜像、调整大小和旋转。下采样输入具有固定的256×256分辨率。编码器网络是一个预先训练的VGG16。局部特征提取器包含两个卷积层,全局特征提取器包含两个卷积层和三个全连通层。使用基于双边网格的模块对输出进行上采样。
Experiment
定性结果
定量结果
Conclusion
局限性
如图所示,本文方法无法恢复到马体的细节,因为在原始图像中该区域几乎是黑色的,没有任何纹理痕迹;而对于下方的人脸图像,本文方法在增强结果中没有清除噪声。
未来工作
未来工作是在本文提出的网络中加入去噪模块,并将本文方法扩展到处理视频。另一个方向是利用场景语义分析和图像合成技术解决近黑色区域。
★ 代码和数据集可以在https://github.com/wangruixing/DeepUPE 上找到。