静永程作者

综述:图像风格化算法最全盘点 | 内附大量扩展应用

这篇文章可以看做是我之前放在 arXiv 上的一篇综述文章 Neural Style Transfer: A Review(v4 最新版更新于 2018 年 4 月 26 日)的中文精简版

作者丨静永程

学校 | 浙江大学硕士生

导师 | 宋明黎教授、俞益洲教授

研究方向丨纹理合成、计算摄影

前言

这篇文章可以看做是我之前放在 arXiv 上的一篇综述文章 Neural Style Transfer: A Review(v4 最新版更新于 2018 年 4 月 26 日)的中文精简版,对应的项目主页详见下方,有兴趣的同学建议去看英文的完整版。

■ 论文 | Neural Style Transfer: A Review

■ 链接 | https://www.paperweekly.site/papers/1926

■ 主页 | https://github.com/ycjing/Neural-Style-Transfer-Papers

非常感谢在准备这篇综述文章的过程中大牛 @Xun Huang @张航 @爱可可-爱生活 老师的帮助,以及感谢 @机器之心 的翻译总结神经风格迁移研究概述:从当前研究到未来方向,和淘宝AI Team的 @黄真川 哥在项目落地上的支持和帮助。 希望这篇文章能够对后面打算做风格化相关研究的同学有所帮助。

下面我将以风格化简介—前传—起源—发展—应用的顺序依次对相关内容进行介绍。

简介

首先,第一个问题,什么是图像风格化(Neural Style Transfer)?

简单来讲,图像风格化是将一张照片渲染成有艺术风格的画作。图像风格化算法的输入有二,分别是内容图和风格图,输出有一个,为风格迁移后的结果图。举个例子:

上面这张表示图像风格化算法将输入的一张长城的照片作为内容图,将富春山居图作为风格图,将长城的内容保留,风格替换成中国山水画的风格,创作出一张新的艺术作品。

ok,基本的概念有了,下面我们来唠一唠风格化前传。

前传

图像风格化算法说白了其实就是一个图像渲染的过程。看到上面长城那张图,第一反应,图形学的一大分支——非真实感图形学,不也是干这件事的嘛。

没错,大体来说,在非真实感图形学领域,图像艺术风格渲染技术可以大体分为基于笔触渲染的方法(Stroke-based Rendering)、基于图像类比的方法(Image Analogy)、基于图像滤波的方法(Image Filtering)。

但为啥这些基于图形学的技术没有大规模落地,出现 Prisma,Ostagram 之类风靡全球的应用呢?咱们一个一个分析一下。

首先,基于笔触渲染的方法,他在算法设计的之前首先会确定某一种风格,也就是说每一个基于笔触渲染的方法一般只对应于一种风格,而不能简单地扩展到其他风格的迁移;图像类比方法需要很多成对儿的原图和风格结果图作为训练集,然而对所有风格图找到这些成对儿的数据集貌似不太现实。

而通过图像滤波的方法速度快、效果稳定,可满足工业界落地的需求(之前很火的时光相册出的“你的名字”滤镜估计就是算法工程师用这种方式不断调整出来的),但是基于图像滤波的方法能模拟出来的风格种类很有限。 

而在基于统计学的计算机视觉领域,图像艺术风格迁移也有很多大牛前辈研究过了。在视觉领域,图像艺术风格渲染一般被认为是纹理合成的一个扩展问题。纹理合成是给定一个源纹理图,然后去合成更多的类似的纹理结构,最终组成一个大的纹理图(关于纹理合成的相关工作这里就不详细说了,有兴趣的同学可以去看这个博客)。

风格迁移中的风格图其实可以看成是一种纹理,由此,假如我们在合成纹理图的时候去刻意保留一些语义信息,那不就是风格迁移的结果嘛。

没错,但那个年代管这个问题不叫风格迁移,而叫纹理迁移(texture transfer),换汤不换药,意思是差不多的。

但是呢,为啥纹理迁移在那会儿没有流行起来呢?因为那会儿纹理迁移是基于低层次的图像特征来做的,没有考虑语义信息,所以很多结果不那么得尽如人意。 

是时候祭出下面这张图了:

起源

由前传中的介绍,我们可以发现现有的图像艺术风格渲染方法照着大规模落地还有一段距离。而正好在这个时代,有着很多前人所做的扎实的基础研究。很多新的研究都是站在巨人的肩膀上开拓和完成的,Neural Style Transfer 也不例外。 

譬如咱们说纹理建模方法(Visual Texture Modelling),主要研究如何表示一种纹理,是纹理合成技术的核心。

