本篇文章5376字,读完约13分钟
面向读者:没有或没有机器学习经验的读者,对像prisma这样的应用背后的原理感兴趣。有经验的读者可以直接参考科技树阅读文章末尾列出的被引论文。
阅读时间:10-20分钟
注意:多图,请注意流速。
图像风格转换技术树
前言:什么是图像风格转换?
让我们先拍一组照片。下面的每一幅画都是不同的艺术风格。作为一个非艺术专业的学生,我不会谈论什么是艺术风格。每个人都有自己的观点,有些东西在艺术界可能没有明确的定义。很难定义如何将一个图像的样式改变成另一个。对于程序员来说,尤其是机器学习领域的程序员,这个模糊的定义简直就是一场噩梦。如何将一个无法描述的东西转化为可执行的程序,是困扰图像风格转换领域许多研究者的问题。
在神经网络之前,图像风格迁移程序有一个共同的思想:分析某一风格的图像,为该风格建立数学或统计模型,然后改变要迁移的图像,使其更好地符合已建立的模型。这样做的效果很好,如下图所示,但是有一个很大的缺点:一个程序基本上只能做某个风格或者某个场景。因此,传统风格迁移研究的实际应用非常有限。
风景照片的时间迁移
改变这种情况的是两份盖特的报纸。在此之前,程序模仿任何图片都是不可想象的。
第一个基于神经网络的图像风格迁移算法需要5-20分钟生成
你不会在这篇文章中看到数学公式。如果你想更多地了解其中的数学知识,你可以阅读原文。我想试着从头开始,从gatys等人,2015a和gatys等人,2015b中使用的一些技术的历史开始,用最简单的方法来解释基于神经网络的图像风格转换的思想,以及为什么gatys能够想到使用神经网络来实现图像风格转换。
如果你对此感兴趣,我可以继续写关于未来神经风格的最新研究进展,或者其他关于图像生成的相关研究,反对互联网等等。请随意纠正任何不合适的错误。
前20年——神经类型第一年的前3年
要理解计算机图像的风格,我们只能追溯到2000年以前的图像纹理生成研究。显然这是一篇关于图像风格转换的文章,为什么我们要谈论图像纹理?我先在这里卖一把锁。
据我所知,在2015年之前,所有关于图像纹理的论文都是手工建模的(比如基于复小波系数联合统计的参数化纹理模型),最重要的思想是纹理可以用图像局部特征的统计模型来描述。没有这个前提,所有的模型都无法讨论。有什么统计特征,简单举一个例子
这幅画可以称为栗色纹理。这种质地有一个特点,就是所有的栗子都有一个开口。如果开口用一个简单的数学模型表示,这意味着两个具有一定弧度的弧相交。从统计上来说,这种纹理有一个相对较高的概率,两个具有这个弧度的弧相交,这可以称为统计特征。有了这个前提或想法,研究人员成功地使用了复杂的数学模型和公式来归纳和生成一些纹理,但毕竟,手工建模是费时费力的。(用外行人的话来说,想象一下用手计算栗子开口的数学模型,计算出的模型除了用在开心果上之外可能没用。。。那时,计算机的计算能力不如现在的手机强大,这个领域的研究进展缓慢,所以十多年过去了。
早期纹理生成结果
同时,隔壁的图像风格转换也好不到哪里去,甚至比纹理生成还要差。因为纹理生成至少不管生成什么样的纹理都被称为纹理生成,然而,图像风格迁移领域当时甚至没有一个合适的名称,因为每个风格算法都有自己的管理,并且彼此之间几乎没有共同之处。例如,油画风格的转移用七个不同的步骤来描述和转移油画的特征。另一个例子是转移头像风格,它使用三个步骤来转移一个头像摄影风格到另一个。以上十个步骤都没有重复。可以看出,在2015年之前,图像风格处理的研究基本上是按照自己的方式进行的,而我开发的算法并没有引起太多的关注。与photoshop相比,尽管它需要手工润饰,但它比大多数算法更容易使用。
头型转移
油画风格的转移
在同一时期,计算机领域最先进的研究之一可以说是计算机图形学。(有相关知识的这一段可以跳过,不影响后面的阅读。简单地说,计算机图形是现在几乎所有游戏的基础。无论是男朋友1(战地1)中的战斗场景,还是fgo这样的手机游戏,一代又一代的图形研究者的工作都是必不可少的。当他们一天到晚忙着研究如何让程序中的姐妹纸看起来有血有肉时,技术树指出了一个重要的分支:图形卡(gpu)。游戏机自诞生以来就伴随着显卡。当然,显卡最大的功能是处理和显示图像。与cpu不同,cpu在早期是单线程的,也就是说,它一次只能处理一个任务,而gpu可以同时处理多个任务,尽管单个任务的处理能力和速度比cpu差得多。例如,如果一个128x128的超级马里奥游戏由中央处理器处理,每一帧需要运行128x128=16384。因为gpu可以同时计算所有像素,所以它只需要一步时间,比cpu快得多。为了让游戏更接近现实,显卡在过去的20年里变得越来越好。巧合的是,显卡计算能力的爆炸式增长直接导致了神经网络的复兴和深度学习的兴起,这种现象已经存在了十多年,因为神经网络和游戏图形计算的相似之处在于,它们都需要对大量数据重复进行一次计算。可以说,如果没有游戏产业,就没有深度学习,也就没有神经风格。因此,如果你想学习机器学习,你必须去蒸汽购买购买购买一个支持显卡。
在imagenet目标识别竞赛中使用gpu的团队数量逐年增加,出错率逐年下降
谈到神经网络,我想谈一谈神经网络(尤其是卷积神经网络)和传统做法之间的区别。如果你已经知道一些事情,你可以跳过这一段。卷积神经网络分为许多层,每层由许多单个人工神经元组成。每个神经元都可以看作是一个识别器。在栗子的情况下,每个神经元或几个神经元的组合可以用于识别某个特征,例如栗子的开口。在训练之前,他们都是随机的,所以他们什么也做不了。在训练过程中,它们会自动变成不同的识别器,并相互结合。在大量的识别器被组合后,对象可以被识别。整个过程是自动的,除了神经网络的初始设计和参数的调整。这里,我们不介绍神经网络和卷积神经网络是如何工作的。如果你不知道神经网络是如何工作的,我相信网上有很多相关的介绍和教程。感兴趣的人可以找到答案。如果你不知道,它不会影响这篇文章的阅读。
卷积神经网络的传奇
前3年——神经类型第一年的前1年
从2012年到2014年,深度学习才刚刚开始火起来。火灾发生的主要原因之一是人们发现深度学习可以用来训练物体识别模型。一些先前的物体识别模型是通过比较物体不同部分的几何形状来识别的,一些是通过颜色,一些是通过3d建模,一些是通过局部特征。在传统的物体识别算法中值得一提的是根据比较局部的特征来识别物体,其原理如下:
例如,我们的目标是在图片中找到这个人:
目标对象
对程序来说,这个人只是一堆像素。如果让它直接查找,它只能逐个比较一个像素,然后返回最近的像素(最近邻算法)。然而,在现实中,物体的形状和颜色会发生变化。如果手头只有一张照片,直接搜索的速度和准确性就太低了。
一些研究人员认为,这个人的照片可以被分成许多小块,然后逐一进行比较(称为特征包)。在最后一个区域中标记相似块数量最多的区域。这种方法的优点在于,即使在识别小块时存在问题,也有其他小块可以用作识别的基础,并且与以前相比,错误的风险大大降低。
特色包
这种方法的最大缺点是,它仍然将一个小块视为一个像素块,然后根据像素值对它们进行比较。由于改变前面提到的照明和形状而不能识别物体的问题根本没有解决。
事实上,用卷积神经网络构成的目标识别器的原理与特征包的原理没有太大区别,只是所有有用的特征都安装在神经网络中。刚才提到神经网络会在训练后自动提取最有用的特征,所以这些特征不再是简单地通过将原始物体切割成小块而产生的,而是通过神经网络以最佳方式提取的。
在卷积神经网络提取的特征图中,每个点阵代表一个神经元被激活最多的图像。
当时最著名的对象识别网络之一的卷积神经网络被称为vgg19,其结构如下:
Vgg19网络结构
神经网络的每一层都将使用前一层的输出来进一步提取更复杂的特征,直到它们足够复杂以用于识别对象,因此每一层都可以被视为许多局部特征的提取器。vgg19在目标识别中的准确性已经失去了很多以前的算法,于是目标识别系统基本上转向了深度学习。
由于vgg19的出色性能,它引起了很多兴趣和讨论,但很难理解vgg19内部发生了什么,因为每个神经元内部的参数只是一堆数字。每一个神经元都有数百个输入和数百个输出,所以要逐一理清神经元之间的关系太难了。所以有人想出了一个办法:虽然我们不知道神经元是如何工作的,但是如果我们知道神经元的激活条件,理解神经网络会更有帮助吗?所以他们编制了一个程序,(所用的方法叫做反向传播,它与训练神经网络的方法相同,但只是反向产生图像。)找出与能够激活它的每个神经元相对应的图片,这就是之前的特征提取图是如何生成的。有些人更进一步认为,呃,既然我们能找到神经元的激活条件,我们能不能找出所有关于“狗”的神经元,让它们都被激活,然后看看“狗”对于神经网络是什么样子的?
它看起来像这样:
神经网络想象中的狗
这是神经网络想象中最完美的狗。它非常迷幻,感觉像是一种艺术风格。而能稍微修改任何图片使神经网络产生狗的幻觉的程序叫做深梦。
深沉的梦
神经类型的第一年
经过如此多的准备,所有的元素都已经被放在一起,前面的技术树已经被点亮,所以我们终于可以开始工作了。基于神经网络的图像风格转换由gatys等人在2015年的两篇论文中提出:gatys等人,2015年a和gatys等人,2015年b。让我们从第一篇文章开始。与以往的纹理生成算法相比,第一种算法只有一个创新点:它给出了一种通过深度学习进行纹理建模的方法。如前所述,纹理生成的一个重要假设是纹理可以用局部统计模型来描述,但是手工建模方法太麻烦了。然后,gatys看了看隔壁关于物体识别的论文,发现vgg19只是一堆局部特征识别器。他利用预先训练好的网络,发现这些识别器非常容易使用。因此,gatys设置了一个gramian矩阵来计算不同局部特征的相关性,并将其转化为一个统计模型,这样就有了一种无需人工建模就能生成纹理的方法。
基于神经网络的纹理生成算法
事实上,从纹理到图片风格只有两步。第一步也很神奇,也就是说,盖蒂发现纹理可以描述图像的风格。严格来说,艺术和科学只是画面风格的一部分,但如果你不仔细研究纹理和风格的区别,它会给人第一眼就一样的感觉。第二步是如何只提取图片内容而不提取图片样式。这两点就是他在第二篇论文中所做的:加提斯再次偷懒,拿出物体识别模型并再次使用它。这一次,他没有把格兰米安作为统计模型,而是直接把局部特征看作近似的图片内容,从而获得了一个把图片内容和图片风格(说白了,就是纹理)分开的系统,剩下的就是把一幅图片的内容和另一幅图片的风格结合起来。这种组合方法正是前面提到的神经网络“梦见”狗的方式,即研究人员所做的深度梦,并且这足以找到一幅能够激活适当的特征提取神经元的图片。
基于神经网络的图像风格转换
在这一点上,我们已经清楚地解释了基于神经网络的神经类型转移的重点。它后面的每一步都是先前研究的结果,所以你不必因为你名字中的深度和神经网络而感到特别的效果。gatys所做的改进是将两个不同领域的研究成果有机地结合起来,并取得惊人的成果。事实上,最让我惊讶的是,它的纹理能在很大程度上与人们认可的图片风格相匹配。它与真正的艺术风格大不相同,但看起来很不错。。。)从那以后,神经系统有了很多改进,所以让我们先放一些图片在这里,把技术细节放在一边。
改进的图像风格转换算法,左边:输入图像,中间:改进前,右边:改进后。生成时间:5-20分钟
多种预设风格的融合,生成时间小于1秒,每种风格的训练时间为1-10小时
最新的实时任意风格迁移算法之一,生成时间:不到10秒(有些算法不到1秒,但个人认为看起来不太好),训练时间:10小时
图片类比,生成时间:5-20分钟
最后,安利写了一篇与这篇文章无关的文章。我写这篇文章的动机是研究债务(原文是英文,相关的智虎问题在这里)。我希望你喜欢这篇文章,也希望那些有空闲的人能写更多的科普文章。写作不利于出丑。
引用
注意:排序基本上是按时间顺序的。星号越多,它就越重要。这里只引用文章中提到的论文,如有必要,将在后面添加。
先进技术:
基于复小波系数联合统计的参数纹理模型
一天中不同时间的数据驱动幻觉,来自一张户外照片
头像的风格转换
油画的图像风格化?使用调色板进行过滤
基于神经网络的图像风格转换:
* *使用卷积神经网络的纹理合成
* * *艺术风格的神经算法
*结合马尔可夫随机场和卷积神经网络进行图像合成
*纹理网络:纹理和风格化图像的前馈合成
艺术风格的学术表现
任意样式的快速基于补丁的样式转移
*通过自适应实例规范化实时进行任意风格转换
通过深度图像类比进行视觉属性转换
雷锋。(公开号码:雷锋。com)出版社:这篇文章的原作者是李佳明,原文载于作者的智湖专栏。
人工智能神经网络专业培训班
20年来,清华大学神经网络讲师将带你系统地学习人工智能的神经网络!
一站式深入了解深度学习的发展现状、基本原则和主要方法。
课程链接:mooc.ai/course/65
雷锋文章版权所有。严禁擅自转载。详情请参考转载说明。
来源:搜狐微门户
标题:图像风格迁移 (Neural Style) 简史
地址:http://www.shwmhw.com/shxw/61097.html