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 上找到。
|