以往的纹理合成方法可以分为两大类:基于统计分布的参数化纹理建模方法(Parametric Texture Modelling with Summary Statistics)基于 MRF 的非参数化纹理建模方法(Non-parametric Texture Modelling with MRFs)

基于统计分布的参数化方法主要将纹理建模为 N 阶统计量,而基于 MRF 的方法一个经典套路是用 patch 相似度匹配进行逐点合成。而咱们之前提到过,风格可以看成一种纹理。

那我们能不能直接把纹理建模这一套方法用于风格图中的风格建模?Bingo,这就是图像风格化迁移算法(Neural Style Transfer)的起源和基石之一(到后面风格化发展章节中的现有风格化算法分类时大家对此会有更深的体会)。

纹理建模方法的相关研究解决了图像风格化迁移的第一个大问题:如何对风格图中的风格特征进行建模和提取

▲ Image credited to Kaijian Gao from Brown University

好了,成功把风格图中的风格抽出来后,如何和内容混合然后还原成一个相应的风格化结果呢?这就到了另一个领域——图像重建(Image Reconstruction)了。

图像重建的输入是特征表达,输出是特征表达对应的图像。他其实和咱们通常的输入图像提特征的过程相反,是把某个特征逆向重建为原来的图像(重建结果不唯一)。

那这有啥用呢?以往图像重建主要是用来理解某些特征表达的。就比如说 CNN 特征,CNN 是黑盒子,某个 CNN 特征具体包含哪些特征,这谁也不敢下定论。

然后图像重建提供了一个可以加深特征理解的途径。假如说给定一张猴子的某个图像分类特征,我们重建出来的不同结果中猴子的五官位置均正确保留,而其他的比如颜色等不同结果不太一样,那么我们可以理解成此分类网络在分类猴子这个类别的图像的时候,会参考五官的位置来与其他类别进行区分。

下面附上我两年前在课题组讲 seminar 时候画的一张图以帮助大家理解:

而通过重建预训练的分类网络(如 VGG)中的高层特征,发现重建结果保留了高层语义信息_而摒弃了低层的颜色等信息。

此时此刻,结合咱们刚说的风格建模,拍脑门一想,假如我在图像重建时候加上个保留给定风格信息的约束,那不就可以让重建出的结果既有我们想要的内容图的_高层语义信息,又有给定风格图中包含的风格信息吗?

一个崭新的领域——图像风格化迁移(Neural Style Transfer)由此诞生。围绕图像风格化迁移技术,学术界和工业界风起云涌,英雄倍出。

三部曲之二

上文主要和大家讨论了图像风格化迁移的简介、前传和起源,目的是想让大家对风格化这个领域有一个初步的认识。其中起源这一部分比较重要,这里再做一个简单回顾以及补充。 

图像风格化迁移源于两个其他领域:纹理建模(Visual Texture Modelling)和图像重建。 

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

(a) 基于统计分布的参数化纹理建模方法(Parametric Texture Modelling with Summary Statistics)

(b) 基于MRF的非参数化纹理建模方法(Non-parametric Texture Modelling with MRFs)

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

图像重建解决的则是如何将给定的特征表达重建还原为一张图像。上篇文章中没有提到的一点是图像重建算法其实也可以分为两类: 

(a) 基于在线图像优化的慢速图像重建方法(Slow Image Reconstruction based on Online Image Optimisation)

(b) 基于离线模型优化的快速图像重建方法(Fast Image Reconstruction based on Offline Model Optimisation) 

由名字也可以看出这种分类方式的主要依据是图像重建的速度。第一类图像重建的方法 (a) 是在图像像素空间做梯度下降来最小化目标函数

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

由于每个重建结果都需要在像素空间进行迭代优化很多次,这种方式是很耗时的(几百乘几百的图需要几分钟),尤其是当需要的重建结果是高清图的时候,占用的计算资源以及需要的时间开销很大。

为了加速这一过程,一个直接的想法是我们能不能设计一个前向网络,用数据驱动的方式,喂给它很多训练数据去提前训练它,训练的目标就是给定一个特征表达作为输入,这个训练好的网络只需要一次前向就能输出一张重建结果图像。

Bingo,这种方式最终被一些德国研究者在一篇 CVPR 论文中证明了其有效性,即第二类方法 (b) 。后续这些德国研究者又融入了生成对抗网络(Generative Adversarial Network)的思想,进一步提升了效果,这个工作发表在了一篇 NIPS 上。 

下面用这张图总结一下图像风格化算法的起源和基石,本文剩下部分全是建立在这些内容之上的:

