第6章 基于CycleGAN的图像风格转换_第1页
第6章 基于CycleGAN的图像风格转换_第2页
第6章 基于CycleGAN的图像风格转换_第3页
第6章 基于CycleGAN的图像风格转换_第4页
第6章 基于CycleGAN的图像风格转换_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于CycleGAN的

图像风格转换1数据准备目录目标分析2构建网络3训练网络4结果分析5深度学习网络在学习了两种不同风格的图像特征之后,可以将图像组A的特征附着到图像组B的图像上,或是将图像组B的特征附着到图像组A的图像上。本案例使用常规马与斑马数据集,构建CycleGAN网络,进行图像风格转换。一是将常规马图像转换成斑马的图像风格。二是将斑马图像风格转换成常规马的图像风格。图像风格转换最初被创造出来的目的是,在不改变原始图像的大体框架的前提下,创造出多种不同风格类型的图像。目标分析随着图像风格转换技术的不断发展,应用领域也越来越多,可以用于去除脸部遮蔽物,或者用于图像还原等。本小节主要介绍图像风格转换的相关背景、运用领域,以及本案例的分析目标和相关流程。目标分析图像到图像的风格转换是一类视觉和图形问题,是最近新兴起的一种基于深度学习的技术,其目标是获得输入图像和输出图像之间的映射。图像风格转换在生活中的运用有很多,例如。短视频软件的特殊滤镜功能,可以将影像中的目标转换为卡通、油画、英式复古等风格。直播平台的美颜、瘦脸等直播工具也采用了图像风格转换技术。本案例将基于CycleGAN进行图像风格转换,样本数据无需配对即可实现转换,如将油画图像转换为现实风景图像、斑马图像转换成马图像、将冬季图像转换成夏季图像等。背景本案例将实现常规马图像与斑马图像两者的风格相互转换,如下图。背景利用CycleGAN网络、常规马与斑马的图像数据集,可以实现以下目标。令网络能够将常规马图像的风格转换成斑马图像的风格。令网络能够将斑马图像的风格转换成常规马图像的风格。基于GAN的图像风格转换总体流程图的总体流程图,主要包括以下4个步骤。数据加载。包括加载常规马与斑马图像数据集。构建网络。包括构建恒等映射网络函数、构建残差网络函数、构建生成器函数和构建判别器函数。训练网络。包括构建训练过程函数,构建生成图像函数,运行主函数训练网络。结果分析。对模型的输出结果进行结果分析。分析目标本案例基于GAN的图像风格转换总体流程图的总体流程图如所示。分析目标本案例基于Keras2.4.3和TensorFlow-gpu2.3.0环境下运行,其中TensorFlow也可以是CPU版本,除此之外还要安装keras_contrib拓展包。keras_contrib拓展包在Windows下的安装流程如下。在github上下载keras_contrib库,下载完后解压文件。解压完成后打开keras_contrib包文件,输入cmd打开命令行窗口,在命令行窗口输入“pythonsetup.pyinstall”命令进行安装。将keras_contrib和keras_contrib.egg-info这两个文件夹,移动到Anaconda的环境中,具体要放到Lib下的site-packages中,默认路径为“C:\Users\用户名\anaconda3\Lib\site-packages”。项目工程结构本案例的目录包含3个文件夹如右图,分别是code、data和tmp,如下图左一。所有原始图像数据存放在data文件夹,data文件夹内包含了4个子文件夹,分别是trainA、trainB、testA、testB,如下图左二。所有的代码文件放在code文件夹中,如下图右一。项目工程结构代码运行过程中生成的转换图像会放入tmp文件夹中,项目工程结构1数据准备目录目标分析2构建网络3训练网络4结果分析5本案例使用的数据是包含斑马与常规马图像的数据集,包含4个子数据集testA、testB、trainA和trainB。其中testA中包含120张常规马图像,testB中包含140张斑马图像,trainA中包含400张常规马图像,trainB中包含400张斑马图像。trainA和trainB数据集用于训练网络,testA和testB数据集用于评估网络的图像风格转换性能。构建能够将原始图像读取到内存中的函数,即用来存放读取变量。数据准备1数据准备目录目标分析2构建网络3训练网络4结果分析5CycleGAN是朱俊彦(Jun-YanZhu)等人于2017年3月份提出的生成对抗网络。该网络的作用是将一类图像的风格转换成另外一类图像的风格。假设有X和Y两个图像域(比如马和斑马),CycleGAN能够将图像域X的图像(马)转换为图像域Y的图像(斑马),或是将图像域Y的图像(斑马)转换为图像域X的图像(马)。图像域X和Y的图像风格相互转换,如右图。构建网络CycleGAN的网络结构如下图。构建网络为了实现两个域X和Y之间的相互映射,CycleGAN包含两个映射网络,即生成器

