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更具鲁棒性。
技术概要
该系统包括两个部分:一部分是图像转换网络fWf_WfW,另一部分是损失网络ϕ\phiϕ,ϕ\phiϕ用于定义不同的损失函数l1,...,lkl_1,...,l_kl1,...,lk。图像转换网络是一个深度残差CNN,其参数为权重WWW,,对于输入图像xxx,其输出图像为y^=fW(x)\hat{y}=f_W(x)y^=fW(x).
每一个损失函数的计算结果都为一个标量值li(y^,yi)l_i(\hat{y},y_i)li(y^,yi),其度量了输出图像y^\hat{y}y^与目标yiy_iyi的差异。
使用SGD算法训练网络,得到最优解:
W∗=argminWEx,{yi}[∑i=1λili(fW(x),yi)]
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ϕ用于定义特征重构损失lfeatϕl^{\phi}_{feat}lfeatϕ和风格重构损失lstyleϕl^{\phi}_{style}lstyleϕ。分别度量图像在内容与风格上的差异。对于每个输入图像xxx,有内容目标ycy_cyc,风格目标ysy_sys,对于风格迁移任务,内容目标ycy_cyc就是输入图像xxx本身,输出图像y^\hat{y}y^应该整合内容x=ycx=y_cx=yc,以及风格ysy_sys。每个风格目标需要单独训练一个网络。
对于超分辨率重构任务,输入图像是一个低分辨率的图像,内容目标是真实的高分辨率图像,不需要风格目标。
技术细节
1.图像转换网络
对于图像转换网络,其架构与Radford的实现大致相同,不采取任何的池化层,取而代之使用步幅和微步幅卷积分别进行上采样和下采样。网络还包含有5个残差块,除了最后的输出层之外,所有的非残差卷积层都后接有空间batch normalization 和 ReLU操作,最后的输出层使用一个缩放的tanh来确保输出图像的像素值在[0,255]内,除了第一层与最后一层使用9x9大小的卷积核外,其余卷积层均使用3x3的卷积核。
1.1转换网络的输入与输出
对于风格迁移,输入与输出图像大小均为3X256x256。对于超分辨率重构,则存在一个上采样因子fff,输出为高分辨率图像3x288x288,输入为低分辨率图像3∗288/f∗288/f3*288/f*288/f3∗288/f∗288/f
1.2转换网络的下采样与上采样
对于上采样因子为fff的超分辨率重构,使用了后接步幅为1/21/21/2的log2f\log_2{f}log2f卷积层。
对于风格迁移,先使用两个步幅为2的卷积层进行下采样,然后连接有若干残差块,最后再使用两个步幅为1/21/21/2的卷积层进行上采样。
这样做(先下采样再上采样)的好处是:
(1)在计算量上,尺寸为3x3xc卷积核遍历CxHxW的图像需要9HWC2\rm{9HWC^2}9HWC2次加乘运算。其运算量与3x3xDC作用在DCxH/DxH/D图像上的运算量一样,因此在下采样后,使用更大的网络,却只需花费相同的计算量。
(2)3x3的卷积可以将感受野的大小扩大2倍,将算上因子为D的下采样操作后,感受野可以增大2D倍。
2.损失网络
2.1特征重构损失
设输入图像为x,则网络ϕ\phiϕ的第jjj层激活输出为ϕj(x)\phi_j(x)ϕj(x),若jjj为卷积层,则ϕj(x)\phi_j(x)ϕj(x)为一个尺寸为Cj∗Hj∗WjC_j*H_j*W_jCj∗Hj∗Wj的特征图。定义特征重构损失为两个特征图之间的欧式距离:
lfeatϕ,j(y^,y)=1CjHjWj∥ϕj(y^)−ϕj(y)∥22
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ϕ的第jjj层的三维特征图张量ϕj(x)\phi_j(x)ϕj(x)重整为大小为Cj∗HjWjC_j*H_jW_jCj∗HjWj二维张量ψ\psiψ,则定义特征图ϕj(x)\phi_j(x)ϕj(x)的Gram矩阵为
Gjϕ(x)=ψψT/CjHjWj
G^{\phi}_{j}(x)=\psi \psi^T/C_jH_jW_j
Gjϕ(x)=ψψT/CjHjWj
则风格重构损失定义为输出图像与风格目标图像在网络ϕ\phiϕ的第jjj层特征图的Gram矩阵的squared Frobenius范数(L2L_2L2范数):
lstyleϕ,j(y^,y)=∥Gjϕ(y^−Gjϕ(y))∥F2
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ϕ中多个层次的风格特征来来综合判定,则定义lstyleϕ,J(y^,y)l^{\phi,J}_{style}(\hat{y},y)lstyleϕ,J(y^,y)为各层风格重构损失的总和,其中j∈Jj\in Jj∈J
另外
为了使输出图像的空间上较为平滑连续,参考前人的工作,采用了total variation regularizer lTV(y^)l_{TV}(\hat{y})lTV(y^).