▲ 图1:图像风格化迁移之起源

ok,下面开始这篇文章的重头戏——图像风格化迁移(Neural Style Transfer)的发展

发展

前面提到,图像风格化迁移算法=图像重建算法+纹理建模算法,而图像重建和纹理建模又各自可以分为两类方法。于是乎,我们可以很自然地想到,如果将两类图像重建算法和两类纹理建模方法进行排列组合,不就可以得到一系列的图像风格化迁移算法嘛?

事实上,粗略来讲,在图像风格化这一领域大家也确实都是这么做的。下面我先给出一个现有图像风格化迁移的分类方法,大家可以和前面的图 1 放在一块看,图像风格化迁移这一领域的研究脉络和套路即可了然于胸。

▲ 图2:图像风格化迁移算法分类方法

下面咱们一起对每一类图像风格化算法做具体介绍和优缺点分析。为了讨论方便,涉及具体算法时直接采用上面这张图中的引用序号进行表示。

1. 基于在线图像优化的慢速图像风格化迁移算法(Slow Neural Method Based On Online Image Optimisation)

1.1. 基于统计分布的参数化慢速风格化迁移算法(Parametric Slow Neural Method with Summary Statistics)

通过名字就可以看出,这一类风格化算法是由基于在线图像优化的慢速图像重建方法和基 于统计分布的参数化纹理建模方法结合而来。

其中,图像风格化迁移这一领域的祖师爷 Gatys 的开山大作 [4] 就是属于这一类方法的。在此之前,祖师爷自己先发了一篇 NIPS 提出了一个新的基于 CNN 的纹理建模方法[27] Texture Synthesis Using Convolutional Neural Networks

[27] 的核心思想是在图像经过预训练的 VGG 网络时的特征表达(feature map)上计算 Gram 矩阵,利用得到的 Gram 矩阵来表示一种纹理。

Gram 矩阵的计算方式是先将预训练 VGG 某一层的特征表达reshape 成,然后用 reshape 后的特征表达和其转置矩阵相乘,最后得到的 Gram 矩阵维度为

祖师爷发现这个 Gram 矩阵可以很好地表示大多数纹理。结合咱们在上一篇博文讨论的内容,这个 Gram 矩阵的纹理表示方法其实是利用了二阶统计量来对纹理进行建模。

祖师爷之后用 Gram 矩阵来对图像中的风格进行建模和提取,再利用慢速图像重建方法,让重建后的图像以梯度下降的方式更新像素值,使其 Gram 矩阵接近风格图的 Gram 矩阵(即风格相似),然后其 VGG 网络的高层特征表达接近内容图的特征表达(即内容相似),实际应用时候经常再加个总变分 TV 项来对结果进行平滑,最终重建出来的结果图就既拥有风格图的风格,又有内容图的内容 Image Style Transfer Using Convolutional Neural Networks

除了 Gram 矩阵外,还有一些其他方式对风格进行建模。[37] 里 @Naiyan Wang 老师在 IJCAI2017 的文章中从 Domain Adaption 的角度对风格化迁移进行解释和分析,并提出了一些其他的用于风格建模的方法 Demystifying Neural Style Transfer

这里简单解释一下,Domain Adaption 指的是当训练数据和测试数据属于不同的域时,我们通过某种手段利用源域有标签的训练数据训练得到的模型,去预测无标签的测试数据所在的目标域中的数据。

Domain Adaption 其中一个套路就是以最小化统计分布差异度量 MMD 的方式,让目标域中的数据和源域中的数据建立起一种映射转换关系。

@Naiyan Wang 老师通过公式推导发现,最小化重建结果图和风格图的 Gram 统计量差异其实等价于最小化两个域统计分布之间的基于二阶核函数的 MMD。换言之,风格迁移的过程其实可以看做是让目标风格化结果图的特征表达二阶统计分布去尽可能地逼近风格图的特征表达二阶统计分布。

由此可以很自然地想到,既然是衡量统计分布差异,除了有二阶核函数的 MMD 外,其他的 MMD 核函数例如一阶线性核函数、高阶核函数、高斯核函数,也可能达到和 Gram 统计量类似的效果。实验证明也确实如此。这些计算风格特征的方式其实都是在特征表达(feature map)的所有 channel 上进行计算的。

除了这些贡献外, @Naiyan Wang 老师还提出了一个新的用 channel-wise 的 BN 统计量去对风格进行建模的方法,即利用 VGG 某些层的特征表达的每一个channel的均值和方差(channel-wise)来表示风格。表示 VGG 中第 l 层的 feature map 的第 c 个 channel,并取得了很好的效果,后续有很多研究者 follow 了这种风格建模的方式。

