深度学习之风格迁移简介

风格迁移(style transfer)最近两年非常火,可谓是深度学习领域很有创意的研究成果。它主要是通过神经网络,将一幅艺术风格画(style image)和一张普通的照片(content image)巧妙地融合,形成一张非常有意思的图片。

因为新颖而有趣,自然成为了大家研究的焦点。目前已经有许多基于风格迁移的应用诞生了,如移动端风格画应用Prisma,手Q中也集成了不少的风格画滤镜:

本文将对风格迁移[1]的实现原理进行下简单介绍,然后介绍下它的快速版,即fast-style- transfer[2]。

1. 风格迁移开山之作

2015年,Gatys等人发表了文章[1]《A Neural Algorithm of Artistic Style》,首次使用深度学习进行艺术画风格学习。把风格图像Xs的绘画风格融入到内容图像Xc,得到一幅新的图像Xn。则新的图像Xn:即要保持内容图像Xc的原始图像内容(内容画是一部汽车,融合后应仍是一部汽车,不能变成摩托车),又要保持风格图像Xs的特有风格(比如纹理、色调、笔触等)。

1.1 内容损失(Content Loss)

在CNN网络中,一般认为较低层的特征描述了图像的具体视觉特征(即纹理、颜色等),较高层的特征则是较为抽象的图像内容描述。 所以要比较两幅图像的内容相似性,可以比较两幅图像在CNN网络中高层特征的相似性(欧式距离)。

1.2 风格损失(Style Loss)

而要比较两幅图像的风格相似性,则可以比较它们在CNN网络中较低层特征的相似性。不过值得注意的是,不能像内容相似性计算一样,简单的采用欧式距离度量,因为低层特征包含较多的图像局部特征(即空间信息过于显著),比如两幅风格相似但内容完全不同的图像,若直接计算它们的欧式距离,则可能会产生较大的误差,认为它们风格不相似。论文中使用了Gram矩阵,用于计算不同响应层之间的联系,即在保留低层特征的同时去除图像内容的影响,只比较风格的相似性。

那么风格的相似性计算可以用如下公式表示:

1.3 总损失(Total Loss)

这样对两幅图像进行“内容+风格”的相似度评价,可以采用如下的损失函数:

1.4 训练过程

文章使用了著名的VGG19网络[3]来进行训练(包含16个卷积层和5个池化层,但实际训练中未使用任何全连接层,并使用平均池化average- pooling替代最大池化max-pooling)。

内容层和风格层的选择:内容图像风格图像分别输入到VGG19网络中,并将网络各个层的特征图(feature map)进行可视化(重构)。

内容重构五组对比实验:

1. conv1_1 (a)
2. conv2_1 (b)
3. conv3_1 (c)
4. conv4_1 (d)
5. conv5_1 (e)

风格重构五组对比实验:

1. conv1_1 (a)
2. conv1_1 and conv2_1 (b) 
3. conv1_1, conv2_1 and conv3_1 (c)
4. conv1_1, conv2_1, conv3_1 and conv4_1 (d)
5. conv1_1, conv2_1, conv3_1, conv4_1 and conv5_1 (e)

通过实验发现:对于内容重构,(d)和(e)较好地保留了图像的高阶内容(high-level content)而丢弃了过于细节的像素信息;对于风格重构,(e)则较好地描述了艺术画的风格。如下图红色方框标记:

在实际实验中,内容层和风格层选择如下:

内容层:conv4_2

风格层:conv11, conv2_1, conv3__1_, _conv4_1, conv5_1

训练过程:以白噪声图像作为输入(x)到VGG19网络,conv4_2层的响应与原始内容图像计算出内容损失(Content Loss),“conv1_1, conv2_1, conv3_1, conv4_1, conv5_1”这5层的响应分别与风格图像计算出风格损失,然后它们相加得到总的风格损失(Style Loss),最后Content Loss + Style Loss = Total Loss得到总的损失。采用梯度下降的优化方法求解Total Loss函数的最小值,不断更新x,最终得到一幅“合成画”。

1.5 总结

  1. 每次训练迭代,更新的参数并非VGG19网络本身,而是随机初始化的输入x;
  2. 由于输入x是随机初始化的,最终得到的“合成画”会有差异;
  3. 每生成一幅“合成画”,都要重新训练一次,速度较慢,难以做到实时。

2. 快速风格迁移

2016年Johnson等人提出了一种更为快速的风格迁移方法[2]《Perceptual losses for real-time style transfer and super- resolution》。

2.1 网络结构

