基于深度学习的图像真实风格迁移

导语

[IEG][NEXT][Axon][Deep Learning In Game系列] 介绍图像真实风格迁移这一问题。详细讲解论文"Deep Photo Style Transfer"算法原理与实现和该模型优于之前相关模型的关键之处。同时以高分辨率人脸图像作为测试图像,对比分析实验结果。

一、图像真实风格迁移问题介绍

近年来,由深度学习所引领的人工智能技术浪潮,开始越来越广泛地应用到社会各个领域。这其中,人工智能与艺术的交叉碰撞,不仅在相关的技术领域和艺术领域引起了高度关注。以相关技术为基础而开发的各种图像处理软件和滤镜应用更是一推出就立刻吸引了海量用户,风头一时无两。在这各种神奇的背后,最核心的就是基于深度学习的图像风格迁移(style transfer)。

图像风格迁移算法可以解决如下问题:指定一幅输入图像作为基础图像,也被称做内容图像;同时指定另一幅或多幅图像作为希望得到的图像风格,算法在保证内容图像的结构的同时,将图像风格进行转换,使得最终输出的合成图像呈现出输入图像内容和风格的完美结合。其中,图像的风格可以是某一艺术家的作品、也可以是由个人拍摄的图像所呈现出来的风格。以下是一个图像风格迁移的示例 [1]。

图 1:内容图像图 2:风格图像

图 3:风格迁移结果

需要指出的是,图像风格迁移这一问题并没有严格的数学定义。具体说来,这是由于图像的"风格"这一词汇本身就没有严格的定义,它包含了丰富的含义,可以是指图像的颜色、纹理和画家的笔触,甚至是图像本身所表现出的某些难以言表的成分。但另一方面,人类尤其是经过训练的专业人员却可以充分地感受和描述图像风格。因此图像风格迁移这一问题也和人类认知相关,并可以在一定程度上推动人工智能和神经认知相关领域的研究发展。

另外,图像风格迁移问题的研究,早在 2000 年初就有很多学者开始进行研究,只是当时集中关注的是纹理合成与迁移问题,利用的数学手段主要是各种图像变换的统计方法,如小波变换 [5]等,效果有限。直到近年来,受到深度神经网络在大规模图像分类上的优异性能的启发,借助其强大的多层次图像特征提取和表示能力,这一问题才得到了更好地解决,性能提升明显。

本文所要介绍和讲解的 Deep Photo Style Transfer 论文,则是在图像风格迁移的基础上,进一步的要求两幅输入图像均为高清的、具有图像真实细节的图像,尤其是风格图像,并不是一些具有明显艺术家风格的风格图像。以下是一组论文的结果示例:

图 4:内容图像图 5:风格图像

图 6:照片真实化风格迁移结果

通过结果可以看出,合成图像将内容图像这一白天建筑风景照片很好的转换为了夜景风格,同时很好保留了内容图像的真实细节,算法效果让人赞叹。

以下就对这一文章的算法原理进行分析,并通过高分辨率人脸图像作为测试图像,对比分析实验结果。

二、算法原理分析

1、已有算法的介绍

本论文是在论文 [1]的基础上进行了有效改进。为此,首先介绍 [1]的算法原理,这也是目前这类问题的算法基础。

我们的目的是输出图像可以分别结合输入图像的内容和风格,也就是我们希望结果图像可以在内容上与内容图像相似,在风格上与风格图像相似。为此,很自然的就有两个问题需要解决:1)如何分别表示和提取图像的内容和风格;2)如何刻画内容和风格上的相似性。前文已经提过,图像的内容和风格由于含义广泛并且没有严格统一的数学定义,并且有很大程度的主观性,因此很难表示。在 [1]中,作者借助于深度卷积神经网络其强大的特征及语义表征能力,并利用基本的统计学知识,创新性地在一定程度上解决了这个问题,并最终取得了让人惊艳的效果。

众所周知,以 VGG[2]为代表的深度卷积神经网络模型可以很好地层次化提取图像特征从而对图像进行有效的表征,在大规模图像分类、图像分割和图像目标检测等多个任务上取得了优异性能。受到这一技术的启发,作者以 VGG 模型为例,通过实验对比验证,作者得到以下两个结论:

1)网络 4_1 层的输出,即该层经过非线性响应而得到的 feature_map,可以作为图像内容比较好的表示;

