论文链接:https://web.eecs.umich.edu/~justincj/papers/eccv16/JohnsonECCV16.pdf
Perceptual Losses for Real-Time Style Transfer and Super-Resolution
摘要
本文考虑的是图像转换问题,即把输入图像转换为输出图像。最近针对这类问题的方法通常是利用输出图像和真实图像之间的单个像素损失来训练前馈卷积神经网络。通过定义和优化基于从预训练网络中提取的高级特征的感知损失函数,可以生成高质量的图像。我们结合了这两种方法的优点,并提出使用感知损失函数来训练图像转换任务的前馈网络。我们展示了在图像风格转换上的结果,其中训练前馈网络来实时解决Gatys等人提出的优化问题。与基于优化的方法相比,我们的网络给出了类似的定性结果,但速度快了三个数量级。我们还对单幅图像的超分辨率进行了实验,用感知损失代替单个像素损失,得到了视觉上令人满意的结果。
1 引言
许多经典的问题都可以被定义为图像变换任务,即系统接收一些输入图像并将其变换为输出图像。图像处理的例子包括去噪、超分辨率和着色,其中输入的是劣质图像(噪声、低分辨率或灰度),而输出的是高质量的彩色图像。计算机视觉的例子包括语义分割和深度估计,其中输入是彩色图像,输出图像编码有关场景的语义或几何信息。解决图像转换任务的一种方法是以监督的方式训练前馈卷积神经网络,使用单个像素损失函数来测量输出图像和真实图像之间的差异。这种方法已经被Dong等人用于超分辨率[1],Cheng等人用于着色[2,3],Long等人用于分割[4],Eigen等人用于深度和表面法线预测[5,6]。这类方法在测试时效率很高,只需要对训练好的网络进行正向传递。
然而,这些方法使用的单个像素损失并没有捕捉到输出和真实图像之间的感知差异。例如,考虑两个相同的图像相互偏移一个像素,尽管它们的感知相似,但通过每像素损失测量,它们将非常不同。同时,最近的工作表明,可以使用感知损失函数生成高质量的图像,而不是基于像素之间的差异,而是基于从预先训练的卷积神经网络中提取的高级图像特征表示之间的差异。通过最小化一个损失函数来生成图像。这种策略已经被Mahendran等人应用于特征反演[7],Simonyan等人[8]和Yosinski等人[9]应用于特征可视化,Gatys等人[10-12]应用于纹理合成和风格转移。这些方法可以产生高质量的图像,但是速度很慢,因为推理需要解决一个优化问题。
在本文中,我们结合了这两种方法的优点,为图像变换任务训练前馈变换网络,但不是使用仅依赖于低级像素信息的每像素损失函数,而是使用依赖于来自预训练损失网络的高级特征的感知损失函数来训练我们的网络。在训练过程中,感知损失比每像素损失更稳健地测量图像相似性,在测试时,转换网络实时运行。我们在两个任务上进行实验:风格转移和单幅图像超分辨率。
这两个任务都存在固有的问题;对于风格转移,没有一个正确的输出,而对于超分辨率,有许多高分辨率的图像可能产生相同的低分辨率输入。任何一项任务的成功都需要对输入图像进行语义推理。对于风格转移来说,尽管颜色和纹理发生了巨大的变化,但输出必须在语义上与输入相似;对于超分辨率来说,必须从视觉上模糊的低分辨率输入中推断出精细的细节。原则上,为这两种任务训练的高容量神经网络可以隐性地学习推理相关语义;然而,在实践中,我们不需要从头开始学习:使用感知损失函数可以将语义知识从损失网络转移到转换网络。对于风格转移,我们的前馈网络被训练成解决[11]中的优化问题;我们的结果无论是在质量上还是通过目标函数值来衡量,都与[11]相似,但生成速度要*个数量级。对于超分辨率,我们表明,用感知损失代替每像素损失,对于×4和×8超分辨率,可以得到视觉上令人满意的结果。
2 相关工作
前馈式图像变换
近年来,各种各样的图像变换任务都是用单个像素损失函数进行训练的。语义分割方法[4,6,14-17]通过在输入图像上以完全卷积的方式运行网络,用单个像素分类损失进行训练,产生密集的场景标签。最近的深度[6,5,18]和表面法线估计[6,19]方法与此类似,使用以每像素回归[5,6]或分类[19]损失训练的前馈卷积网络,将彩色输入图像转化为有几何意义的输出图像。一些方法通过惩罚图像梯度[6],将CRF推理构架为与网络其他部分联合训练的循环层[17],或使用CRF损失层[18]来强制输出的局部一致性,从而超越了单个像素损失。我们的变换网络的架构受到[4]和[16]的启发,它们使用下采样来减少特征图的空间范围,然后再进行上采样来产生最终的输出图像。
感知优化
最近的一些论文已经使用优化来生成目标是感知的图像,取决于从卷积网络中提取的高级特征。可以生成图像以最大化类预测分数[8,9]或单个特征[9],以了解训练网络中编码的函数。类似的优化技术也可以用来生成高置信度的图像[20,21]。Mahendran和Vedaldi[7]通过最小化特征重构损失来反转卷积网络中的特征,以便理解不同网络层保留的图像信息;类似的方法之前已经被用于反转局部二进制描述符[22,23]和HOG特征[24]。Dosovitskiy和Brox[25]的工作与我们的工作特别相关,他们训练了一个前馈神经网络来反演卷积特征,快速地近似解决了[7]提出的优化问题。然而,他们的前馈网络是在每像素重构损失的情况下训练的,而我们的网络直接优化了[7]的特征重构损失。
风格转移
Gatys等人[11]进行了艺术风格转移,通过共同最小化[7]的特征重构损失和同样基于从预训练的卷积网络中提取的特征的风格重构损失,将一幅图像的内容与另一幅图像的风格结合起来;类似的方法之前已经用于纹理合成[10]。他们的方法产生了高质量的结果,但计算成本很高,因为优化问题的每一步都需要向前和向后通过预训练网络。为了克服这个计算负担,我们训练了一个前馈网络来快速逼近他们优化问题的解。与我们的工作同步,[26,27]也提出了快速风格转移的前馈方法。
图像超分辨率
图像超分辨率是一个经典的问题,针对这个问题已经开发了多种技术。Yang等人[28]对卷积神经网络被广泛采用之前的主流技术进行了详尽的评估。他们将超分辨率技术归纳为基于预测的方法(双线性、双立方、Lanczos、[29])、基于边缘的方法[30,31]、统计方法[32-34]、基于补丁的方法[30,35-41]和稀疏字典方法[42,43]。最近[1]使用具有每像素欧氏损失的三层卷积神经网络在单幅图像超分辨率上取得了优异的性能。其他最近的方法包括[44-46]。
3 方法
如图2所示,我们的系统由两部分组成:一个图像变换网络fW和一个损失网络φ,用于定义几个损失函数1…k. 图像变换网络是一个深度残差卷积神经网络,其参数化的权重为W;它通过映射ˆy=fW(x)将输入图像x变换成输出图像ˆy。每个损失函数计算一个标量值`i(ˆy, yi),衡量输出图像ˆy与目标图像yi之间的差异。使用随机梯度下降法训练图像变换网络,使损失函数的加权组合最小化。
为了解决每个像素损失的缺点,并让我们的损失函数更好地衡量图像之间的感知和语义差异,我们从最近通过优化生成图像的工作中获得灵感[7-11]。这些方法的关键见解是,为图像分类而预先训练的卷积神经网络已经学会了编码我们希望在损失函数中测量的感知和语义信息。因此,我们利用一个为图像分类而预训练的网络φ作为固定的损失网络来定义我们的损失函数。因此,我们的深度卷积变换网络是使用同样是深度卷积网络的损失函数来训练的。我们使用损失网络φ来定义特征重构损失φ f eat和风格重构损失φ style,以衡量图像之间内容和风格的差异。
对于每个输入图像x,我们有一个内容目标yc和一个风格目标ys。对于风格转移,内容目标yc是输入图像x,输出图像ˆy应该将x=yc的内容与ys的风格结合起来,我们对每个风格目标训练一个网络。对于超分辨率,输入x为低分辨率输入,内容目标yc为真实高分辨率图像,不使用风格重构损失;我们每个超分辨率因子训练一个网络。
3.1 图像变换网络
图像变换网络大致遵循[47]提出的架构准则。我们摒弃了池化层,而是使用分步和分数分步卷积进行网络内下采样和上采样。我们的网络主体由五个残差块[48]组成,使用[49]的架构。所有的非残差卷积层除了输出层外,都进行了批量归一化[50]和ReLU非线性,而是使用了一个缩放的tanh来确保输出的像素在[0,255]范围内。第一层和最后一层使用9×9内核,其他卷积层都使用3×3内核。我们网络的确切架构可以在补充材料1中找到。
输入和输出
对于风格转移,输入和输出是形状为3×256×256的彩色图像。对于上采样因子f的超分辨率,输出是形状为3×288×288的高分辨率补丁,输入是形状为3×288/f×288/f的低分辨率补丁。由于图像变换网络是全卷积的,所以在测试时可以应用于任何分辨率的图像。
下采样和上采样
对于上采样系数为f的超分辨率,我们使用几个残差块,然后是log2 f卷积层,步幅为1/2。这与[1]使用双立方插值对低分辨率输入进行上采样后再传递给网络的做法不同。分步卷积不是依赖于固定的上采样函数,而是允许上采样函数与网络的其他部分共同学习。对于风格转移,我们的网络使用两个stride-2卷积对输入进行下采样,然后是几个残差块,再使用两个stride 1/2的卷积层进行上采样。虽然输入和输出的大小相同,但先下采样再上采样的网络有几个好处。
首先是计算上的问题。在天真实现的情况下,在一个尺寸为C×H×W的输入上用C滤波器进行3×3卷积,需要9HW C2乘加,这与在一个形状为DC×H/D×W/D的输入上用DC滤波器进行3×3卷积的成本相同。因此,降采样后,我们可以用同样的计算成本使用更大的网络。
第二个好处与有效的接受场大小有关。高质量的风格传输需要以连贯的方式改变图像的大部分;因此,输出中的每个像素在输入中具有较大的有效接受场是有利的。在不进行降采样的情况下,每增加一个3×3卷积,有效接受场大小就增加2个,而在降采样D因子后,每个3×3卷积反而增加了2D的有效接受场大小,在相同层数的情况下,可以得到更大的有效接受场。
残差连接
He等人[48]使用残差连接来训练图像分类的极深网络。他们认为,残差连接使身份函数更容易学习;这对于图像变换网络来说是一个很有吸引力的属性,因为在大多数情况下,输出图像应该与输入图像共享结构。因此,我们的网络主体由多个残差块组成,每个残差块包含两个3×3卷积层。我们采用[49]的残差块设计,见补充材料。
3.2 感知损失函数
本文定义了两个感知损失函数,用来衡量图像之间的高级感知和语义差异。它们利用损失网络φ进行图像分类的预训练,这意味着这些感知损失函数本身就是深度卷积神经网络。在我们所有的实验中,损失网络φ是在ImageNet[52]上预训练的16层VGG网络[51]。
特征重建损失
我们不是鼓励输出图像ˆy = fW (x)的像素与目标图像y的像素完全匹配,而是鼓励它们具有类似损失网络φ计算的特征表示。让φj(x)成为网络φ的第j层在处理图像x时的激活;如果j是卷积层,那么φj(x)将是一个形状为Cj×Hj×Wj的特征图。特征重建损失是特征表示之间的(平方,归一化)欧几里得距离。
正如[7]中所展示的,并在图3中重现的那样,对于早期层来说,找到一个最小化特征重建损失的图像ˆy,往往会产生与y在视觉上无法区分的图像。当我们从更高的层中重建时,图像内容和整体空间结构被保存下来,但颜色、纹理和精确形状却没有被保存下来。使用特征重构损失来训练我们的图像变换网络,鼓励输出图像ˆy在感知上与目标图像y相似,但并不强迫它们完全匹配。
风格重构损失
当输出图像ˆy在内容上偏离目标y时,特征重构损失会对其进行惩罚,我们也希望对风格上的差异进行惩罚:颜色、纹理、常见图案等。为了达到这个效果,Gatys等人[10,11]提出了以下风格重建损失。如上所述,让φj (x)为输入x在网络φ第j层的激活,它是一个形状为Cj×Hj×Wj的特征图。定义Gram矩阵G φj (x)为Cj×Cj矩阵,其元素由下列公式给出:
如果我们将φj(x)解释为给出Hj×Wj网格上每个点的Cj-维特征,那么G φj(x)与Cj-维特征的非中心协方差成正比,将每个网格位置视为一个独立样本。因此,它捕捉了关于哪些特征倾向于一起激活的信息。通过将φj (x)重塑为形状为Cj×HjWj的矩阵ψ,可以有效地计算Gram矩阵;然后G φ j (x) =ψψT /CjHjWj 。
风格重建损失就是输出图像和目标图像的Gram矩阵之间差值的Frobenius法则的平方。
即使ˆy和y的大小不同,风格重构损失也是很好定义的,因为它们的Gram矩阵将具有相同的形状。正如[11]中所展示的,并在图5中重现,生成一个最小化风格重建损失的图像ˆy,保留了目标图像的风格特征,但没有保留其空间结构。从更高的层中进行重建,会转移目标图像中更大尺度的结构。
为了从一组图层j而不是单个图层j进行风格重建,我们定义`φ,J style(ˆy,y)为每个图层j∈J的损失之和。
3.3 简单损失函数
除了上面定义的感知损失外,我们还定义了两个简单的损失函数,它们只依赖于低级像素信息。
像素损失
像素损失是输出图像ˆy和目标y之间的(归一化)欧氏距离,如果两者的形状都是C×H×W,那么像素损失定义为pixel(ˆy, y) = kyˆ - yk 2 2/CHW。这只有当我们有一个网络预期匹配的地真目标y时才能使用。
总变化正则化
为了鼓励输出图像ˆy的空间平滑性,我们遵循之前在特征反演[7,22]和超分辨率[53,54]方面的工作,并利用总变异正则化T V(ˆy)。
4 实验
我们对两个图像变换任务进行实验:风格转移和单图像超分辨率。之前关于风格转移的工作使用优化来生成图像;我们的前馈网络给出了类似的定性结果,但速度快达三个数量级。之前使用卷积神经网络进行的单图像超分辨率工作使用的是每像素损失;我们使用感知损失来代替,显示出令人鼓舞的定性结果。
4.1 风格转换
风格转换的目标是生成一个结合目标内容图像yc的内容和目标风格图像ys的风格的图像ˆy。我们为每个风格目标训练一个图像转换网络,用于训练几个精心挑选的风格目标,并将我们的结果与Gatys等人[11]的基线方法进行比较。
基线
作为基线,我们重新实现了Gatys等人[11]的方法。给定风格和内容目标ys和yc,以及执行特征和风格重建的图层j和j,通过求解问题生成图像ˆy。
其中λc、λs和λT V为标量,y用白噪声初始化,使用L-BFGS进行优化。方程5的无约束优化往往会导致图像的像素超出[0,255]范围。为了与我们的方法进行更公平的比较,我们的方法的输出被约束在这个范围内,对于基线,我们通过在每次迭代时将图像y剪裁到[0,255]的范围内,使用投影的L-BFGS来最小化等式5。优化通常在500次迭代内收敛到满意的结果。这种方法速度很慢,因为每次迭代都需要通过VGG-16损失网络φ的正向和反向传递。
训练细节
我们在MS-COCO数据集上训练风格转移网络[55]。我们将80k张训练图像中的每张图像调整为256×256,并以4个批次大小进行40k次迭代训练,在训练数据上给出了大约两个时代。我们使用Adam[56],学习率为1×10-3 。输出图像采用总变异正则化,强度在1×10-6和1×10-4之间,通过每个风格目标的交叉验证选择。我们不使用权重衰减或辍学,因为该模型不会在两个时代内过度拟合。对于所有风格转移实验,我们计算VGG-16损失网络φ的层relu3_3的特征重建损失和层relu1_2、relu2_2、relu3_3和relu4_3的风格重建损失。我们的实现使用Torch[57]和cuDNN[58];在单个GTX Titan X GPU上训练大约需要4个小时。
定性结果
在图6中,我们展示了定性的例子,将我们的结果与各种风格和内容图像的基线进行比较。在所有情况下,两种方法之间的超参数λc、λs和λT V完全相同;所有内容图像都来自MS-COCO 2014验证集。虽然我们的模型是用256×256的图像进行训练的,但它们可以在测试时以完全卷积的方式应用于任何尺寸的图像。在图7中,我们展示了在512×512图像上使用我们的模型进行风格转移的例子。总的来说,我们的结果与基线在质量上是相似的,但在某些情况下,我们的方法会产生具有更多重复模式的图像。例如在图6中的星夜图像中,我们的方法产生了重复的(但不完全相同的)黄色斑点;如图7所示,在更高的分辨率下,这种效果会变得更加明显。
定量结果
基线和我们的方法都使等式5最小化。基线在输出图像上执行显式优化,而我们的方法则被训练成在单次正向传递中找到任何内容图像yc的解。因此,我们可以通过测量这两种方法成功最小化等式5的程度来定量比较这两种方法。我们在MS-COCO验证集的50张图像上运行我们的方法和基线,使用The Muse作为风格图像。对于基线,我们在每次迭代优化时记录目标函数的值,对于我们的方法,我们记录每张图像的等式5的值;当y等于内容图像yc时,我们也计算等式5的值。结果如图5所示。内容图像yc实现了非常高的损失,我们的方法实现的损失与50到100次迭代的显式优化相当。虽然我们的网络被训练成针对256×256图像最小化等式5,但当应用于更大的图像时,它们也成功地最小化了目标。我们对512×512和1024×1024的50幅图像重复同样的定量评估;结果如图5所示。即使在更高的分辨率下,我们的模型也实现了与基线方法50到100次迭代相当的损失。
速度
表1比较了我们的方法和基线方法在几种图像尺寸下的运行时间;对于基线方法,我们报告了不同优化迭代次数的时间。在所有尺寸的图像中,我们的方法所花费的时间大约是基线方法单次迭代时间的一半。与基线方法的500次迭代相比,我们的方法要*个数量级。我们的方法以20 FPS的速度处理512×512的图像,使得它可以在实时或视频中运行。
4.2 单图像超分辨率
在单图像超解像中,任务是由低分辨率输入生成高分辨率的输出图像。这是一个固有的问题,因为对于每一个低分辨率的图像,都存在多个高分辨率的图像可以生成它。随着超分辨率因子的增长,模糊性变得更加极端;对于大的因子(×4,×8),高分辨率图像的细微细节可能在其低分辨率版本中很少或没有证据。
为了克服这个问题,我们在训练超分辨率网络时,不使用通常使用的每像素损失[1],而是使用特征重建损失(见第3节),以允许将语义知识从预训练的损失网络转移到超分辨率网络中。我们专注于×4和×8超分辨率,因为更大的因子需要对输入进行更多的语义推理。
用于评估超分辨率的传统指标是PSNR和SSIM[59],这两个指标被发现与人类对视觉质量的评估相关性很差[60-62]。PSNR和SSIM依赖于像素之间的低级差异,PSNR是在加性高斯噪声的假设下运行的。此外,PSNR等同于每像素损失pixel,因此由PSNR衡量,一个训练成最小化每像素损失的模型应该总是优于一个训练成最小化特征重建损失的模型。因此,我们强调,这些实验的目标不是为了实现最先进的PSNR或SSIM结果,而是为了展示用每像素损失和特征重建损失训练的模型之间的质的差异。
模型细节
我们通过最小化VGG-16损失网络φ在层relu2_2的特征重建损失来训练模型,以执行×4和×8超分辨率。我们使用来自MS-COCO训练集的10k张图像的288×288个补丁进行训练,并通过宽度σ=1.0的高斯核模糊和双立方插值下采样来准备低分辨率输入。我们使用Adam[56]进行批量大小为4的200k次迭代训练,学习率为1×10-3,没有权重衰减或掉队。作为后处理步骤,我们在网络输出和低分辨率输入之间进行直方图匹配。
基线
作为基线模型,我们使用SRCNN[1],因为它具有最先进的性能。SRCNN是一个三层卷积网络,经过训练,可以在ILSVRC 2013检测数据集的33×33个补丁上最小化每像素损失。SRCNN没有针对×8超分辨率进行训练,因此我们只能在×4上对其进行评估。SRCNN的训练超过109次迭代,这对我们的模型来说在计算上是不可行的。为了考虑SRCNN和我们的模型在数据、训练和架构上的差异,我们使用pixel来训练×4和×8超分辨率的图像变换网络;这些网络使用的数据、架构和训练与为最小化`f eat而训练的网络相同。
评估
我们在标准的Set5[65]、Set14[66]和BSD100[46]数据集上评估所有模型。我们报告了PSNR和SSIM[59],按照[1,44],在转换为YCbCr颜色空间后,仅在Y通道上计算两者。结果。我们在图8中显示了×4超分辨率的结果。与其他方法相比,我们为特征重建而训练的模型在重建锐利边缘和精细细节方面做得非常好,例如第一张图像中的睫毛和第二张图像中帽子的各个元素。除了图 8 所示的自动化指标外,我们还在 Amazon Mechanical Turk 上运行了一项用户研究,以评估我们在 BSD100 数据集上的 ×4 结果。在每个试验中,工人们都会看到一个图像的最近邻上采样和两种方法的结果,并被要求选择他们喜欢的结果。所有试验都是随机的,五个工人评估了每对图像。在SRCNN和本文模型之间,大多数人在96%的图像上首选特征模型。这项研究的更多细节可以在补充材料中找到。×8超分辨率的结果如图9所示。我们再次看到,与其他模型相比,我们的模型在边缘和精细细节方面做得很好,比如马的腿和蹄子。与像素模型相比,模型锐化了马和骑手的边界边缘,但背景树仍然是漫不经心的,这说明模型可能更了解图像语义。与基线方法相比,我们的模型的许多结果在像素级有网格状伪影,损害了它们的PSNR和SSIM。在图3中放大后可以看到类似的伪影,这说明它们是特征重建损失的结果,而不是图像变换网络的架构。图3显示了更明显的失真,因为图像是由更高级别的特征重建的,这促使我们使用relu2_2特征来训练我们的超分辨率模型。由于我们的 "像素 "和 "特征 "模型共享相同的架构、数据和训练过程,它们之间的所有差异都是由于 "像素 "和 "特征 "损失之间的差异。pixel损失给出了较少的视觉伪影和较高的PSNR值,但特征损失在重建精细细节方面做得更好,从而得到了令人满意的视觉效果。
5 结语
本文通过训练具有感知损失函数的前馈变换网络,结合了前馈图像变换任务和基于优化的图像生成方法的优点。我们将这种方法应用于风格转换,与现有方法相比,我们实现了相当的性能和大幅度提高的速度;应用于单幅图像超分辨率,用知觉损失训练可以使模型更好地重建细部和边缘。在未来的工作中,我们希望探索感性损失函数在其他图像转换任务中的使用。