看到这里大家可以发现一点的是,以往风格化算法在提取特征的时候都是在高层次的 CNN 特征空间(feature space)中完成的,虽然这样做的效果在感知效果上(perceptually)优于利用传统的在像素空间(pixel space)计算的特征,但由于特征空间是对图像的一种抽象表达,会不可避免丢失一些低层次的如边缘等的图形信息这会导致风格化结果图中有一些不是很漂亮的变形等。 

@李韶华 老师为解决这一问题,在 ACM MM2017 的一篇文章中 [40] Laplacian-Steered Neural Style Transfer,提出在风格化迁移的过程中同时考虑像素空间和特征空间

具体做法为在像素空间中将内容图的拉普拉斯算子的滤波结果和风格化重建结果图的滤波结果之间的差异作为一个新的 loss,加到祖师爷 Gatys 提出的损失函数上面。这样的话就弥补了抽象特征空间丢失低层次图像信息的缺点。

1.2. 基于MRF的非参数化慢速风格化迁移算法(Non-parametric Slow Neural Method with MRFs)

另外一类慢速风格化算法就是利用基于 MRF 的非参数化纹理建模方法对风格信息进行建模了。代表性工作由浙大出身、德国美茵茨大学 Postdoc Chuan Li 学长完成并发表于 CVPR 2016 [41] Combining Markov Random Fields and Convolutional Neural Networks for Image Synthesis

其核心思想是提出了一个取代 Gram 损失的新的 MRF 损失。思路与传统的 MRF 非参数化纹理建模方法相似,即先将风格图和重建风格化结果图分成若干 patch,然后对于每个重建结果图中的 patch,去寻找并逼近与其最接近的风格 patch。

与传统 MRF 建模方法不同之处在于,以上操作是在 CNN 特征空间中完成的。另外还需要加一个祖师爷 Gatys 提出的内容损失来保证不丢失内容图中的高层语义信息。

这种基于 patch 的风格建模方法相比较以往基于统计分布的方法的一个明显优势在于,当风格图不是一幅艺术画作,而是和内容图内容相近的一张摄影照片(Photorealistic Style),这种基于 patch 匹配(patch matching)的方式可以很好地保留图像中的局部结构等信息。

2. 基于离线模型优化的快速图像风格化迁移算法(Fast Neural Method Based On Offline Model Optimisation)

ok,咱们前面介绍的都是用慢速图像重建方法对风格化结果进行重建的,所以速度肯定是比较慢的,而且很吃资源,在工业界落地的成本肯定是很高的。

所以另外一个大的图像风格化迁移算法分支——快速图像风格化迁移算法主要解决速度问题,核心思想就是利用基于离线模型优化的快速图像重建方法对风格化结果进行重建,基预先训练前向网络来解决计算量大、速度慢的问题。

根据一个训练好的前向网络能够学习到多少个风格作为分类依据,我们将快速图像风格化迁移算法分为单模型单风格(PSPM)单模型多风格(MSPM)单模型任意风格(ASPM)的快速风格化迁移算法。

下面先放一张不同快速风格化方法的对比图:

2.1. 单模型单风格的快速风格化迁移算法(Per-Style-Per-Model Fast Neural Method)

单模型单风格的快速风格化迁移算法是最早的一类快速风格化算法。主要想法是针对每一个风格图,我们去训练一个特定(style specific)的前向模型,这样当测试的时候,我们只需要向前向模型扔进去一张内容图,就可以前向出一个风格化结果了。

如此这般,工业化落地就非常方便了,直接将模型打包,做成一个 API,用户上传数据后直接把数据扔进去返回结果就好了(模型大小也不大,在淘宝 AI Team 的 @黄真川 哥指导下对模型进行优化并打包,最终用的时候一个 tf 模型才 0.99MB)。 

这一类算法(简称PSPM)其实可以再分成两类:(1)一类是基于统计分布的参数化快速风格化PSPM算法以及(2)基于MRF的非参数化PSPM算法

(1)这一小类算法代表性工作主要有两个,一个由斯坦福的 Justin Johnson 提出(CS231n 的大神 lecture)[42] Perceptual Losses for Real-Time Style Transfer and Super-Resolution,另一个由俄罗斯成立不久的 Skolkovo 科技研究所的 Ulyanov 提出(Deep Image Prior 的作者)[43] Texture Networks: Feed-forward Synthesis of Textures and Stylized Images