2)在风格表示上,由每一层输出的 feature_map 所得到的 Gram 矩阵可以作为图像风格的良好表示。具体计算方法为:将某一层输出的 N 个 feature_map 分别拉成向量,Gram 矩阵的元素为 feature_map 向量之间的内积(即 correlation),具体计算公式如下:

其中 l 表示第 l 层,G 为 Gram 矩阵,Fi 和 Fj 为第 i 个和第 j 个 feature map 向量。

在解决了图像内容和风格的表示之后,接下来就是如何衡量内容和风格之间的相似性,并将这一问题转化为优化问题求解。假定我们希望得到的最终合成图像为 O,输入的内容图像为 I,风格图像为 S(假设只有一副风格图像)。为了使 O 与 I 的内容相似,我们有以下损失函数:

为了使 O 与 S 的风格相似,我们有以下损失函数:

其中,G 代表 Gram 矩阵,F 代表 feature map,l 表示第 l 个卷积层,Nl 代表 l 层中有 Nl 个 feature map,Dl 表示 feature map 的尺寸。

最终我们会得到以下总的损失函数:

其中,L 为总的卷积层个数,

为内容损失函数和风格损失函数中每一层的权重。为了求解这个优化问题,我们利用梯度下降法来进行数值迭代求解。具体过程可以参见论文 [1]。

值得指出的是:在本问题中,我们需要求解目标是图像 X,而不是神经网络的参数。因此求解过程并没有神经网络的训练过程(即,该问题并不是机器学习通常的"训练-测试"流程,而只是一个普通的迭代求解过程。迭代结束,就得到目标图像。这也导致了该算法的运行速度比较慢。),只是在计算损失函数对 X 的梯度时,仍然需要借助于深度学习框架的高性能。这一点希望读者注意。

以上就是本文的算法基础。由于本文要解决的是图像真实化风格的迁移,即需要在风格迁移的同时,最大程度保留输入图像的真实细节。在这一基础上,本文提出了两个创新点来提升最终的结果。以下两小节将分别讲解。其中第一点最为重要,也是性能得以提升的关键。

2、基于颜色空间局部仿射变换的 Photorealism 正则约束

为了实现在风格迁移过程中,不丢失图像的真实细节,作者提出了如下的策略:对于过程中的畸变进行惩罚。具体来说,因为输入的内容图像已经具有了我们希望的真实细节,而为了保持这些细节,作者提出了一种在颜色空间中的局部仿射变换,即假设最终的输出图像是由输入图像经过局部仿射变换得到。通过建立这一关系,就达到了通过输入图像来约束结果图像的目的。

具体的数学形式如下:作者借助于文献 [3] (Image Matting 问题的经典方法,是理解这一正则项的关键,感兴趣的读者可以参考其中的分析和推导。核心思想可以概括为概括为:输出图像的每一个颜色通道中的每个像素值,都可以由输入图像的局部区域像素的线性组合得到,同时该问题有闭合解的形式。) 中的方法,提出了以下的正则项:

其中,MI 为输入图像 I 的 Matting Laplacian,Vc[O]为输出图像 O 的 c 通道的向量化表示。这一约束可以让输出图像在边缘结构上与输入图像上尽量相似,从而使得输出最大程度上保留图像的真实细节。

3、基于语义分割的增广风格损失函数

为了进一步的提升性能,使得模型能够适应输入图像的不同内容和风格,作者又提出了对输入图像进行语义分割 [4],将分割模版同时作为算法的输入(具体做法是将分割 mask 作为输入图像的增广 channel 一同输入到神经网络中),从而保证优化过程中只处理我们感兴趣的内容。

具体的增广损失函数定义如下:

其中,

表示在 l 层中,c 通过的分割 mask。

最后,将以上的各个函数组合在一起,就得到了最终的优化目标函数:

其中,

为 Photorealism 正则项的权重。其余参数含义见之前部分的描述。同样的,优化方法为梯度下降。

三、实验结果和分析

1、原文实验复现

在复现原文的过程中,本文作者并没有使用论文作者提供的 源代码,而是直接使用了根据源代码封装的第三方 docker image,从而避免了繁琐的实验环境配置。以下是原文中测试图像的复现结果。

图 7:内容图像图 8:风格图像图9:照片真实化风格迁移结果