,和两个对应的判别器

。判别器

的目标是区分来自图像域X的真实图像和转换的图像

。判别器的目标是区分来自图像域Y的真实图像和转换的图像

。循环一致性损失存在的意义是为了防止学习的映射G和F相互矛盾。构建网络在不断加神经网络的深度时,会出现饱和问题,即准确率会先上升然后达到饱和,再持续增加深度则会导致准确率下降。这并不是过拟合的问题,因为随着误差在测试集上增大,训练集本身误差也会增大。假设有一个比较浅的网络达到了饱和的准确率,那么加上恒等映射网络全可以让误差不再增加,即更深的网络不会再带来训练集上的误差上升。定义恒等映射网络函数深度学习网络的深度对模型的分类和识别的效果有着很大的影响,通常网络的深度越深,训练效果越好。但是事实上却不是这样,网络层数的增加并没有提升网络的训练效果,其中的原因之一就是网络越深,梯度消失的现象就越来越明显,网络的训练效果自然就不会提高。但是浅层网络又无法明显地提升网络的识别效果,所以需要增加残差网络来解决梯度消失以及梯度爆炸的问题。定义残差网络函数生成器的目标为能将输入的图像转化为期望的图像风格的图像。例如,输入斑马的图像,转化成马的图像。定义生成器函数判别器的目的是根据输入的图像判断出图像的真伪。在CycleGAN中,判别器(Dicriminator)训练时使用的loss函数为均方差。本案例最后卷积完后的网络形状(shape)为(16,16,1)。需要注意的是,构建判别器函数与构建生成器函数的代码都包含在CycleGAN类中。定义判别器函数1数据准备目录目标分析2构建网络3训练网络4结果分析5定义生成器与判别器的函数后,需要实例化生成器和判别器并定义CycleGAN网络的训练过程。然后定义一个生成图像函数,使网络每次迭代都输出一次风格转换图像,方便操作者跟进网络的学习进度。训练网络CycleGAN的训练过程分为3个步骤,具体如下。实例化两个生成器,其中一个用于将图像风格X转换成图像风格Y,另外一个用于将图像风格B转换成图像风格X。实例化两个判别器,分别用于风格X图像的真伪判断和风格Y图像的真伪判断。判别器的训练所用的损失函数是均方差损失,用于判断是否正确进行训练。训练过程的代码与构建判别器和构建生成器的代码一样,包含在CycleGAN类中。定义训练过程函数生成器的训练需要满足6个准则如下。将图像风格X转换成图像风格Y的假图像需要能够成功欺骗判断器Y。将图像风格Y转换成图像风格X的假图像需要能够成功欺骗判断器X。将图像风格X转换成图像风格Y的假图像可以通过生成器YX成功转换成图像X。将图像风格Y转换成图像风格X的假图像可以通过生成器XY成功转换成图像Y。真实图像X通过生成器YX,不会发生变化。真实图像Y通过生成器XY,不会发生变化。定义训练过程函数为了跟进网络的学习进度,需要观察网络每次迭代学习之后所生成的转换图像,在定义生成器函数的CycleGAN类中定义生成图像函数。完成网络训练过程的定义之后,运行主函数main开始训练网络。定义生成图像函数1数据准备目录目标分析2构建网络3训练网络4结果分析5通过观察每次迭代(Epoch)的输出结果,分析网络的生成图像对比前面几次迭代发生了什么变化。由于Epoch参数最初设置为0,所以训练过程中输出的Epoch值始终比实际中的迭代次数小一位。网络进行第1次迭代即Epoch=0时,输出的图像基本是噪声,如下图所示。结果分析网络进行第6次迭代即Epoch=5时,已经能够简单地将斑马条纹模糊处理,如下图。结果分析网络进行第12次迭代即Epoch=11时,已经可以看到一些斑纹,如下图。结果分析网络进行第17次迭代即Epoch=16时,能够生成更加明显的斑纹特征,如下图。结果分析网络进行第100次迭代即Epoc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论