这两个工作的思想相同,都是用一个前向网路求学一个风格。训练数据可以用 COCO 的 8 万张图,损失函数和祖师爷 Gatys 的慢速风格化算法相同,用 Gram 统计量来进行风格建模。

不同之处在于两个工作的具体网络框架设计不同,一个基于当时最新的残差网络设计的,一个是设计了多尺度的网络(我实验发现基于残差网络的设计能更好地最小化风格化损失函数,感兴趣的同学可以去看我 arXiv 上 Review 的实验部分)。

Ulyanov 后来又在 CVPR 2017 上对其之前的工作做了改进,他们发现 Instance NormalizationBatch Normalization 能够更快、更好地使模型达到收敛(其实就是把 batch normalization 的 batch size 设成 1),但其实 Instance Normalization 的 idea 最早是由 @Naiyan Wang 老师在 [1603.04779] Revisiting Batch Normalization For Practical Domain Adaptation 中提出的 ,即文章中的 Adaptive Batch Normalization (AdaBN)

(2)第二小类基于 MRF 的快速 PSPM 风格化算法也是由 Chuan Li 学长提出的[47] Precomputed Real-Time Texture Synthesis with Markovian Generative Adversarial Networks,他们将自己之前提出的基于 patch 的慢速风格化算法进行了加速。同样是训练一个前向网络,Chuan Li 学长进一步利用 GAN 中的判别网络的想法来取代他们慢速风格化算法中的 patch 匹配(patch matching)过程。

这一工作的最终效果虽然不是特别理想(由我个人的审美来看),但这篇文章的理论价值很大,其想法在另一篇具有开创意义的文章,清华出身、BAIR PhD 的大牛朱俊彦的 Image-to-Image Translation with Conditional Adversarial Networks 中被进一步延伸和发展。

2.2. 单模型多风格的快速风格化迁移算法(Multiple-Style-Per-Model Fast Neural Method)

楼上的单模型单风格的快速风格化迁移算法对于每一个风格都要训练一个模型,这个就很不便利了,而且如果在工业落地的时候,有几百个风格的话还好说,要是有上万、百万的风格的话,所有模型占用的巨大空间开销就肯定会被产品经理拎出来说了。于是乎,学术圈的很多研究者开始研究咋利用一个模型去学习很多个风格,即单模型多风格的快速风格化迁移算法(下面简称 MSPM)。

大家可以设身处地想一下这个问题,要是需要咱们自己去解决这个问题,可以怎么去想。

首先把多个风格整合到一个模型中,理论上是合理的。比如咱们就说中国山水画,有很多著名山水画作品,但不同山水画虽然风格不尽相同,但是还是有很多相似的地方的(相似特征),所以对每一幅山水画训练得到的网络之间理论上是有共享的部分的。

于是乎在这种情况下,对每个风格都学习一个网络本来就是一件很冗余、浪费资源的事情。沿着这个思路想,我们能不能发掘出不同风格网络之间共享的部分,然后对于新的风格只去改变其有差别的部分,共享的部分保持不变呢?

Bingo,这个就是 Google Brain 的众大佬们研究出来的一个 MSPM 算法的基本思路 [48] A Learned Representation for Artistic Style。他们发现在训练好的一个风格化网络基础上,只通过在 Instance Norlization 层上做一个仿射变换(他们起了个名字叫 Conditional Instance Normalization,简称 CIN),就可以得到一个具有完全不同风格的结果。

这下好了,我们只需要把 CIN 层中仿射变换的很少的参数与每一个风格进行绑定,每个新风格只需要去训练这些参数,其余部分保持不变就 ok 了。

最后实验效果显著。但说实话这个有点类似科学发现的意味,CIN 层 work 的理由现在也没有严格的推导证明。一个大概的解释是 CIN 能够进行一种 style normalization,能够将图像中的风格直接 normalize 成另外一种风格。

另一个由 @微软亚洲研究院 与中科大的联合培养博士生 @陈冬冬 哥提出的 MSPM 法 [49] StyleBank: An Explicit Representation for Neural Image Style Transfer 与 Google Brain 这篇思路有异曲同工之妙,核心思想为把风格化网络中间的几层单独拎出来(文章中起了个名字叫 StyleBank 层),与每个风格进行绑定,对于每个新风格只去训练中间那几层,其余部分保持不变。这里也有一篇 @微软亚洲研究院 的介绍文章:AI 创造艺术风格化:从图片到视频 [1]。 其中特别感谢 @陈冬冬 哥帮我 forwarding 算法结果

