基于生成对抗神经网络的图像风格快速迁移毕业论文.docx

上传人:b****5 文档编号:7827855 上传时间:2023-01-26 格式:DOCX 页数:37 大小:17.97MB
下载 相关 举报
基于生成对抗神经网络的图像风格快速迁移毕业论文.docx_第1页
第1页 / 共37页
基于生成对抗神经网络的图像风格快速迁移毕业论文.docx_第2页
第2页 / 共37页
基于生成对抗神经网络的图像风格快速迁移毕业论文.docx_第3页
第3页 / 共37页
基于生成对抗神经网络的图像风格快速迁移毕业论文.docx_第4页
第4页 / 共37页
基于生成对抗神经网络的图像风格快速迁移毕业论文.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

基于生成对抗神经网络的图像风格快速迁移毕业论文.docx

《基于生成对抗神经网络的图像风格快速迁移毕业论文.docx》由会员分享,可在线阅读,更多相关《基于生成对抗神经网络的图像风格快速迁移毕业论文.docx(37页珍藏版)》请在冰豆网上搜索。

基于生成对抗神经网络的图像风格快速迁移毕业论文.docx

基于生成对抗神经网络的图像风格快速迁移毕业论文

---文档均为word文档,下载后可直接编辑使用亦可打印---

摘要

现今,无论是科研还是娱乐,人们对于图片和视频的处理需求越来越大,所以需要更多的处理图片和视频的应用,比如图像风格迁移。

对于图像风格迁移这个领域,人类很难快速学习到某种图片风格,而且利用人力在专门软件上处理图片是很耗时间的,所以人们需要可以自动化的快速的迁移方法。

本文主要是实现了一个可以对图像风格进行快速风格迁移的应用。

针对传统图像迁移方法迁移速度慢,复用性弱的缺点,这里使用了一种更新型的神经网络方法——循环一致性生成对抗网络(Cycle-ConsistentGenerativeAdversarialNetworks,CycleGAN)。

编写代码实现了CycleGAN中的鉴别器和生成器之后,通过神经网络的迭代训练,可以训练出用来进行图像风格迁移的生成器。

利用这项技术,本文训练出了7个风格迁移生成器,分别有:

梵高,莫奈,塞尚,浮世绘,齐白石,唐寅,山水画。

除了实现照片风格迁移,本文还实现了两个相似物体之间的风格互换。

一共3种:

马与斑马互转,夏季与冬季互转,苹果与橘子互转。

关键词:

图像风格迁移;快速迁移;CycleGAN;生成对抗网络;鉴别器;生成器

 

Abstract

Nowadays,whetheritisforscientificresearchorentertainment,peoplehaveanincreasingdemandforimageandvideoprocessing,somoreandmoreapplicationsofimageandvideoprocessingareneeded,suchasimagestyletransfer.Inthefieldofimagestyletransfer,itisdifficultforhumanbeingstolearnacertainimagestylequickly,andittakestimetoprocessimagesonspecializedsoftwarewithhumanbeings,sopeopleneedafastmethodofmigrationthatcanbeautomated.

Thispapermainlyrealizesanapplicationoffaststylemigrationofimagestyle.Imagemigrationmethodfortraditionalmigrationspeedslow,problemofweakreusabilityhereUSESanewtypeofneuralnetworkmethodmoreconsistency-loopgeneratedagainstnetwork(Cycle-ConsistentGenerativeAdversarialNetworks,CycleGAN).AftercodingthediscriminatorandgeneratorinCycleGAN,thegeneratorforimagestyletransfercanbetrainedthroughtheiterativetrainingofneuralnetwork.Usingthistechnique,thispaperhastrainedsevenstyletransfergenerators,namely:

vangogh,monet,Cezanne,ukiyo-e,qibaishi,tangYin,landscapepainting.Inadditiontothetransferofphotostyles,thispaperalsorealizesthestyleexchangebetweentwosimilarobjects.Therearethreekinds:

