Perceptual Losses for Real-Time Style Transfer and Super-Resolution

(基于感知损失函数的实时风格转换和超分辨率重建)

一、概述

1. 图像转换问题:将一个输入图像变换成一个输出图像。

(1)流行的处理方法:图像转换的方法通常是训练前馈卷积神经网络,将输出图像与原本图像的逐像素差距作为损失函数

(2)并行工作表示,高质量的图像可以通过用预训练好的网络提取高级特征、定义并优化感知损失函数来产生。

(3)结合以上两种方式的优点:

本文提出采用感知损失函数训练前馈网络进行图像转换的任务。

实验任务:

①图像风格化

②单图的超分辨率重建

实验结果:

①图像风格化,训练一个前馈网络去解决实时优化问题(Gatys等人提出的),和基于有优化的方法对比,网络产生质量相当的结果,却能做到三个数量级的提速;

②实验了单图的超分辨率重建,同样采用感知损失函数来代替求逐像素差距的损失函数。

2. 图像转换任务:

(1) 图像处理:图像降噪,超分辨率重建,图像上色,这都是输入一个退化的图像(噪声,低分辨率,灰度),输出一个高质量的彩色图像;

Perceptual Losses for Real-Time Style Transfer and Super-Resolution

(2) 计算机视觉:语义分割,深度估计,其中的输入是一个彩色图像,输出是图像对场景的语义或几何信息进行了编码。

一个处理图像转换任务的方法是在有监督模式下训练一个前馈卷积神经网络,用逐像素差距作损失函数来衡量输出图像和输入图像的差距。

3. 逐像素求差的损失函数的缺陷

(1)无法抓住输入及输出图像在感知上的差距。

(2)之前,使用逐像素比较的损失函数:即输出图像和真实图像每像素颜色的空间距离,使这个距离最小,这个方法存在弊端:

e.g.有2张基本一样的图像,其中2张图片每个像素相差1,基本视觉效果以及图片结构等都是一致的,但是其计算出来的损失函数却是相差较大的。

(3)目前工作表明:

高质量的图像可以通过建立感知损失函数(不基于逐像素间的差距,取而代之的是从预训练好的CNN中提取高层次的图像特征来求差),图像通过使损失函数最小化来生成。

二、相关名称

1. VGG-16

(1)在实际项目中,一般不会直接从第一层直接开始训练,而是通过在大的数据集上(如ImageNet)训练好的模型,把前面那些层的参数固定,在运用到新的问题上,修改最后一到两层,用自己的数据去微调(finetuning),一般效果也很好。

(2)finetuning,就是说针对某相似任务已经训练好的模型,比如CaffeNet, VGG-16, ResNet等, 再通过自己的数据集进行权重更新。如果数据量比较小,可以只更新最后一层,其他层的权重不变。

(3)vgg-16一种深度卷积神经网络模型,16表示其深度。

2. SRCNN

深度学习用在超分辨率重建上的开山之作SRCNN。超分辨率技术(Super-Resolution)是指从观测到的低分辨率图像重建出相应的高分辨率图像,在监控设备、卫星图像和医学影像等领域都有重要的应用价值。SR可分为两类:从多张低分辨率图像重建出高分辨率图像和从单张低分辨率图像重建出高分辨率图像。基于深度学习的SR,主要是基于单张低分辨率的重建方法,即Single Image Super-Resolution (SISR)。

3. SGD(Stochastic Gradient Descent)

(1)假如要优化一个函数 f(x),即找到它的最小值,常用的方法叫做Gradient Descent (GD), 也就是最速下降法。

(2)SGD随机梯度下降

Perceptual Losses for Real-Time Style Transfer and Super-Resolution

4. bicubic interpolation

双三次插值(bicubic interpolation),又称立方卷积插值。三次卷积插值是一种更加复杂的插值方式。该算法利用待采样点周围16个点的灰度值作三次插值,不仅考虑到4个直接相邻点的灰度影响,而且考虑到各邻点间灰度值变化率的影响。三次运算可以得到更接近高分辨率图像的放大效果,但也导致了运算量的急剧增加。这种算法需要选取插值基函数来拟合数据,其最常用的插值基函数如图:

Perceptual Losses for Real-Time Style Transfer and Super-Resolution

三、网络结构

1. 本文网络结构分为如下两部分:

图片转换网络fw

深度残差网络,参数是权重W,它把输入的图片x通过映射 y=fw(x)转换成输出图片y;(图片转换网络是用SGD训练,使得一系列损失函数的加权和保持下降)

损失网络φ(用了一个预训练好用于图像分类的网络φ,来定义损失函数)

每一个损失函数计算一个标量值li(y,yi), 衡量输出的y和目标图像yi之间的差距。(损失网络φ是能定义一个特征(内容)损失lfeat和一个风格损失lstyle,分别衡量内容和风格上的差距)

对于每一张输入的图片x,有一个内容目标yc一个风格目标ys,对于风格转换,内容目标yc是输入图像x,输出图像y,应该把风格Ys结合到内容x=yc上。我们为每一个目标风格训练一个网络。

Perceptual Losses for Real-Time Style Transfer and Super-Resolution

2. 图片转换网络fw

