Perceptual Losses for Real-Time Style Transfer and Super-Resolution
Justin Johnson, Alexandre Alahi, Li Fei-Fei
本文研究了图像转换的问题。在该领域中现有的方法大致有二:一种是使用输出图像与真实图像的per-pixel loss(逐像素损失)训练前馈CNN,第二种是 设计并优化了一种 所谓的perceptual loss(感知损失)来生成高质量图像,该种损失是基于预训练模型对图像所提取的高级特征所定义的。
而本文的工作结合了以上两种方法,使用perceptual loss来前馈CNN来解决图像转换问题。与基于优化的生成图像方法相比,本网络可以在得到相当质量的结果的同时,在速度上提升3个数量级。
简介:
许多经典问题都可以视为图像转换问题,即系统接收若干输入图像,将其转换为一个输出图像。例如,去噪,超分辨率重构,着色等图像处理任务,都是将一个退化的图像,转换为一个高质量彩色图像。对于计算机视觉领域中的语义分割,深度估计等任务,输入一个彩色图像,输出则是图像的场景语义或几何信息的编码。
对于图像转换问题,一种解决方法是基于输出图像与真实图像之间的per-pixel loss,使用有监督的手段训练一个前馈CNN。
但是per-pixel loss的弊端是无法捕获输出图像与真实图像之间的感知层面的差异,例如对于两张完全相同的图像,将其中一张图像整体偏移一个像素,尽管它们在感知层面上仍然几乎完全相同,但是它们的per-pixel loss却已发生十分显著的增加。
另外一些方法,通过最小化perceptual loss,来优化输出图像的数据,最终生成输出高质量图像。但该方法的弊端是效率低下,实时性差。
本文的方法结合以上两种方法的优点,采用了前馈CNN,并且使用图像高级特征的perceptual loss作为损失函数,而图像高级特征则使用预训练模型采集。perceptual loss在度量图像相似性方面比per-pixel loss更具鲁棒性。
技术概要
该系统包括两个部分:一部分是图像转换网络
f
W
f_W
fW,另一部分是损失网络
ϕ
\phi
ϕ,
ϕ
\phi
ϕ用于定义不同的损失函数
l
1
,
.
.
.
,
l
k
l_1,...,l_k
l1,...,lk。图像转换网络是一个深度残差CNN,其参数为权重
W
W
W,,对于输入图像
x
x
x,其输出图像为
y
^
=
f
W
(
x
)
\hat{y}=f_W(x)
y^=fW(x).
每一个损失函数的计算结果都为一个标量值
l
i
(
y
^
,
y
i
)
l_i(\hat{y},y_i)
li(y^,yi),其度量了输出图像
y
^
\hat{y}
y^与目标
y
i
y_i
yi的差异。
使用SGD算法训练网络,得到最优解:
W
∗
=
a
r
g
min
W
E
x
,
{
y
i
}
[
∑
i
=
1
λ
i
l
i
(
f
W
(
x
)
,
y
i
)
]
W^*= \rm{arg} \min_{W}\bf{E}_{x,\left\{y_i\right\}}[\sum_{i=1}\lambda_i l_i(f_W(x), y_i)]
W∗=argWminEx,{yi}[i=1∑λili(fW(x),yi)]
利用损失网络
ϕ
\phi
ϕ所定义的损失函数,杜绝了per-pixel loss的缺点,更好地度量了图像之间的感知与语义差异,其关键思想在于预训练的CNN模型已经学会了编码图像中的感知和语义信息,这些信息则是我们的perceptual loss 函数恰恰要度量的信息。因此,本文采用了预训练的图像分类网络(VGG16)作为损失网络.
损失网络
ϕ
\phi
ϕ用于定义特征重构损失
l
f
e
a
t
ϕ
l^{\phi}_{feat}
lfeatϕ和风格重构损失
l
s
t
y
l
e
ϕ
l^{\phi}_{style}
lstyleϕ。分别度量图像在内容与风格上的差异。对于每个输入图像
x
x
x,有内容目标
y
c
y_c
yc,风格目标
y
s
y_s
ys,对于风格迁移任务,内容目标
y
c
y_c
yc就是输入图像
x
x
x本身,输出图像
y
^
\hat{y}
y^应该整合内容
x
=
y
c
x=y_c
x=yc,以及风格
y
s
y_s
ys。每个风格目标需要单独训练一个网络。
对于超分辨率重构任务,输入图像是一个低分辨率的图像,内容目标是真实的高分辨率图像,不需要风格目标。
技术细节
1.图像转换网络
对于图像转换网络,其架构与Radford的实现大致相同,不采取任何的池化层,取而代之使用步幅和微步幅卷积分别进行上采样和下采样。网络还包含有5个残差块,除了最后的输出层之外,所有的非残差卷积层都后接有空间batch normalization 和 ReLU操作,最后的输出层使用一个缩放的tanh来确保输出图像的像素值在[0,255]内,除了第一层与最后一层使用9x9大小的卷积核外,其余卷积层均使用3x3的卷积核。
1.1转换网络的输入与输出
对于风格迁移,输入与输出图像大小均为3X256x256。对于超分辨率重构,则存在一个上采样因子 f f f,输出为高分辨率图像3x288x288,输入为低分辨率图像 3 ∗ 288 / f ∗ 288 / f 3*288/f*288/f 3∗288/f∗288/f
1.2转换网络的下采样与上采样
对于上采样因子为
f
f
f的超分辨率重构,使用了后接步幅为
1
/
2
1/2
1/2的
log
2
f
\log_2{f}
log2f卷积层。
对于风格迁移,先使用两个步幅为2的卷积层进行下采样,然后连接有若干残差块,最后再使用两个步幅为
1
/
2
1/2
1/2的卷积层进行上采样。
这样做(先下采样再上采样)的好处是:
(1)在计算量上,尺寸为3x3xc卷积核遍历CxHxW的图像需要
9
H
W
C
2
\rm{9HWC^2}
9HWC2次加乘运算。其运算量与3x3xDC作用在DCxH/DxH/D图像上的运算量一样,因此在下采样后,使用更大的网络,却只需花费相同的计算量。
(2)3x3的卷积可以将感受野的大小扩大2倍,将算上因子为D的下采样操作后,感受野可以增大2D倍。
2.损失网络
2.1特征重构损失
设输入图像为x,则网络
ϕ
\phi
ϕ的第
j
j
j层激活输出为
ϕ
j
(
x
)
\phi_j(x)
ϕj(x),若
j
j
j为卷积层,则
ϕ
j
(
x
)
\phi_j(x)
ϕj(x)为一个尺寸为
C
j
∗
H
j
∗
W
j
C_j*H_j*W_j
Cj∗Hj∗Wj的特征图。定义特征重构损失为两个特征图之间的欧式距离:
l
f
e
a
t
ϕ
,
j
(
y
^
,
y
)
=
1
C
j
H
j
W
j
∥
ϕ
j
(
y
^
)
−
ϕ
j
(
y
)
∥
2
2
l^{\phi,j}_{feat}(\hat{y},y)=\frac{1}{C_jH_jW_j}\begin{Vmatrix} \phi_j(\hat{y})- \phi_j(y)\end{Vmatrix}^2_2
lfeatϕ,j(y^,y)=CjHjWj1∥∥ϕj(y^)−ϕj(y)∥∥22
当从网络高层进行重构,图像语义内容与整体空间结构得以保留,而色彩,纹理,精确边缘则被适当摒弃。
2.2风格重构损失
将网络
ϕ
\phi
ϕ的第
j
j
j层的三维特征图张量
ϕ
j
(
x
)
\phi_j(x)
ϕj(x)重整为大小为
C
j
∗
H
j
W
j
C_j*H_jW_j
Cj∗HjWj二维张量
ψ
\psi
ψ,则定义特征图
ϕ
j
(
x
)
\phi_j(x)
ϕj(x)的Gram矩阵为
G
j
ϕ
(
x
)
=
ψ
ψ
T
/
C
j
H
j
W
j
G^{\phi}_{j}(x)=\psi \psi^T/C_jH_jW_j
Gjϕ(x)=ψψT/CjHjWj
则风格重构损失定义为输出图像与风格目标图像在网络
ϕ
\phi
ϕ的第
j
j
j层特征图的Gram矩阵的squared Frobenius范数(
L
2
L_2
L2范数):
l
s
t
y
l
e
ϕ
,
j
(
y
^
,
y
)
=
∥
G
j
ϕ
(
y
^
−
G
j
ϕ
(
y
)
)
∥
F
2
l^{\phi,j}_{style}(\hat{y},y)=\begin{Vmatrix} G^{\phi}_{j}(\hat{y}-G^{\phi}_{j}(y)) \end{Vmatrix}^2_F
lstyleϕ,j(y^,y)=∥∥∥Gjϕ(y^−Gjϕ(y))∥∥∥F2
选取
ϕ
\phi
ϕ中多个层次的风格特征来来综合判定,则定义
l
s
t
y
l
e
ϕ
,
J
(
y
^
,
y
)
l^{\phi,J}_{style}(\hat{y},y)
lstyleϕ,J(y^,y)为各层风格重构损失的总和,其中
j
∈
J
j\in J
j∈J
另外
为了使输出图像的空间上较为平滑连续,参考前人的工作,采用了total variation regularizer l T V ( y ^ ) l_{TV}(\hat{y}) lTV(y^).