thehorseturnswiththezebra,thesummerturnswiththewinter,theappleturnswiththeorange.

Keywords:

Imagestyletransfer;Rapidmigration;CycleGAN;Generatingantagonisticnetwork;Discriminator;Thegenerator

第一章绪论

1.1研究背景

想象一下,如果19世纪的荷兰画家梵高来到校园,画下一幅画。

那么,在他的脑海中或者在他的绘画风格下,校园的风景会呈现怎样的效果?

当然,梵高可不会复活,我们也没有那么强的想象力。

所以这就衍生出一项应用——图像风格迁移。

图像风格迁移(StyleTransfer)。

顾名思义,就是把一种图片风格转换成另一种图片风格。

图片风格如图1-1,每一张图都是不同的艺术风格。

要让计算机理解风格是什么都很困难,更不用说把一个图像的风格变成另一种风格。

图1-13种不同的图片风格

想让计算机理解图片风格是什么,科学家做了很多努力。

在2000年及之前的时间,那时候还没有图像迁移,只有图片纹理的研究。

在2000-2015年之间,图像纹理都是手动建模的,比如《AParametricTextureModelBasedonJointStatisticsofComplexWaveletCoefficients》[1],其中用到的最重要的一个思想是:

纹理可以用图像局部特征的统计模型来描述。

有了这个思想之后,通过用复杂的数学公式和模型,科学家可以整理和生成了一些纹理了,但是手动建模很耗费时间。

纹理生成无论最后生成的纹理怎么样,好不好看,都是纹理生成。

而本文的图像风格迁移,在当时,都没有被准确的划分出这个领域,名称都没有。

当时的风格迁移研究中,每个风格的算法互相之间没有很多共同点,是各自独立的。

例如油画风格的迁移,用了七个不同的步骤去抽取和迁移油画的特征。

另一个例子是头像风格迁移,用了三个步骤将一个头像风格样式迁移到另一个样式上。

这十个步骤都是各自发展,没有共同点。

风格迁移得以发展的背后还有游戏的功劳。

游戏机从刚发明之初就离不开显卡。

显卡最重要的功能就是处理和显示图像。

随着玩家对游戏场景的追求,游戏人员希望把游戏做的越来越真实绚丽,这极大的推动了过去20年显卡的研究和发展。

这时有人发现,图像计算和神经网络有相似的地方。

它们都需要对大量的数据进行单一重复的计算,所以就同样可以利用显卡来加速。

于是乎,被研究人员抛弃了十几年的神经网络由于算力的爆炸式增长而重新焕发出了活力,深度学习开始崛起。

这时候就开始有人用神经网络的方法去做风格迁移,该领域从此快速发展。

可以总结出,如果没有游戏的发展就没有神经网络的崛起,也就没有风格迁移的成熟。

第一个基于神经网络的图像风格迁移算法由Gatys等人在两篇论文中提出:

《TextureSynthesisUsingConvolutionalNeuralNetworks》[2]和《ANeuralAlgorithmofArtisticStyle》[3],第一次提出基于深度CNN(卷积神经网络)的图像风格迁移,如图1-2所示。

图1-2Gatys方法的图像迁移效果,小图是风格类型

基于深度CNN的神经网络方法相比于传统的非参方法(通过采样图像的像素纹理),会有更好的效果。

特征提取不再只是提取一些底层特征,反而能够提取全局的特征。

不过Gatys这种方法是直接拿待迁移图片和风格图片进行训练生成。

每生成一张风格图片就要训练一次,非常消耗时间。

而且还不能对训练参数进行复用,生成下一张就得重新训练参数。

后来出现了许多比Gatys方法更好的,基于深度学习的图像迁移算法:

有固定风格任意内容的快速风格迁移《PerceptualLossesforReal-TimeStyleTransferandSuper-Resolution》[6],还有任意风格任意内容的快速风格迁移《MetaNetworksforNeuralStyleTransfer》[7]。