ok,上面俩工作的共同点都是把网络的一部分拿出来与每个风格进行绑定,从而实现 MSPM,虽然随着风格的增加,模型大小不会大很多,但总归还是会跟着变大。所以呢,另外有一些研究者想,咱能不能试试完全用一个网络,看它能不能学到多个风格。

这时候需要考虑的问题是既然只用一个网络,那就需要给网络一个信号,我们需要风格化成哪一个风格。这一思路最早由 Amazon AI 的 @张航 在 2017 年 3 月提出 [51] Multi-style Generative Network for Real-time Transfer。 

该算法的核心思想是把通过 VGG 网络提取到的风格特征与风格化网络中的多个尺度的中间层的 feature map 通过提出的 Inspiration Layer 结合在一起,相当于将风格特征作为信号输入到网络中来决定要风格化成哪一个风格。

最终算法的效果非常显著,由我自己实验结果来看 [51] 是质量上最接近 PSPM 算法结果的 MSPM 方法。在 @张航 的博文里有对这个方法更详细的介绍:多风格生成网络——实时风格转换 [2]。在此非常感谢 @张航 哥在训练模型上给予我的帮助

另外除了把风格特征作为信号外,另一个选择是把图像像素作为信号输入进去风格化网络。这一想法的可行性在浙大李一君学长的工作 [50] 中得到了证明 Diversified Texture Synthesis With Feed-Forward Networks。李一君学长首先将每一张风格图与一个随机产生的噪声图进行绑定,然后将噪声图与风格化网络中间层的 feature map 进行 concat,作为网络进行风格选择的信号。

2.3. 单模型任意风格的快速风格化迁移算法(Arbitrary-Style-Per-Model Fast Neural Method)

有了上面的介绍,现在咱们已经能够做到用一个网络迁移多个风格了,虽然模型大小的问题一定程度上解决了,不过对于新的一组风格,我们仍然有额外训练时间的开销。于是有学者开始想,我们能不能搞一个模型出来,做到 Zero-shot Fast Style Transfer,即来一个新风格不需要训练,我们就可以很快速地把风格化结果输出来?(这里我们称之为单模型任意风格,简称 ASPM)。

最早的 ASPM 算法由多伦多大学的 Tian Qi Chen(不是 UW 的明星博士生陈天奇)提出的[52] Fast Patch-based Style Transfer of Arbitrary Style。这个算法是基于 patch 的,可以归到基于 MRF 的非参数化 ASPM 算法

基本思想是在 CNN 特征空间中,找到与内容 patch 匹配的风格 patch 后,进行内容 patch 与风格 patch 的交换(Style Swap),之后用快速图像重建算法的思想对交换得到的 feature map 进行快速重建。但由于 style swap 需要一定的时间开销,[52] 没有达到实时。

第一篇能达到实时的 ASPM 算法由康奈尔的大牛 @Xun Huang 提出 [46] Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization。[46] 中的工作主要受到 MSPM 的 CIN 层启发,提出一个 Adaptive Instance Normalization (AdaIN)

AdaIN 的输入是通过 VGG 提取的风格和内容特征,用数据驱动的方式,通过在大规模风格和内容图上进行训练,让 AdaIN 能够直接将图像中的内容 normalise 成不同的风格。这一工作录用为 ICCV 2017 的 Oral。在此非常感谢 @Xun Huang 哥在实验过程中给予的帮助

另外一个数据驱动的 ASPM 方法由 CIN 的提出者——Google Brain 提出 [53] Exploring the Structure of a Real-time, Arbitrary Neural Artistic Stylization Network

[53] 可以看做是 [48] 的一个 follow-up 的工作,既然通过改变 CIN 层中仿射变换的参数,就可以得到不同的 style,换言之,只要任意给一个风格,我们只需要知道他的 CIN 层中的仿射变换的参数就可以了。

沿着这个思路,Google Brain 的研究者设计和训练了一个 style prediction network 去专门预测每个 style 的仿射变换的参数,style prediction network 需要大规模 style 和 content 图来进行训练。

这个方法的缺点也很明显,数据驱动的方式不可避免地导致风格化效果与训练数据集中 style 的种类和数量非常相关。

由以上数据驱动 ASPM 算法的局限性,李一君学长进一步思考能不能用一种不需要学习训练的方式(style learning-free),而是单纯使用一系列特征变换来进行 ASPM 风格迁移[54] Universal Style Transfer via Feature Transforms

