摘要: 本文提出了通过联合底层与高层信息的损失端到端训练的卷积神经网络。感知损失分为两个:特征损失与对抗损失,还提出了
新的排斥损失。本文产生了真实图像与带有传播图像真值的数据集。本文的方法在PSNR,SSIM与用户研究中取得了SOTA的表现,并可以推广到其他图像增强任务上以表现本文方法的泛化能力。
一、简介
来自玻璃的反射无处不在,但图像中并不希望出现这种情况,其会降低图像质量。去除反射有助于复原视觉内容,是计算机视觉的重要研究领域。
令
I
∈
R
m
×
n
×
3
\bm I \in \bm R^{m \times n \times 3}
I∈Rm×n×3是存在反射的输入图像,其可以通过传播图像
T
\bm T
T与反射图像
R
\bm R
R的和近似建模:
I
=
T
+
R
\bm I = \bm T + \bm R
I=T+R。反射去除的目标是给定的
I
\bm I
I复原传播图像
T
\bm T
T,这是一个没有约束与先验的病态问题。
由于问题的病态性,准备工作通常需要额外的图像与人工创造的先验。一些研究使用多图像或用户交互,然而多图像难以得到,而交互不方便且常发生错误。另一些研究使用单张图像,但其依赖于人工创造的先验,如鬼影与相对平滑,这并不能泛化到所有图像。最近的CEILNet【5】使用颜色与边缘的底层损失训练深度神经网络,但是其不能直接的学习十分有用的高层语义。底层信息对于色彩丰富或模型需要感知图像对象时不够充分。例如如图1中,本文的模型使用感知损失学习了灯与脸部的特征,精准的去除了输入图像中上述的反射,而CEILNet不能。
图1,CEILNet与本文在真是图像上的结果。本文的方法同时学习底层与高层统计信息,成功的去除了灯与人脸的反射,而CEILNet不能。
本文提出了使用同时编码底层与高层图像信息的感知损失的卷积神经网络,其将单张图像作为输入并直接生成两张图像:反射图像与传播图像。此外,提出了新的排斥损失强迫像素级传播与反射图像的分离。为了训练与评估,本文建立了包含真实图像与真值的数据集,包含不同的自然景象,并用于与其他方法比较。本文的主要工作总结如下:
-本文提出使用感知损失的深度神经网络,并利用两个不同层次的图像信息监督:视觉感知网络的特征损失与改善输出传播图像的对抗损失。
-本文提出排斥损失,加强图像之间的独立行并在梯度域分离;
-本文建立了带有真值传播图像的真实图像的数据集,用于量化评估及与其他算法比较;
-本文广泛的在真实数据与合成数据进行试验,以表明本文方法在SSIM,PSNR等上的SOTA表现。本文的模型可以直接用于图像的反光去除与雾去除。
二、相关工作
2.1 多图像方法
由于反射去除问题的病态性,大多数方法使用多图像。通过标记相机或者平行的移动可以得到移动的线索,从而得到传播与反射图像的不同移动区域。一些其他的方法则借助闪光、焦距、光偏振、梯度等。虽然多图像方法有着良好的表现,但是有时难以获取多图像,例如无法应用于已经拍摄的照片。
2.2 单图像方法
单张图像用于反射去除通常使用梯度的稀疏性寻找图像的边缘与顶角,梯度稀疏先验与最优化也可以有效的指导病态的分离问题。有的方法使用梯度结合拉普拉斯空间。然而,这些方法依赖于底层信息,受限于需要高层理解的图像。
另一个反射的先验是反射层通常离焦且平滑,有的方法将其作为优化问题,惩罚大的反射梯度值。尽管相对平滑的假设成立,但是反射区域对比度强烈时,该方法失效。有的方法则使用平滑先验的变化,利用景深标记边缘并分离图像。有的方法则聚焦于反射的鬼影效应,估计卷积核优化反射去除问题。
【5】提出的深度学习网络CEILNet将图像反射作为边缘简化任务并学习中间边缘图作为图像分离的导向。CEILNet通过结合色彩空间与梯度域的底层损失学习。
2.3 数据集基准
存在一个数据集基准包含40个实验室场景与100个室外环境的使用三种不同玻璃的1500张真实图像,但数据集不开源。本文收集了带有真值的110张自然场景的图像。
三、总览
给定存在反射的图像
I
∈
[
0
,
1
]
m
×
n
×
3
\bm I \in [0, 1]^{m \times n \times 3}
I∈[0,1]m×n×3,本文的方法将
I
\bm I
I通过网络
f
(
I
;
θ
)
=
(
f
T
(
I
;
θ
)
,
f
R
(
I
;
θ
)
)
f(\bm I;\theta) = (f_T(\bm I; \theta), f_R(\bm I; \theta))
f(I;θ)=(fT(I;θ),fR(I;θ))分离为传播图像
f
T
(
I
;
θ
)
f_T(\bm I; \theta)
fT(I;θ)与反射图像
f
R
(
I
;
θ
)
f_R(\bm I; \theta)
fR(I;θ),其中
θ
\theta
θ是网络权重。使用数据集
D
=
{
(
I
,
T
,
R
)
}
D = \{(\bm I, \bm T, \bm R)\}
D={(I,T,R)}训练网络
f
f
f。
损失函数包含三项:特征空间的损失
L
f
e
a
t
L_{feat}
Lfeat,用于精炼的对抗损失
L
a
d
v
L_{adv}
Ladv,梯度域的排斥损失
L
e
x
c
l
L_{excl}
Lexcl。总损失函数为
L
(
θ
)
=
w
1
L
f
e
a
t
(
θ
)
+
w
2
L
a
d
v
(
θ
)
+
w
3
L
e
x
c
l
(
θ
)
,
(1)
L(\theta) = w_1L_{feat}(\theta) + w_2L_{adv}(\theta) + w_3L_{excl}(\theta), \tag 1
L(θ)=w1Lfeat(θ)+w2Ladv(θ)+w3Lexcl(θ),(1)本文设
w
1
=
0.1
,
w
2
=
0.01
,
w
3
=
1
w_1 = 0.1, w_2 = 0.01, w_3 = 1
w1=0.1,w2=0.01,w3=1。
理想模型需要理解图像内容,网络使用ImageNet预训练的VGG-19形成超柱状的特征。通过视觉感知抽取的特征用于输入的增广,每个像素的特征是网络中该像素的堆叠。特征共有1472个维度,图像与其联接作为网络的输入。
本文的网络是卷积神经网络,有着513x513的大感受野,能够有效的捕捉全局信息。
f
f
f的第一层是1x1卷积核,将特征维度从(1472+3)降低为64,接下来8层使用3x3的空洞卷积。空洞率从1变化到128,所有的中间层都有64个特征通道,并最终线性的转换为RGB色彩空间的两个图像。
本文在开源的CEILNet数据集【5】的合成与真实图像与本文收集的数据集上评估不同方法,并与CEILNet【5】、基于优化的方法与Pix2pix的SOTA方法比较。
四、训练
4.1 特征损失
特征损失用于衡量推断与真值传播图像在特征空间的差异。特征损失在图像合成与风格迁移中应用广泛,可以联结底层与高层特征。
特征损失通过输入推断的图像与真值到预训练的VGG-19网络
Φ
\Phi
Φ中计算,使用
L
1
L_1
L1损失:
L
f
e
a
t
=
∑
(
I
,
T
)
∈
D
∑
l
λ
l
∣
∣
Φ
l
(
T
)
−
Φ
l
(
f
T
(
I
;
θ
)
)
∣
∣
1
,
(2)
L_{feat} = \sum_{(\bm I, \bm T) \in D} \sum_{l} \lambda_l||\Phi_l(\bm T) - \Phi_l(f_T(\bm I;\theta))||_1, \tag 2
Lfeat=(I,T)∈D∑l∑λl∣∣Φl(T)−Φl(fT(I;θ))∣∣1,(2)其中
Φ
l
\Phi_l
Φl代表VGG-19网络的第
l
l
l层,权重
{
λ
l
}
\{\lambda_l\}
{λl}用于平衡损失函数的各项。本文选用VGG-19的conv1_2,conv2_2,conv3_2,conv4_2与conv5_2。
4.2 对抗损失
如果没有对抗损失,推断的传播图像会出现不真实的色彩退化与部分残留。本文使用CGAN用于模型,生成器为
f
T
(
I
;
θ
)
f_T(\bm I;\theta)
fT(I;θ)。判别器定义为
D
D
D,有4层64个特征通道,并尝试判别真实传播图像与基于
I
\bm I
I的推断图像,使推断传播图像在真实的不存在反射的图像域内。
判别器
D
D
D的损失为
∑
(
I
,
T
)
∈
D
l
o
g
D
(
I
,
f
T
(
I
;
θ
)
)
−
l
o
g
D
(
I
,
T
)
,
(3)
\sum_{(\bm I, \bm T) \in D} log D(\bm I, f_{T}(\bm I;\theta)) - logD(\bm I, \bm T), \tag 3
(I,T)∈D∑logD(I,fT(I;θ))−logD(I,T),(3)其中
D
(
I
,
x
)
D(\bm I, x)
D(I,x)输出了
x
x
x是基于输入图像
I
\bm I
I的自然传播图像的可能性,而对抗损失为
L
a
d
v
(
θ
)
=
∑
I
∈
D
−
l
o
g
D
(
I
,
f
T
(
I
;
θ
)
)
(4)
L_{adv}(\theta) = \sum_{\bm I \in D} - logD(\bm I, f_T(\bm I;\theta)) \tag 4
Ladv(θ)=I∈D∑−logD(I,fT(I;θ))(4)优化
−
l
o
g
D
(
I
,
f
T
(
I
;
θ
)
)
- logD(\bm I, f_T(\bm I;\theta))
−logD(I,fT(I;θ))而不是
l
o
g
(
1
−
D
(
I
,
f
T
(
I
;
θ
)
)
)
log(1 - D(\bm I, f_T(\bm I;\theta)))
log(1−D(I,fT(I;θ)))可以得到更好的梯度表现。
4.3 排斥损失
本文还提出了排斥损失,用于在梯度域分离反射与传播图像。
I
\bm I
I的边缘只能来源于
B
\bm B
B与
R
\bm R
R中其一,因此在梯度域最小化两者的关系。定义排斥损失为多空间分辨率下两层归一化梯度域的积:
L
e
x
c
l
(
θ
)
=
∑
I
∈
D
∑
n
=
1
N
∣
∣
Ψ
(
f
T
↓
n
(
I
;
θ
)
,
f
R
↓
n
(
I
;
θ
)
)
∣
∣
F
,
(5)
L_{excl}(\theta) = \sum_{\bm I \in D}\sum_{n=1}^N||\Psi(f_T^{\downarrow n}(\bm I; \theta), f_R^{\downarrow n}(\bm I; \theta))||_F, \tag 5
Lexcl(θ)=I∈D∑n=1∑N∣∣Ψ(fT↓n(I;θ),fR↓n(I;θ))∣∣F,(5)
Ψ
(
T
,
R
)
=
t
a
n
h
(
λ
T
∣
∇
T
∣
)
×
t
a
n
h
(
λ
R
∣
∇
R
∣
)
,
(6)
\Psi(\bm T, \bm R) = tanh(\lambda_T|\nabla \bm T|)\times tanh(\lambda_R|\nabla \bm R|), \tag 6
Ψ(T,R)=tanh(λT∣∇T∣)×tanh(λR∣∇R∣),(6)其中
λ
\lambda
λ是归一化因子,
∣
∣
⋅
∣
∣
F
||·||_F
∣∣⋅∣∣F是弗罗贝尼乌斯范数,
×
\times
×是元素级乘法,
n
n
n是图像下采样因子:图像
f
f
f通过双线性以
2
n
−
1
2^{n-1}
2n−1为因子采样。设置
N
=
3
,
λ
T
=
∣
∣
∇
R
∣
∣
F
/
∣
∣
∇
T
∣
∣
F
,
λ
R
=
∣
∣
∇
T
∣
∣
F
/
∣
∣
∇
R
∣
∣
F
N = 3, \lambda_T = \sqrt{||\nabla \bm R||_F/||\nabla \bm T||_F}, \lambda_R = \sqrt{||\nabla \bm T||_F/||\nabla \bm R||_F}
N=3,λT=∣∣∇R∣∣F/∣∣∇T∣∣F,λR=∣∣∇T∣∣F/∣∣∇R∣∣F。
注意到归一化因子
λ
T
\lambda_T
λT与
λ
R
\lambda_R
λR在式(6)是决定性的,因为传播与反射图像有不平衡的梯度量级。反射图像或是低强度且模糊,或是反射强光,产生大的对比度与梯度。
∣
∇
T
∣
|\nabla \bm T|
∣∇T∣与
∣
∇
R
∣
|\nabla\bm R|
∣∇R∣的差异可以引起两个图层推测的不平衡更新。如果没有合适的归一化,网络的梯度更新率会消失。图3展示了有无归一化的视觉对比。
L
e
x
c
l
L_{excl}
Lexcl有效的在像素级别分离传播与反射图像,否则会有可见的残余的反射,如图2.d所示。
图2,在真实图像上评估三种感知损失函数。在图2.b,使用空间
L
1
L_1
L1损失代替
L
f
e
a
t
L_{feat}
Lfeat导致的过平滑;在图2.c,出现色彩偏移与能注意到的残留;在图2.d,传播图像出现反射的残留;图2.e是完全的模型,产生了更好的推断结果。
图3,梯度归一化的视觉对比。不使用梯度归一化,反射推测被严重的抑制。
4.4 实现
给定反射真值
R
\bm R
R,使用
R
\bm R
R约束
f
R
(
I
;
θ
)
f_R(\bm I;\theta)
fR(I;θ)。反射层通常离焦并因此模糊,使用色彩空间的
L
1
L_1
L1损失函数约束
f
R
(
I
;
θ
)
f_R(\bm I;\theta)
fR(I;θ):
L
R
(
θ
)
=
∑
(
I
,
R
∈
D
)
∣
∣
f
R
(
I
;
θ
)
∣
∣
1
,
(7)
L_R(\theta) = \sum_{(\bm I, \bm R \in D)}||f_R(\bm I;\theta)||_1, \tag 7
LR(θ)=(I,R∈D)∑∣∣fR(I;θ)∣∣1,(7)训练网络
f
f
f时,使用合成与真实数据,并最小化
(
L
+
L
R
)
(L + L_R)
(L+LR)。注意到当使用真实数据训练时,由于
R
\bm R
R的真值难以准确的估计,会不使用
L
R
L_R
LR。通过
R
=
I
−
T
\bm R = \bm I - \bm T
R=I−T是不准确的,因为
I
\bm I
I可能存在曝光过度。
训练数据使用5000张合成图像与额外的90张真实图像的500个图像块,分辨率从256p到480p,并在保持纵横比的情况下随机放缩图像块。训练使用Nvidia Titan X GPU以1为批尺寸训练250轮次,权重更新使用Adam算法,固定学习率为
1
0
−
4
10^{-4}
10−4。
五、数据集
5.1 合成数据
为了生成带有反射失真的合成图像,选择5000张室内室外成对的随机图像,选用一张图像(无论室内室外)作为传播图像,另一图像作为反射图像。一般认为两图像位于不同的焦平面,需要有不同的模糊程度,而传播图像一般位于焦点,反射图像应该存在大孔径下的模糊。在合成图像是使用从3到17像素的随机核尺寸的高斯平滑核用于反射图像。
本文的方法与【5】相似,但接下来的模型不同。本文移除图像的伽马矫正,并使用线性空间以更加接近图像的物理模型。本文对
R
\bm R
R应用变化的衰减,因为反射图像相比传播图像一般更具对比度与更高强度。在反射层中使用随机中心的弱图像来模拟相机从倾斜角度得到反射图像的场景。
5.2 真实数据
由于没有开源的带有传播图像真值的基准数据,本文收集了110组图像对:带有反射的图像及其传播图像真值,图像由带有三脚架的佳能600D相机通过放置玻璃获取,获取数据的设备如图4所示,考虑如下:
-环境:室内与室外;
-光条件:自然光,太阳光与白炽光;
-相机视角:前视与侧视;
-相机孔径:
f
/
2.0
f/2.0
f/2.0 -
f
/
16
f/16
f/16。
数据集随机的分为训练集与测试集,90张训练图像抽取500张图像块用于训练,而20张图像用于质量评估。
图4,真实数据的获取设备与获取的图像,并在静态场景下通过放置玻璃采集两图像。
六、实验
6.1 工作对比
本文的模型与CEILNet【5】,图层分离模型,Pix2pix比较,使用CEILNet数据集与本文的数据集上评估。
本文的模型通过本文数据集的合成与真实数据训练,而在评估时,CEILNet使用CEILNet数据集合成图像训练的预训练模型。为了在真实数据评估CEILNet,通过本文数据集的真实数据微调其模型(否则表现糟糕);图层分离模型则使用默认的参数;Pix2pix是通用的图像转换模型,通过本文数据集的合成与真实数据训练。
量化结果如表1所示,展示了在不同方法的传播图像推断结果与真值的PSNR与SSIM。本文相比其他方法有着较高的量化表现。
表1,本文与其他三种方法的量化对比。
本文还做了用户研究,令用户在不同方法下选择最佳的推断结果,如表2所示。
表2,用户研究结果。
6.2 质化结果
图5与图6展示了不同方法的质化结果,使用本文与CEILNet数据集的真实数据评估。
图5,使用本文数据集的真实数据的视觉结果对比。
图6,使用CEILNet数据集的真实数据的视觉结果对比。
6.3 控制实验
为了分析损失函数的作用,本文去除了部分损失函数并重新训练网络,视觉对比如图2所示,量化结果如表3。
表3,使用合成与真实图像上的本文模型不同剪切的量化对比。
七、扩展
本文的方法可以用于两个额外的应用场景:反光去除与雾去除。
八、讨论
本文提出了端到端的使用感知损失与排斥损失的学习方法用于图像反射去除,且发现联合底层与高层特征有益于训练网络。本文收集了包含传播图像真值的数据集用于评估。本文还将本文的方法推广到其他的图像增强问题以展示其泛化能力。
本文在真实与合成图像达到了SOTA的效果,但效果仍有待提升。