也有人开始用GAN(生成对抗网络)来生成风格图片,比如有pix2pix和CycleGAN两种方法,CycleGAN就是本文所要使用的方法。

 

1.2国内外研究与现状

风格迁移之前只是研究图片纹理生成,都在2000年及其之前。

是用的一些统计模型和复杂的数学公式来描述和生成图像局部纹理特征。

在这之后的时间,图像迁移都是基于神经网络来实现的。

比如在2015年,由Gatys等人发表的《ANeuralAlgorithmofArtisticStyle》[3],第一次提出基于深度CNN(卷积神经网络)的图像风格迁移。

通过神经网络的反向传播算法和梯度下降算法,不断的迭代更新,调整参数,减少损失,最终逼近一个最好的结果。

但是Gatys这种方法每生成一张图片就要训练一次,效率很低,模型还不能复用。

所以,很多研究人员就开始另辟蹊径,寻找快速的方法。

比如在2016年由JustinJohnson,AlexandreAlahi,LiFei-Fei发表的论文《PerceptualLossesforReal-TimeStyleTransferandSuper-Resolution》[6]。

该篇论文解决了前面Gatys方法风格迁移久的问题。

李飞飞的方法不像gatys那样直接拿图片和风格图片一起训练,而是先训练了一个前向生成网络模型,等模型训练完成后,可以重复利用,可以用于生成风格图片。

这个网络与之前的Gatys的方法相比巧妙很多,是把生成图片从训练中分开了,生成模型可以被复用,训练参数不再是没用的。

两种方法的生成效果差不多,但是速度上李飞飞的却比Gatys的提升了数百倍,达到3个数量级,毕竟不再是生成一张就得训练一次。

2018cvpr的一篇论文,由FalongShen等人发表的《MetaNetworksforNeuralStyleTransfer》[7],使用meta转换网络实现多风格转换。

该方法解决了以前的网络只能转换某一种风格的缺点。

这里的meta网络可以对不同的风格训练出不同的参数。

近些年,JunYanZhu等加州大学伯克利分校的研究员提出了一种图像风格转换的技术CycleGAN,取得了很不错的效果,并迅速引起许多关注。

CycleGAN是基于GAN的一项技术,利用训练好的生成器,可以把两个风格域的图像相互转换为另一个域。

这项技术被研究员应用到了很多领域,可以做图像风格转换,物体转换等等。

风格迁移的现代史,基本上是由深度学习来书写。

最开始的Gatys的方法不会优化网络参数,只会优化生成图,没有复用性,每生成一张就得重新训练一次。

后面的Johnson则解决了这个问题,加入了一个转换网络,转换网络训练好了之后,就可以利用这个网络来转换图片,一并解决了复用性和耗时的问题,训练效果也差不多。

FalongShen的多风格转换也差不多,只不过可以有更多选择。

这些方法缺点也是有的,生成的风格图片越来越像目标风格图,反而缺失了原有图像的很多细节,越来越不像原图。

基于这一问题,利用UCberkeleyAI研究所发明的CycleGAN可以解决。

利用循环一致性损失来控制生成图和原图的区别,以至于结果在像风格图的同时还不会过度扭曲。

还有,CycleGAN是基于两个域的非成对风格图片来训练,优点是收集图片方便,只需要两个域的数量不定的图片集即可,而且风格迁移不再是只学习一张图,而是学习整个域的所有图片,生成的图片像风格域的平均风格。

 

1.3本文的主要内容

正如上两节所写,以往的风格迁移算法也许可以胜任图像风格快速迁移这项任务,但是会出现原图扭曲,内容细节丢失的问题。

结果看起来也许还不错,但是和原图已经相差甚远了。

所以为了解决这些问题,本文选择了更好的方法--CycleGAN进行风格迁移。

本文1-3章先是介绍以及实现了CycleGAN,然后训练模型。