李一君学长发现在 VGG 提取的特征上用 ZCA whitening transform 能够把一张图片的风格信息抹去,而保留原有高级语义信息,之后应用 coloring transform 将风格图的颜色进行迁移,即可重建出效果不错的风格化结果。这一工作发表于 NIPS 2017 上,也是很少见的一篇 NIPS 上发表的 application 类的文章,足见学术界对 Neural Style Transfer 的关注。

结语

由以上讨论,大家可以发现,其实在图像风格化迁移这一领域的很多代表性工作中都有着中国研究者的身影。这些工作经过进一步地传承与发展,最终形成了这一全新的领域。前一阵子看到 @周博磊 老师的谈华人学者 leadership 问题的文章时正好在准备这篇 Review,当时很有感触,在此贴上 @周博磊 老师的文章链接与大家共勉:从 CVPR18 谈谈华人研究者的 Leadership [3]。

有趣的扩展应用

还是主要围绕这张框架图,下面主要对这里面的 Extensions 中的每一个部分上图展示(以下所有图 Copyright 由论文作者所有,相应论文详见 arXiv)。

语义风格迁移

▲ Combining Markov Random Fields and Convolutional Neural Networks for Image Synthesis

▲ Semantic Style Transfer and Turning Two-Bit Doodles into Fine Artwork 

▲ Decoder Network Over Lightweight Reconstructed Feature for Fast Semantic Style Transfer

涂鸦变油画

▲ Semantic Style Transfer and Turning Two-Bit Doodles into Fine Artwork

肖像风格迁移

▲ Painting Style Transfer for Head Portraits Using Convolutional Neural Networks

字符风格迁移

▲ Awesome Typography: Statistics-based Text Effects Transfer

▲ Multi-content GAN for Few-shot Font Style Transfer

属性风格迁移

▲ Visual Attribute Transfer through Deep Image Analogy

保留深度信息的图像风格化迁移

▲ Depth-Preserving Style Transfer

图像颜色风格迁移

▲ Deep Photo Style Transfer

▲ A Closed-form Solution to Photorealistic Image Stylization

基于图像风格化的样稿上色

▲ Style Transfer for Anime Sketches with Enhanced Residual U-net and Auxiliary Classifier GAN

立体风格迁移

▲ Stereoscopic Neural Style Transfer

基于风格化迁移的面部特征变换

▲ Deep Feature Interpolation for Image Content Changes

艺术品补丁和谐化

▲ Deep Painterly Harmonization

服饰风格化迁移

▲ Fashion Style Generator

最后,用几组效果很好的风格化迁移结果图来为这篇文章拉下帷幕。

相关链接

[1]. https://zhuanlan.zhihu.com/p/27512619

[2]. https://zhuanlan.zhihu.com/p/25892708

[3]. https://zhuanlan.zhihu.com/p/36169261

[4]. L.A. Gatys, A.S.Ecker, and M.Bethge,“Image style transfer using convolutional neural networks,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016, pp. 2414–2423.

[27]. L.A. Gatys, A.S. Ecker, and M. Bethge, “Texture synthesis using convolutional neural networks,” in Advances in Neural Information Processing Systems, 2015, pp. 262–270.

[37]. Y. Li, N. Wang, J. Liu, and X. Hou, “Demystifying neural style transfer,” in Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence, IJCAI-17, 2017, pp. 2230–2236.

[40]. S. Li, X. Xu, L. Nie, and T.-S. Chua, “Laplacian-steered neural style transfer,” in Proceedings of the 2017 ACM on Multimedia Conference. ACM, 2017, pp. 1716–1724.

[41]. C. Li and M. Wand, “Combining markov random fields and convolutional neural networks for image synthesis,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016, pp. 2479–2486.

[42]. J. Johnson, A. Alahi, and L. Fei-Fei, “Perceptual losses for real-time style transfer and super-resolution,” in European Conference on Computer Vision, 2016, pp. 694–711.

[43]. D. Ulyanov, V. Lebedev, A. Vedaldi, and V. Lempitsky, “Texture networks: Feed-forward synthesis of textures and stylized images,” in International Conference on Machine Learning, 2016, pp. 1349–1357.

[46]. X. Huang and S. Belongie,“Arbitrary style transfer in real-time with adaptive instance normalization,” in Proceedings of the IEEE International Conference on Computer Vision, 2017, pp. 1501–1510.

[47]. C. Li and M. Wand, “Precomputed real-time texture synthesis with markovian generative adversarial networks,” in European Conference on Computer Vision, 2016, pp. 702– 716.

[48]. V. Dumoulin, J. Shlens, and M. Kudlur, “A learned representation for artistic style,” in International Conference on Learning Representations, 2017.

