1. 模型简介
本文中,作者提出了一种方法,能在给定简单的复制粘贴合成图像(composited copy-and-paste)的情况下,生成高分辨率、且比较真实的融合图像。文章的亮点在于作者将传统的基于梯度的方法与最近出来的 GAN 结合起来,达到生成高分辨率融合图像的目的,这也是 GAN 被用在此领域的第一篇文章。
具体实现的任务如下图:
(a)图是复制粘贴后的原始合成图像,红线框出来的部分是从其他图复制过来的,我们要达到的目标是能够使该合成图片看起来更加自然、真实,就像我们在 ps 中的 p 图一样。(b)(c)是用其他方法得到的效果,(d)是本文方法得到的效果,显然本文方法得到的最终图像更加真实。
2. 方法实现
2.1. 图像输入
首先我们需要获取我们的原始 copy-and-paste 合成图片,如下图所示。
写成公式的话就是这样的:
x
=
x
s
r
c
∗
x
m
a
s
k
+
x
d
s
t
∗
(
1
−
x
m
a
s
k
)
x=x_{src}*x_{mask}+x_{dst}*(1-x_{mask})
x=xsrc∗xmask+xdst∗(1−xmask)
x
x
x 是合成后的图片,如上图(d),
x
s
r
c
x_{src}
xsrc 是源图片,如(a),
x
d
s
t
x_{dst}
xdst 是目标图片,如(b),
x
m
a
s
k
x_{mask}
xmask 是掩模图片,如(c)。在该问题中难以获得真实的融合图像 ground truth,作者在这里直接将
x
d
s
t
x_{dst}
xdst 近似为
x
g
x_g
xg(ground truth 图像)。
2.2. 框架描述
作者提出的 GP-GAN 框架主要含有2部分:Blending GAN 以及 Gaussian-Poisson Equation。前者作为颜色约束(colour constraint)使生成图像更加真实、自然,同时伴随一定的模糊,后者作为梯度约束(gradient constraint)进一步提高图像分辨率,使其拥有纹理、边缘等细节。整体框架如下图所示。
2.3. Blending GAN
损失函数为 L2 损失与对抗损失(Adversarial Loss)的组合。
总损失函数:
L
(
x
,
x
g
)
=
λ
L
l
2
(
x
,
x
g
)
+
(
1
−
λ
)
L
a
d
v
(
x
,
x
g
)
L(x,x_g)=\lambda L_{l_2}(x,x_g)+(1-\lambda)L_{adv}(x,x_g)
L(x,xg)=λLl2(x,xg)+(1−λ)Ladv(x,xg) L2 损失:
L
l
2
(
x
,
x
g
)
=
∥
G
(
x
)
−
x
g
∥
2
2
L_{l_2}(x,x_g)=\lVert G(x)-x_g \rVert_2^2
Ll2(x,xg)=∥G(x)−xg∥22 对抗损失:
L
a
d
v
(
x
,
x
g
)
=
max
D
E
x
∈
χ
[
D
(
x
g
)
−
D
(
G
(
x
)
)
]
L_{adv}(x,x_g)=\max\limits_D E_{x\in\chi}[D(x_g)-D(G(x))]
Ladv(x,xg)=DmaxEx∈χ[D(xg)−D(G(x))]
Blending GAN 的生成器
G
(
x
)
G(x)
G(x) 网络结构如下图所示。
输入图像经过训练好的生成器能够得到真实、自然的模糊图像
x
~
l
\tilde x_l
x~l。
2.4. Gaussian-Poisson Equation
在得到
x
~
l
\tilde x_l
x~l 后,接下来就是要提高分辨率,得到最后的
x
h
x_h
xh,作者使用 Gaussian-Poisson Equation 加拉普拉斯金子塔(Laplacian pyramid)的方法迭代 s 次,得到最终高分辨率且真实的图像。
在每次迭代获取更高分辨率的
x
~
h
\tilde x_h
x~h 时,使用的损失函数为:
H
(
x
h
)
=
P
(
x
h
)
+
β
C
(
x
h
)
H(x_h)=P(x_h)+\beta C(x_h)
H(xh)=P(xh)+βC(xh)
P
(
x
h
)
P(x_h)
P(xh) 就是 Poisson Equation,对应梯度约束(gradient constraint),其目标是使
x
h
x_h
xh 与原始合成图有着相同的高频信号,定义如下:
P
(
x
h
)
=
∫
T
∥
div
v
−
Δ
x
h
∥
2
2
d
t
P(x_h)=\int_T\lVert \textbf{div}\ v-\Delta x_h\rVert_2^2\ dt
P(xh)=∫T∥div v−Δxh∥22 dt 其中
v
i
j
=
{
∇
x
s
r
c
if
x
m
a
s
k
i
j
=
1
∇
x
d
s
t
if
x
m
a
s
k
i
j
=
0
v^{ij}= \begin{cases} \nabla x_{src} & \text{if } x^{ij}_{mask}=1 \\ \nabla x_{dst} & \text{if } x^{ij}_{mask}=0 \end{cases}
vij={∇xsrc∇xdstif xmaskij=1if xmaskij=0
div
\textbf{div}
div 代表散度,
Δ
\Delta
Δ 代表拉普拉斯算子,
∇
\nabla
∇ 代表梯度。
C
(
x
h
)
C(x_h)
C(xh) 对应颜色约束(color constraint),其目标使
x
h
x_h
xh 与
x
~
l
\tilde x_l
x~l 有相同的低频信号,定义如下:
C
(
x
h
)
=
∫
T
∥
g
(
x
h
)
−
x
~
l
∥
2
2
d
t
C(x_h)=\int_T\lVert g(x_h)-\tilde x_l\rVert^2_2\ dt
C(xh)=∫T∥g(xh)−x~l∥22 dt 具体算法如下所示:
3. 模型评估
- 使用 RealismCNN 方法对生成图片进行场景真实性检测;
- 在 Amazon Mechanical Turk 平台上发布任务,统计 user 对不同方法产生图像真实性的判断结果。
4. 效果展示
第二行为 copy-and-paste 合成图,第三、四行为其他方法的最终融合图,最后一行为本文方法的最终融合图。