从结果图中可以看出,算法非常好地将内容图像(香水瓶) 的风格迁移到了目标风格(火焰颜色),同时充分而准确地保留了内容图像的边缘结构和光泽等信息。仔细观察,连比较细微的结构都很好地得到了风格迁移和真实细节保留。实验环境为:Intel(R) Core(TM) i7-6700 CPU @3.40 GHz, GTX 1070,16G 内存。测试图像尺寸为 700*525,在迭代 2000 次的条件下,处理一张图的时间约为 5 分钟。(注:由于和原文的实验环境不完全一致,具体的实验结果可能会有偏差。)

虽然 5 分钟的处理速度并不能满实时处理的应用场景,但可以设想,如果是手动进行处理,即使是专业人员,也需要花费很多时间,更为重要的是,无法很好地提取内容、风格元素和进行风格迁移。

2、高分辨人脸图像的真实化风格迁移实验

为了进一步验证算法结果,我们采用使用专业成像设备,在内容和风格图像均为高分辨率人脸图像图像时,进行图像真实化风格迁移(这里的风格主要指受光照影响的面部颜色)。

1)第一组实验

以下是输入图像:

图 10:内容图像图 11:风格图像图 12:结果图像

两幅图像虽然总体上很相似,但光照条件的不同导致了两幅图像在人脸颜色存在一定程度的差异。因此我们希望通过以上算法实现图像的颜色迁移,并保留内容图像的高分辨细节。图 12 为真实化风格迁移结果图像。可以看出结果很不理想,具体存在以下几个问题:a) 脸部颜色并不完全是我们希望的颜色风格,同时面部颜色分布不均匀,b) 高分辨率细节丢失,具体表现在脸部纹理和头发等高频信息。

那么出现以上的结果原因可能为:a) 我们的输入图像没有原文中提到的语义分割 mask,b) 风格图像除了人脸,还有其他的内容元素,并且语义风格并不明显。为此,我们进行了第二组实验,并分析了算法参数对于结果的影响。

2)第二组实验

图 13:内容图像图 14:内容图像 mask图 15:内容图像图 16:内容图像 mask

实验结果:

i) 参数λ对于结果的影响:

图 17:λ=10 的结果图像图 18:λ=1000 的结果图像

图 19:λ=10000 的结果图像图 20:λ=100000 的结果图像

从一系列结果图像可以看出,λ作为 Photorealism 正则项的权重,对于结果有很大影响。具体表现在,当λ比较小时,结果图像在颜色上和输入的风格图像很相似,但是皱纹、头发边缘等细节损失非常严重,仅保留了比较明显的结构信息,比如大尺寸和边缘强度比较大的结构信息,出现了明显的模糊现象。随着λ的增加,结果图像的细节保留越来越多,同时,颜色却原来越倾向于内容图像的原本颜色,而偏离了风格图像的颜色。这组对比结果说明,文本新提出的 Photorealism 正则项确实能够帮助风格迁移过程中真实细节的保留,从而提升迁移效果。另一方面,我们也可以认为,图像内容和风格并没有完全清晰的界限。可以视具体的输入图像与应用场景来精细处理。关于这方面,感兴趣的读者可以参考文献 [6]。

综合两组实验结果,我们可以观察到,图像真实化风格迁移算法在我们的高分辨人脸测试图像上效果并不理想,可能的原因有以下几点:

1)人脸图像的统计特性和纹理结构与自然图像图像尤其是风景图像有很大的不同,用于自然图像的深度神经网络未必能够提取出合适的人脸特征。对应的,我们可以改用专门进行人脸识别的深度神经网络模型 VGG-Face[7]进行图像的内容与风格特征提取。 2)内容和风格图像的图像分辨率有差异,进行 reshape 的过程中,可能造成细节丢失和引入畸变和错误信息。 3)输入图像本身分辨率已经非常高,在处理过程中任何细节的丢失都会影响主观的结果评价。

四、总结与展望

1、注意相关问题的理论方法,尤其是 DL 兴起前的经典论文中的方法。这些方法都是经过时间检验、可以比较好地解决某类问题的方法,仔细思考这些方法内在的本质,同时比较分析相关问题的之间的异同,将会非常有助于我们对问题本质的理解,从而触类旁通,举一反三,发现和提出新的模型与算法。

2、对于图像风格迁移以及真实化风格迁移,还有许多问题需要解决,比如算法加速达到实时来满足应用需求,多个风格和任意风格的自由变换等。由于并不是本文关注重点,就不在这里展开介绍了。感兴趣的读者可以查阅相关文献。