[49]. D. Chen, L. Yuan, J. Liao, N. Yu, and G. Hua, “Stylebank: An explicit representation for neural image style transfer,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2017, pp. 1897–1906.

[50]. Y. Li, F. Chen, J. Yang, Z. Wang, X. Lu, and M.-H. Yang, “Diversified texture synthesis with feed-forward networks,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2017, pp. 3920–3928.

[51]. H. Zhang and K. Dana, “Multi-style generative network for real-time transfer,” arXiv preprint arXiv:1703.06953, 2017.

[52]. T. Q. Chen and M. Schmidt,“Fast patch-based style transfer of arbitrary style,” in Proceedings of the NIPS Workshop on Constructive Machine Learning, 2016.

[53]. G. Ghiasi, H. Lee, M. Kudlur, V. Dumoulin, and J. Shlens, “Exploring the structure of a real-time, arbitrary neural artistic stylization network,” in Proceedings of the British Machine Vision Conference, 2017.

[54]. Y. Li, C. Fang, J. Yang, Z. Wang, X. Lu, and M.-H. Yang, “Universal style transfer via feature transforms,” in Advances in Neural Information Processing Systems, 2017, pp. 385–395.

推荐、解读、讨论和报道人工智能前沿论文成果的学术平台。

入门图像风格化非真实感图像学纹理合成纹理迁移纹理建模方法图像重建PSPMMSPM计算机视觉VGG
1
相关数据
人工智能技术
Artificial Intelligence

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

辅助分类器生成对抗网络技术
Auxiliary Classifier GAN

GAN的一个变种

收敛技术
Convergence

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

计算机视觉技术
Computer Vision

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

生成对抗网络技术
Generative Adversarial Networks

生成对抗网络是一种无监督学习方法,是一种通过用对抗网络来训练生成模型的架构。它由两个网络组成:用来拟合数据分布的生成网络G,和用来判断输入是否“真实”的判别网络D。在训练过程中,生成网络-G通过接受一个随机的噪声来尽量模仿训练集中的真实图片去“欺骗”D,而D则尽可能的分辨真实数据和生成网络的输出,从而形成两个网络的博弈过程。理想的情况下,博弈的结果会得到一个可以“以假乱真”的生成模型。

核函数技术
Kernel function

核函数包括线性核函数、多项式核函数、高斯核函数等,其中高斯核函数最常用,可以将数据映射到无穷维,也叫做径向基函数(Radial Basis Function 简称 RBF),是某种沿径向对称的标量函数。最常应用于SVM支持向量机中

梯度下降技术
Gradient Descent

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

机器学习技术
Machine Learning

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

映射技术
Mapping

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

损失函数技术
Loss function

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

马尔可夫随机场技术
Markov Random Field

具有马尔可夫性质的随机场。 随机场:当给每一个位置(site)按照某种分布随机赋予相空间(phase space)的一个值之后,其全体就叫做随机场

规范化技术
Normalization

规范化:将属性数据按比例缩放,使之落入一个小的特定区间,如-1.0 到1.0 或0.0 到1.0。 通过将属性数据按比例缩放,使之落入一个小的特定区间,如0.0到1.0,对属性规范化。对于距离度量分类算法,如涉及神经网络或诸如最临近分类和聚类的分类算法,规范化特别有用。如果使用神经网络后向传播算法进行分类挖掘,对于训练样本属性输入值规范化将有助于加快学习阶段的速度。对于基于距离的方法,规范化可以帮助防止具有较大初始值域的属性与具有较小初始值域的属相相比,权重过大。有许多数据规范化的方法,包括最小-最大规范化、z-score规范化和按小数定标规范化。

目标函数技术
Objective function

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

参数技术
parameter

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

感知技术
perception

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

批次技术
Batch

模型训练的一次迭代(即一次梯度更新)中使用的样本集。

批次规模技术
batch size

一个批次中的样本数。例如,SGD 的批次规模为 1,而小批次的规模通常介于 10 到 1000 之间。批次规模在训练和推断期间通常是固定的;不过,TensorFlow 允许使用动态批次规模。

模式识别技术
Pattern Recognition

模式识别(英语:Pattern recognition),就是通过计算机用数学技术方法来研究模式的自动处理和判读。 我们把环境与客体统称为“模式”。 随着计算机技术的发展,人类有可能研究复杂的信息处理过程。 信息处理过程的一个重要形式是生命体对环境及客体的识别。其概念与数据挖掘、机器学习类似。

VGG技术
VGG

到了2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

卷积技术
Convolution

推荐文章