第4章利用训练好的生成器生成风格图片,分析其结果(包括生成图片效果和losses情况),并用该结果与以往方法进行对比总结。

第五章是工作总结。

第二章研究方法与原理介绍

2.1生成对抗网络(GAN)

研究CycleGAN先要理解它的基本结构GAN,因为CycleGAN是GAN的一种拓展。

生成对抗网络(GenerativeAdversarialNetworks,简称GANs)是利用卷积神经网络等深度学习方法进行生成性建模的一种方法。

生成式建模是机器学习中的一项无监督学习任务,它涉及到自动发现和学习输入数据中的规则或模式,从而使得该模型可以用于生成一些和原始数据集相似的新样例。

生成对抗网络是一种很巧妙的训练生成模型的方法,它将问题构建为一个包含两个子模型的监督学习问题。

两个子模型分别为:

生成器模型,鉴别器模型。

生成器生成假实例,鉴别器鉴别生成器生成的实例,作分类任务分出真假。

每一次迭代,两个子模型都会不断优化自己的能力。

生成器不断的生成以假乱真的实例以欺骗鉴别器,而鉴别器也不断的从真实实例中跟生成器生成的假实例做对比,提高自己的鉴别能力。

两个模型的训练相当于在一场零和博弈,直到达到纳什均衡,这时候鉴别器只能鉴别出假实例的一半,这也意味着生成器正在生成可以以假乱真的例子。

 

2.1.1生成器模型(GeneratorModel)

生成器模型接受一个固定长度的随机向量作为一个输入,然后输出一个域的实例,比如一张图片。

这个向量通常从高斯分布(经常被用于生成噪声源,随机数种子)中作为抽取。

简而言之呢,这个向量就是一个随机数数组,没有任何意义,不是一个图像,也不是任何东西,除非由生成器模型提供意义,比如条件生成对抗网络(cGAN)。

通过训练完以后,这个高维随机向量的点被关联到目标生成域的某些点,形成了一个数据分布的压缩表示,称为潜在空间,由潜在变量组成。

训练结束后,生成器模型可以保存下来,被用于生成目标实例。

生成器模型结构如图2-1。

图2-1生成器结构

 

2.1.2鉴别器模型(DiscriminatorModel)

鉴别器模型其实就是通常的深度学习分类模型。

鉴别器从目标域中接受例子作为输入(比如真实例子或者生成器生成的例子),然后做分类任务,预测结果是一个二元标签,真(真实例子)或假(生成的例子)。

鉴别器模型的结构如下图2-2

图2-2鉴别器结构

在训练过程中,由于我们只对生成器感兴趣,鉴别器模型最后就被丢弃了。

鉴别器通常是另外独自训练,但是训练生成器的时候还需要重新利用回鉴别器,和生成器配合组成复合模型。

 

2.1.3生成对抗网络结构

生成式建模是一个非监督学习的任务,前面已经谈到了,然而这里的生成对抗网络的巧妙之处在于,生成式建模变成了一个监督学习的任务,两个子模型一起训练。

生成器生成一些和目标数据相似的伪数据,然后提供给鉴别器去做分类任务。

鉴别器在每一轮的迭代中提高自己的鉴别真伪例子能力,更重要的是,生成器可以通过鉴别器辅助提高自己的造伪能力。

换各说法就是,生成器看生成的例子是否有欺骗到鉴别器,不断提高自己的欺骗性。

打个比喻:

生成器就像伪币制造者,不断的制造假币;鉴别器就像警察,不断的找出假币,抓住伪币制造者。

双方为了赢得这场博弈,伪币制造者得学会如果造出以假乱真的假币,而警察就要不断的提高自己假币鉴定能力。

这样的话,两个子模型之间存在一个博弈的关系。

它们在博弈论的意义上看是对立的,在玩一场零和游戏。

零和意味着当鉴别器成功识别出真实样本和虚假样本时,它会得到奖励,模型参数不用调整;而生成器会遭到惩罚,更新大量的模型参数。

