任意风格快速迁移算法解读

论文:Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization

算法背景

图像风格迁移即对于给定的图像,将其渲染成某种艺术风格的图像。这主要包含两个问题,一是如何对风格图像中的风格特征进行建模和提取,二是如何将提取的风格和内容混合然后还原成一个相应的风格化结果。

图像风格化起源于纹理建模和图像重建。

其中纹理建模(Visual Texture Modelling)又分为两类:

  1. 基于统计分布的参数化纹理建模方法
  2. 基于MRF的非参数化纹理建模方法

纹理建模解决了如何对风格特征进行提取的问题。

而图像重建解决的则是如何将给定的特征表达重建还原为一张图像。

图像重建算法其实也可以分为两类:

  1. 基于在线图像优化的慢速图像重建方法
  2. 基于离线模型优化的快速图像重建方法

第一类图像重建的方法是在图像像素空间做梯度下降来最小化目标函数。

这一类算法的过程可以理解为:由随机噪声作为起始图,然后不断迭代改变图片的所有像素值来寻找一个目标结果图 x’ ,这个目标结果图的特征表达和我们作为重建目标的目标特征表达 Φ(x) 相似,即像素迭代的目标为 Φ(x’)≈Φ(x) 。

由于每个重建结果都需要在像素空间进行迭代优化很多次,这种方式是很耗时的。为了加速这一过程,一个直接的想法是我们能不能设计一个前向网络,用数据驱动的方式,喂给它很多训练数据去提前训练它,训练的目标就是给定一个特征表达作为输入,这个训练好的网络只需要一次前向就能输出一张重建结果图像。

背景知识

批量归一化(Batch Normalization)

使用BN layer来归一化样本可显著地加速前馈神经网络的训练。同时它对图片生成模型也有卓越的功效。对于每一个样本的特征通道,BN 归一化它们的均值和标准差。

$\gamma$ 和$\beta$ 是从数据中学习的仿射参数。
其中

Alt text

实例归一化(Instance Normalization)

Ulyanov 发现在风格迁移中通过替换BN lawyer为IN lawyer 可以有明显的改善。

不同于BN lawyer ,这里的均值和标准差是独立地从每一个样本每一个通道的空间维度计算来的。
Alt text

Alt text

自适应实例归一化(Adaptive Instance Normalization)

如果IN可以通过仿射参数将输入归一化为某种特定风格,那它也可以通过自适应的仿射变换将输入归一化为任意给定的风格。这种IN被称为AdaIN。AdaIN对于收到的输入x和风格输入y,通过对齐x每一个通道的均值和标准差来匹配y。AdaIN没有需要学习的仿射参数,相反它是自适应地从风格输入里计算得。

简单地通过风格y地均值和标准差来平移和缩放x。

直觉性地,让我们简单地思考一下检测某种风格笔触地特征通道。具有这种笔触地风格图像会对这种特征产生很高的平均激活。通过AdaIN产生的输出也会对这种特征具有很高的平均激活,同时能保留内容图像的空间结构。这种笔触特征可以通过解码器前向传播反转到图像空间上去。此特征通道的方差可编码更细微的风格信息,这也是将转移到AdaIN输出和最终输出图像的风格信息。一言以蔽之,在feature 空间中,将content图的每通道输入的均值和方差归一化后的结果对齐匹配到风格图的每通道输入的均值和方差。这里的content图和style图的每通道输入的值都是feature空间的,这篇论文中采用的是预训练好的vgg网络relu4_1的feature空间结果作为输入的。

架构

Alt text

此风格迁移网络T将一张内容图片c和一张任意的风格图片s作为输入,输出一张联合了s的风格和c的内容的图片。

T分为两部分,生成网络和计算损耗网络,生成网络采用简单的编码器—解码器架构。风格转换生成网络由Encoder-AdaIN-Decoder这3部分组成。Encoder 部分是采用预训练好的VGG网络,只使用到了Relu4_1部分,将风格和内容图的图像都从图像空间转到特征空间。在特征空间编码了风格图像和内容图像之后,我们将这两个特征图都喂给一层AdaIN对内容图进行归一化,这里是通过对齐内容图的每通道的feature map的均值和方差来匹配风格图每通道feature map的均值和方差。
Alt text

一个随机初始化的解码器g训练来将特征空间t转变为图像空间,整个网络中需要训练的就是这部分网络的权重参数信息,,通过梯度下降可以不断进行更新参数以使整个损耗函数比较小、网络逐渐收敛。用它以生成风格化图像T(c,s)
Alt text

解码器几乎是编码器的镜像,只是将所有的池化层替换为最近邻上采样层来减少棋盘效应(神经网络生成的图像时,经常会看到一些奇怪的棋盘格子状的伪影)。在编码器和解码器中都使用reflection padding来消除边界伪影。

整个生成网络的时间花费基本是content encoding、style encoding、decoding各占三分之一时间。

训练

用MS-COCO作为内容图像级及从WiKiArt收集的绘画作品集合作为风格图像集来训练我们的网络。每一个数据集大概包括80 000张训练样本。使用adam 优化器和大小为8的content-style 的图像对批量.

在训练时,先将两张图片的最小的维度resize到512512,保留纵横比,然后随机地裁剪256256的区域。因为论文中的网络是全卷积的,所以它在测试阶段是可以应用任意大小的图像。

我们用预先训练好的VGG-19计算损失函数来训练解码器:
Alt text

这个损失函数用一个权重参数联合了内容损失函数和风格损失函数。内容损失函数是内容图片和AdaIN输出目标图片的欧几里得距离,而不是通常的特征地图的欧几里得距离。
Alt text

风格损失没有采用Gram矩阵这种方式,即使会产生相似的结果。因为在AdaIN层只传递了风格特征的均值和方差,所以风格损失只做了这些数据的匹配。同样也采用了relu1_1,relu2_1,relu3_1,relu4_1四层的feature maps。即风格损耗只是基于IN统计的损耗。

Alt text

每一个∅_i 代表着VGG19中的某一层网络的输出,以此来计算损失
在论文中使用具有相同权重的relu1_1,relu2_1,relu3_1,relu4_1.

参考文献

  1. 综述:图像风格化算法最全盘点
  2. 神经风格迁移研究概述:从当前研究到未来方向