它们设计了一个变换网络(Image Transform Net),并用VGG16网络作为损失网络(Loss Net)。输入图像经由变换网络后,会得到一个输出,此输出与风格图像、内容图像分别输入到VGG16损失网络,类似于[1]的思路,使用VGG16不同层的响应结果计算出内容损失和风格损失,最终求得总损失。然后使用梯度下降的优化方法不断更新变换网络的参数。

内容层:relu3_3

风格层:relu12, relu2_2, relu3_3, _relu4_3

其中变换网络(Image Transform Net)的具体结构如下图所示:

2.2 跑个实验

Johnson等人将论文的代码实现在github上进行了开源,包括了论文的复现版本,以及将“Batch-Normalization ”改进为“Instance Normalization”[4]的版本。咱们可以按照他的说明,训练一个自己的风格化网络。我这里训练了一个“中国风”网络,运行效果如下:

2.3 总结

  1. 网络训练一次即可,不像Gatys等人[1]的方法需要每次重新训练网络;
  2. 可以实现实时的风格化滤镜:在Titan X GPU上处理一张512x512的图片可以达到20FPS。下图为fast-style-transfer与Gatys等人[1]方法的运行速度比较,包括了不同的图像大小,以及Gatys方法不同的迭代次数。

3. 参考资料

  1. Gatys L A, Ecker A S, Bethge M. A neural algorithm of artistic style[J]. arXiv preprint arXiv:1508.06576, 2015.
  2. Johnson J, Alahi A, Fei-Fei L. Perceptual losses for real-time style transfer and super-resolution[C]//European Conference on Computer Vision. Springer International Publishing, 2016: 694-711.
  3. Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.
  4. Ulyanov D, Vedaldi A, Lempitsky V. Instance normalization: The missing ingredient for fast stylization[J]. arXiv preprint arXiv:1607.08022, 2016.
  5. Fast Style Transfer(快速风格转移)
  6. 图像风格迁移(Neural Style)简史

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

【干货】计算机视觉实战系列06——用Python做图像处理

【导读】专知成员Hui上一次为大家介绍主成分分析(PCA)、以及其在图像上的应用,这一次为大家详细讲解SciPy库的使用以及图像高斯模糊实战。 【干货】计算机视...

36314
来自专栏SIGAI学习与实践平台

自然场景文本检测识别技术综述

白蛇: 白纸黑字的扫描文档识别技术已经很成熟,而自然场景图像文本识别的效果还不理想。倾斜字、艺术字、变形字、模糊字、形似字、残缺字、光影遮蔽、多语言混合文本等应...

2132
来自专栏应用案例

从传统方法到深度学习,人脸关键点检测方法综述

人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别、表情分析、三维人脸重建及三维动画等其它人脸相关问题的前提和突破口。近些年来,深度学习方法由...

9208
来自专栏贾志刚-OpenCV学堂

干货 | MTCNN实时人脸检测网络详解与代码演示

多任务卷积神经网络(MTCNN)实现人脸检测与对齐是在一个网络里实现了人脸检测与五点标定的模型,主要是通过CNN模型级联实现了多任务学习网络。整个模型分为三个阶...

911
来自专栏iOSDevLog

机器学习概述与算法介绍(二)

1993
来自专栏SIGAI学习与实践平台

理解生成模型与判别模型

我们都知道,对于有监督的机器学习中的分类问题,求解问题的算法可以分为生成模型与判别模型两种类型。但是,究竟什么是生成模型,什么是判别模型?不少书籍和技术文章对这...

922
来自专栏张俊红

机器学习中非平衡数据处理

总第97篇 这一篇主要说一下机器学习中非平衡数据的处理方式以及用python如何实现. 在前面的一篇推文中我们提到过,非平衡数据会影响最后的评判效果,严重的会...

3625
来自专栏null的专栏

机器学习中的特征空间

声明:这篇博文主要是对参考文献中的那个PPT的学习之后记下的一些笔记,整理出来与大家一起分享,若笔记中有任何错误还请不吝指出,文中可能会使用到原作者的一些图,若...

3726
来自专栏SIGAI学习与实践平台

自然场景文本检测识别技术综述

番外 青蛇: 姐, 图像文本检测和识别领域现在的研究热点是什么? 白蛇: 白纸黑字的扫描文档识别技术已经很成熟,而自然场景图像文本识别的效果还不理想。倾斜字、艺...

1.3K2
来自专栏SIGAI学习与实践平台

场景文本检测—CTPN算法介绍

原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不得转载,不能用于商业目的。

2.2K3

扫码关注云+社区