另一方面,鉴别器不能成功识别就会被惩罚,更新大量参数,而生成器会得到奖励,不用更新参数。

在某个极限下,生成器可以生成完美的目标域的假样本,鉴别器不能区别出生成样本是真还是假(假样本的识别率为50%)。

这就正好是一个最理想的情况了,这种情况在博弈论中叫纳什均衡,不过得到可以使用的生成器不一定非要到达那个极限。

可以在训练途中输出过程情况,看生成的效果来判断何时停止。

生成对抗网络的架构如下图2-3。

图2-3GAN结构

 

2.1.4GAN的原理及Loss

我们先假设一个分布P_data(x)为真实图片集。

其中的x可以理解成一个向量,是真实图片集中的一张图片,设P_data是这类向量集合的分布。

我们需要生成一些也在P_data(x)中的分布的图片,如果直接就在这分布,是还不能够的。

设一个分布P_G(x;θ)为现有生成器生成的分布,θ是这个分布的参数,可以控制这个分布。

我们想要计算一个似然P_G(xi;θ),xi是取自真实分布中{x1,x2,…xm},所以在生成模型中的似然L就是

(1)

让生成器最大概率的生成一些真实图像就相当于最大化这个似然L,是一个最大似然值估计的问题,所以我们需要找到一个θ来最大化这个似然。

要找一个合理的θ,我们可以把P_G(x;θ)当作一个神经网络。

随机取一个向量z,让它通过G(z)=x生成器,就可以生成图片x。

我们现在要取一组样例z,因为这组z是符合某个分布的,那么通过G(z)就可以生成一个分布P_G。

之后再把这个分布与真实分布P_data进行比较就可以更新θ了。

有了非线性激活函数的神经网络,就可以拟合任意函数,分布也是一样的。

所以,为了学习到一个很复杂的分布,我们可以用高斯分布取样去训练一个神经网络。

GAN的贡献在于,它提供了一个方法可以找到更接近的分布,如下面的公式:

(2)

这个公式的G,D分别表示生成器和鉴别器。

D(x)表示的是一个概率,区间在0到1,表示是真实分布的概率,显然,越接近1就表示越真实,越接近0就表示越假。

等式右边的第一个式子的意思是对真实图片的概率,第二个式子是对生成图片的反概率。

鉴别器的任务就是让这个值V(G,D)尽可能的大,意义是对真实图片的判断尽可能接近1,对生成图片的判断尽可能接近0。

生成器则相反,让这个值尽可能的小,意思就是让鉴别器犯错,对真实图片的判断远离1,对生成图片的判断远离0。

所以生成器和鉴别器是在进行一场互相拉扯的最大最小值的博弈游戏,最大最小值公式如下:

(3)

用该公式作为神经网络的loss,最终会训练出θ参数比较好的生成器。

 

2.2GAN的应用

在计算机视觉领域中,使用深度学习方法的一个最主要的优势就是在一项叫数据增广的技术上。

数据增广使得模型表现得更加的好,包括提高了模型轻巧度和提供了正则化影响。

生成器通过生成新的,人工合成的,但是及其相似的样本给模型训练。

对于图像数据来说,这些技术是原始的,涉及到训练数据集中现有图像的裁剪,翻转,缩放和其他简单转换。

成功的生成式建模为数据扩充提供了一种可选的、可能更具体于领域的方法。

事实上,数据增广是生成式建模的简化版本,尽管很少这样描述。

在复杂的领域或数据量有限的领域,生成式建模为建模提供了更多的训练。

GANs已经在诸如深度强化学习等领域的用例中取得了很大的成功。

GANs的有趣、重要和需求进一步研究的原因有很多。

IanGoodfellow在他的2016年会议主题和相关技术报告NIPS2016Tutorial:

GenerativeAdversarialNetworks[8]中概述了其中的一些。

