社会焦点

当花瓶当学霸,暮光女带你揭开Prisma背后原理

字号+ 作者: 来源: 2017-05-20

当花瓶当学霸,暮光女带你揭开Prisma背后原理,花瓶姑娘原理图解,怎么用纸做花瓶,花瓶女的学霸人生,用矿泉水瓶做花瓶,花瓶男神[娱乐圈]

  了解人工智能的最短路径,不是从媒体那里反复的看到它,而是设身处地的直接去学习它,这里有一份内容满满的录取通知书,给每一个想要掌控未来五十年的技术人。

  “基于人工智能”、“不同于传统滤镜”这些用词,加上看作品画风,让人联想起 2016 年大火、仅次于 Pokeman Go 的 APP——Prisma。

  之前看到一篇文章说,困扰 Prisma 团队最大问题就是 ---

  我们没有在 marketing 投入过一分钱,但还是火得太快,我们的服务器承载能力完全跟不上用户的增长。

  火得太快,火得太快,火得太快,不得不说,这个装逼我必须给满分!

  Prisma 背后的原理其实起源于论文 Gatys et al, “Image Style Transfer using Convolutional Neural Networks”, CVPR 2016。这篇惊世之作一出,在学术界和工业界刮起来两股热潮。学术界陆续提出融合多种风格的算法,转换视频的算法,一次输出多种风格的算法,等等。工业界则做出网站,应用,小工具让人们给自己的照片加上梵高的风格。可以称得上是所有人的狂欢了。

  什么?论文太高大上这辈子都和我没关系? 女神 Kristen Stewart 你们认不认识?人家拍电影拍着拍着都拍进学术界了,在世界最顶级的计算机图像会议CVPR发了篇 Bringing Impressionism to Life with Neural Style Transfer in Come Swim。可见人人都能发 CVPR 啊,你还不赶紧来学吗?

当花瓶当学霸,暮光女带你揭开Prisma背后原理

  那究竟这篇论文是做什么的呢? 融合一张图片的内容,和一张图片的风格,生成一张新的图片。

当花瓶当学霸,暮光女带你揭开Prisma背后原理

  接下来就来详细说说这篇论文的算法原理,再给出一个我的实现,最后再说说学术界后续的一些研究和相关的其他算法。Prisma 真实使用的算法应该是在这篇论文的基础上发展过的更高效率的算法,因为这第一篇论文中的算法效率实在不怎么样,当然这丝毫不影响这篇论文的伟大。

量化问题

  算法的任务很简单,输入一张内容图片,一张风格图片,输出风格化以后的内容图片。

  • 输入:Content Image,Style Image

  • 输出:Stylized Image

  •   风格化以后的内容图片

      这个表达很主观,算法需要一个客观的判断,一个可以量化的标准。这样才有前进的方向。换一个数学一点的表达,我们需要找一个图片,内容上和内容图片差不多,风格上和风格图片差不多。这两个表达我们也需要量化,也就是要有一个数字来衡量差不多,所以我们需要有两个函数来分别衡量内容和风格上的差异。

    当花瓶当学霸,暮光女带你揭开Prisma背后原理

      最后我们需要找到图片来同时降低这两个差异。所以风格转化的问题变成了如下的优化问题(Optimization Problem)

      其中c代表 content image 内容图片,s代表 style image 风格图片,x代表 stylized image 合成图片。我们要找到使得整体偏差最小的x作为最后的结果。整体偏差就是内容偏差和风格偏差的加权平均。 α,β是两者的权重。希望风格更明显,风格的权重就大一些,希望内容更明显,内容的权重就大一些。

      现在,有三个问题放在眼前

    1. 如何定义?

    2. 如何定义?

    3. 如何最小化?

      我们一个个来搞定

    卷积神经网络

      所有的偏差函数都依赖卷积神经网络,所以必须要来简单介绍一下。时下最流行的深度学习模型就是卷积神经网络了。干嘛的呢?做常见的应用,他是做图片分类的。

    当花瓶当学霸,暮光女带你揭开Prisma背后原理

      我们用神经网络来表达一个函数,输入一张图片,输出各个类的概率。为什么叫神经网络我就不说了,他和人的神经系统其实最多只有半毛钱关系。重要的是,这个神奇的神经网络,分析了输入图片的多种特征。 底层的网络分析了细节特征,例如直线,曲线,三角,方块,等等。高层的网络分析了高层一些的特征,例如鼻子,眼睛,嘴巴等等。

      我们来看一下一张汽车图片放到卷积神经网络里面,会是如何的样子?

    当花瓶当学霸,暮光女带你揭开Prisma背后原理

      汽车图片进入网络后,会被在每一层会提取出它拥有的特征,并传递到下一个网络中。深度学习的科学家们很多时间都在研究如何训练这个神经网络使得他的分类能力最准确。幸运的事,我们这个问题我们不用去分类,用不着训练网络,我们只要用现有的已经训练好的网络就好了。我们需要的是每一层的特征,两个偏差函数,都是通过比较每一层的特征计算而得的。我们会使用下图所示的VGG16网络,其中包括13个卷积层,每一层的输出都是我们的所需要的特征。接着我们就会比较这些特征来计算偏差函数。

    当花瓶当学霸,暮光女带你揭开Prisma背后原理

    计算内容偏差

      要比较两个图片的内容差别,其实就看看他们最高层的特征是否一致就行。例如两个图片都有大桥这个特征,两个图片都有一个人等等共同特征,那么我们通常认为他们是一样内容的。

    当花瓶当学霸,暮光女带你揭开Prisma背后原理

      其中c,x代表内容图片和合成图片,$C_{i,j}^l, X_{i,j}^l$ 分别表示内容图片和合成图片的第l层,第i个特征,第j纬度的值。其实式子也没有分复杂,就是计算了两个向量的欧氏距离。

    转载请注明出处。


    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章