由于时间精力有限,并且研究这一问题时间不长,如若文章出现错误,希望各位读者批评指正,同时非常欢迎就以上各个相关问题与作者进行讨论。

参考文献

[1]Gatys L A, Ecker A S, Bethge M.Image Style Transfer Using Convolutional Neural Networks. CVPR 2016.

[2]K. Simonyan and A. Zisserman. Very Deep Convolutional Networks for Large-Scale Image Recognition.

[3]A. Levin, D. Lischinski, and Y.Weiss. A closed-form solution to natural image matting. IEEE Transactions on Pattern Analysis and Machine Intelligence, 30(2):228–242, 2008.

[4]L.-C. Chen, G. Papandreou, I. Kokkinos, K. Murphy, and A. L.Yuille. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs.

[5]J. Portilla and E. P. Simoncelli. A Parametric Texture Model Based on Joint Statistics of Complex Wavelet Coefficients. International Journal of Computer Vision, 40(1):49–70, Oct. 2000.

[6]Kaur P, Zhang H, Dana K J. Photo-realistic Facial Texture Transfer[J]. arXiv preprint arXiv:1706.04306, 2017.

[7]Omkar M Parkhi, Andrea Vedaldi, and Andrew Zisserman. Deep face recognition. In BMVC, volume 1, page 6, 2015.

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

蒋心为的专栏

1 篇文章1 人订阅

我来说两句

2 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

先搞懂这八大基础概念,再谈机器学习入门!

翻译 | AI科技大本营 参与 | 林椿眄 准备好开始AI了吗?可能你已经开始了在机器学习领域的实践学习,但是依然想要扩展你的知识并进一步了解那些你听过却没有时...

3839
来自专栏云时之间

<机器学习>西瓜书,读书笔记

机器学习的发展阶段 1:推荐书目:周志华<机器学习西瓜书>,李航教授<统计学习方法>,这两本书都用简单的方式介绍了一批重要并且常用的机器学习算法 机器学习所发展...

3469
来自专栏人人都是极客

机器学习套路就这三个

想要成为合格的,或者更进一步成为优秀的人工智能工程师或数据科学家,机器学习的各种基础知识是必不可少的。然而,机器学习领域浩如烟海,各类教材和入门课程层出不穷。特...

34616
来自专栏新智元

【NLP必备】将模型应用到数据较少的语言上:跨语种词嵌入模型梳理

【新智元导读】不同语言的数据量不同。一些数据较少的语言,嵌入模型的训练会遇到困难,而跨语言嵌入模型则允许研究者将来自不同语言的词汇投影到共享嵌入空间中,使我们能...

3548
来自专栏机器之心

资源 | Distill详述「可微图像参数化」:神经网络可视化和风格迁移利器!

图像分类神经网络拥有卓越的图像生成能力。DeepDream [1]、风格迁移 [2] 和特征可视化 [3] 等技术利用这种能力作为探索神经网络内部原理的强大工具...

652
来自专栏机器学习算法全栈工程师

手把手教你实现GAN半监督学习

作者:刘威威 编辑:田 旭 引言 本文主要介绍如何在tensorflow上仅使用200个带标签的mnist图像,实现在一万张测试图片上99%的测试精度,原理...

8277
来自专栏机器学习算法与Python学习

深度学习综述:Hinton、Yann LeCun和Bengio经典重读

翻译 | kevin,刘志远 审校 | 李成华 深度学习世界 【编者按】深度学习三巨头Geoffrey Hinton、Yann LeCun和Yoshua Ben...

27610
来自专栏智能算法

入门 | 一文简述深度学习优化方法----梯度下降

从很大程度上来说,深度学习实际上是在解决大量烦人的优化问题。神经网络仅仅是一个非常复杂的函数,包含数百万个参数,这些参数代表的是一个问题的数学解答。以图像分类为...

1183
来自专栏机器学习算法与Python学习

Deep Learning(1) -- 概述、分布式表示与思想

绪论 深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的...

4057
来自专栏奇点大数据

神经网络:问题与解决方案

尽管人工神经网络的概念从20世纪50年代就已经存在,但是直到最近我们才有能力将理论转化为实践。神经网络应该能够模仿任何连续的功能。但是,很多时候,我们都陷入了网...

3056

扫码关注云+社区