在这些原因中,他强调了GANs成功地建模高维数据、处理缺失数据的能力,以及GANs提供多模态输出或多个貌似合理的答案的能力。

GANs最引人注目的应用可能是针对需要生成新示例的任务的条件GANs。

这里,Goodfellow列举了三个主要的例子。

图像分辨率增强:

生成高清图片。

创造生成艺术:

创造新的艺术图片,素描,画作等等。

图像翻译:

图像域与域之间的转换。

比如夏天与冬天的转换,白天与黑夜的转换等等。

GANs被广泛研究、开发和使用的最引人注目的原因可能是它们的成功。

GANs能够生成如此逼真的照片,以至于人们无法分辨出它们是真实生活中不存在的物体、场景和人物。

对于他们的能力和成功来说,“大吃一惊”还不是一个充分的形容词。

如图2-4,生成人脸越来越逼真清晰。

图2-4不同时期GAN生成人脸的效果

 

2.3循环一致性生成对抗网络(CycleGAN)

CycleGAN是GAN的一种拓展。

通常GAN模型只包含两个模型:

生成模型,判别模型,但是CycleGAN涉及到4个模型:

两个生成器,两个判别器。

CycleGAN主要用于图像到图像的翻译,有另一种GAN方法叫Pix2Pix的也可以用作图像翻译,但是要利用成对数据进行训练。

而这些成对数据一般来说很难去准备,甚至是不可能的。

然而CycleGAN这项技术可以使用非成对的数据集训练,准备数据比较简单,只需要准备两个域数量不等的数据就可以了。

为了解决以前方法的图像扭曲和细节缺失的问题,CycleGAN引入了一个叫“循环一致性(cycleconsistency)”的新概念,意思是类型a的一张图片经过生成器G(AtoB)生成另一种类型b,这张b再通过生成器G(BtoA)转换回类型a,看看是否和原来的相似。

通过控制这个过程的损失,就可以解决细节丢失问题。

生成的图片既要和另一种类型相似,又不会完全变成另一张图片,保留了原有的特征。

a变b再变回a,顾名思义为一条“循环”。

为了训练一个生成器往往需要另一个生成器的帮助,所以两个生成器就得一起训练。

最后的训练就包含了两条循环,四个模型。

CycleGAN的架构显然很复杂,因为它涉及到4个模型。

模型除了正常的判别损失之外,还加上了循环一致性损失。

建立CycleGAN大体上和传统GAN一样,也是生成器和鉴别器的组合,只是实现循环一致性损失有点复杂。

循环一致性网络结构可以很好用以下的图解释。

如图2-5和图2-6。

图2-5一个单向的CycleGAN(正向)。

从域a到域b。

图2-6一个单向的CycleGAN(反向)。

从域b到域a。

其中每个方向的循环一致性损失如下:

●正向循环一致性损失(ForwordCycleConsisitencyLoss):

-域a的数据A通过G(AtoB),产生^B

-^B通过G(BtoA),产生^A

-比较A和^A

同理反向:

●反向循环一致性损失(BackwordCycleConsisitencyLoss):

-域b的数据B通过G(BtoA),产生^A

-^A通过G(AtoB),产生^B

-比较B和^B

理解了单向循环那么整体的CycleGAN就好理解了。

如下图出自《UnpairedImage-to-ImageTranslationusingCycle-ConsistentAdversarialNetworks》[9]。

图2-7CycleGAN模型

(a)里面包含了两个映射函数(生成器)G:

XY和F:

YX,以及鉴别器DX和DY,为了更好的规范映射,就引入了两个循环一致性损失。

就是如果我们从一个域转换到另一个域,再转回来,这个结果应该和原来相差无几。

如(b)的正向循环一致性损失:

xG(x)F(G(x))≈x和(c)的逆向循环一致性损失yF(y)G(F(y))≈y。

其中

XY的判别器损失公式为:

(4)

同理,YX的判别器损失为:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1