采用步幅卷积或微步幅卷积。神经网络有五个残差块组成,所有的非残差卷积层都跟着一个空间性的batch-normalization和RELU的非线性层,最末的输出层除外。最末层使用一个缩放的Tanh来确保输出图像的像素在[0,255]之间。除开第一个和最后一个层用9x9的kernel,其他所有卷积层都用3x3的kernels。

(1) 输入和输出:对于风格转换,输入和输出都是彩色图片,大小3x256x256。

(2) 图像转换网络用了两个stride=2的卷积去下采样输入,紧跟着的是几个残差块,接下来是两个卷积层(stride=1/2)来做上采样

这样做有什么样的优势?

①计算复杂性降低:提高性能,减少了参数;

②有效的感受野大小:大视野,风格转换会导致物体变形,因而,结果图像中的每个像素对应着的初始图像中的视野越大越好。

(3)残差连接:残差连接能让网络更容易的去学习确定的函数。

3. 感知损失函数φ

定义了两个感知损失函数,用来衡量两张图片之间高级的感知及语义差别。

(1)特征(内容)损失函数

用VGG计算来高级特征(内容)表示。

找到一个图像Y使较低的层的特征损失最小,往往能产生在视觉上和y不太能区分的图像,如果用高层来重建,内容和全局结构会被保留,但是颜色纹理和精确的形状不复存在。用一个特征损失来训练图像转换网络能让输出非常接近目标图像y,但并不是让他们做到完全的匹配。

内容损失函数的计算:

由生成图片在高层上的特征**值与实际内容图像在当前层上的特征**值之间的距离差平方;

内容损失只计算一层(比较高层的)

不同层重建效果

Perceptual Losses for Real-Time Style Transfer and Super-Resolution

使用不同层的重建效果如上图所示。

(2)风格损失

特征(内容)损失惩罚了输出的图像(当它偏离了目标y时),所以也希望去惩罚风格上的偏离:颜色,纹理,共同的模式等方面。(风格重建的损失函数)

为了表示从一个集合层的风格重建,而不是由单层重建,把Lstyle(y^,y)定义成一个损失的集合(针对每一个层的损失求和)。

风格损失函数的计算:

由生成图片每层上的特征与实际图像在当前层上风格特征之间的距离差平方的累加和;(两张图片,在loss网络的每一层都求出Gram矩阵,然后对应层之间计算欧式距离,最后将不同层的欧氏距离相加,得到最后的风格损失)

风格损失函数计算了所有层上的差异平方和。

不同层的风格重建效果如下图所示:

Perceptual Losses for Real-Time Style Transfer and Super-Resolution

4. 简单损失函数

除了感知损失,还定义了两种简单损失函数,仅仅用了低维的像素信息:

①像素损失

像素损失是输出图和目标图之间标准化的差距

②全变差正则化

全变差正则化一般用在信号去噪(为使得输出图像比较平滑)

四、实验以及结果

1. 实验(这里主要介绍风格转换)

风格转换的目标是产生一张图片,既有内容图的内容信息,又有风格图的风格信息,为每一种风格训练了一个图像转换网络,这几种风格图都是我们手工挑选的。

(1)基线:作为基线,重现了Gatys等人得方法,给出风格和内容目标ys和yc,层i和J表示特征和风格重建。

(2)训练细节:风格转换网络是用COCO数据集训练的。

(http://cocodataset.org/#download)

(3)定性结果:所有的训练集都是从MS-COCO2014验证集里抽选的。

①风格转换网络能意识到图像的语义内容;

②VGG16网络是被训练用来分类的,所以对于图片的主体(人类和动物)的识别要比那些背景保留完整的多;

(4)定量结果:基本方法针对一张图进行明确的优化(针对要输出的图像)的方法训练一个解决方案(能在前馈中处理任意一张图片Yc),可以量化的比较这两种方法,通过衡量它们成功减少代价函数的幅度。

(5)风格迁移

Perceptual Losses for Real-Time Style Transfer and Super-Resolution

在图像风格转换任务上,针对不同分辨率的图像,Loss值在Perceptual Loss(ours)和图像风格转换([10])以及内容图片上的。

可以看到,使用Perceptual Loss相当于原始算法迭代50到100次。

L-BFGS优化

是机器学习中比较常见的优化算法。

L-BFGS算法比较适合在大规模的数值计算中,具备牛顿法收敛速度快的特点,但不需要牛顿法那样存储Hesse矩阵,因此节省了大量的空间以及计算资源。

拟牛顿法(BFGS)的核心思想是:构造与Hesse矩阵相似的正定矩阵,而这个构造方法计算量比牛顿法小。其实可以发现上面讲的共轭梯度法也避免了Hesse矩阵的直接计算,一定程度上可以认为拟牛顿法是共轭梯度法的兄弟。

(6)速度:跟基本方法500次迭代的相比,我们的方法快了三个数量级。

Perceptual Losses for Real-Time Style Transfer and Super-Resolution

2. 结论以及展望

(1)结合了前馈网络和基于优化的方法的好处,通过用感知损失函数来训练前馈网络。我们对风格转换应用了这个方法达到了很好的表现和速度。

(2)展望:

①探索使用感知损失函数来进行其他图像转换任务,如着色和语义分割;

②调查使用不同的损失网络,看看例如在不同的任务或数据集上训练的损失网络是否可以传递具有不同类型的语义知识的图像转换网络。