【《生成对抗神经网络去图像旋转模糊分析案例》4400字】_第1页
【《生成对抗神经网络去图像旋转模糊分析案例》4400字】_第2页
【《生成对抗神经网络去图像旋转模糊分析案例》4400字】_第3页
【《生成对抗神经网络去图像旋转模糊分析案例》4400字】_第4页
【《生成对抗神经网络去图像旋转模糊分析案例》4400字】_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

生成对抗神经网络去图像旋转模糊分析案例1.1数据集的构建目前关于深度学习处理图像的数据集比较丰富,但是这些数据集绝大多数都是包含直线运动模糊的数据集本文使用的数据集,而课题所需要的清晰-旋转模糊图像对数据集极为匮乏。由于选择拍摄真实图像作为实验数据集困难极大,不符合现实,本文使用的数据集来源选择了使用已经开放的数据集中的大量清晰图像使用算法生成新的数据对。因此,本文使用的数据集为由Gopro数据集处理过后的旋转模糊图像对,在其中选择了1000组图片对作为训练数据集,100组图片对作为测试数据集。关于数据集的生成处理过程如下:首先裁剪图片,将原来的尺寸裁剪成720*720的正方形图像,旋转中心以图像中心为准,方便生成图像,根据最大的旋转模糊角度θ与旋转步进Δθ逐步旋转图像,得到若干张旋转图像,最后将全部的旋转图像叠加,除去图像范围以外的像素点即可得到旋转模糊的图像。1.2生成对抗网络理论基础在深度学习的方法中,计算机可以通过深层的网络模型识别图像中具体的图像结构和细节特征,表达复杂图像数据的分布。而生成对抗网络是设计了两个相互对抗的网络,分别被称为生成网络(Generationnet)和判别网络(Discriminationnet)。二者一般情况下都是由卷积神经网络组成,并且训练时都是采用了反向传播算法。生成器用来学习数据特征,并加入噪声来生成类似样本的数据,判别器学习大量的样本,然后来判断生成器传递的样本是否为真实数据的样本,将判断结果反馈给生成器,生成器根据此结果调整生成的数据。在训练过程中,生成器不断生成新的接近样本的数据,判别器也不断学习数据样本的特征,二者会不断收敛,直到判别器的正确率接近1/2,即无法准确判断,这时生成器生成的数据就会很接近样本的数据。流程如下图:图4-1生成对抗网络结构图GAN网络的最终目标函数为minGmax其中pr是真实的数据分布,pg表示生成数据分布,x表示真实样本。生成网络优化:maxD判别网络优化:minGV训练过程中就是两个网络分开优化的,先固定生成器的权重,对鉴别网络训练,优化鉴别网络使得鉴别网络的鉴别概率最大,此时再固定判别网络的权重,优化生成网络,直到鉴别概率重新变小。两个步骤不断重复循环,直到两个网络达到收敛,整个训练过程才算结束。1.3部分GAN网络介绍(1)cGANcGAN又被叫做条件GAN,与一般的GAN不同之处在于训练过程中在生成网络和鉴别网络输入端都增加一些限制二者的额外条件信息。

加入的信息可以是任意信息,自然也可以是图片的信息。通过控制增加的信息,进而指导输出的数据,流程如下图:图4-1cGAN流程图cGAN的提出可以看成是从无监督到有监督的进步,这个改进已经用于广泛的学习过程中。(2)DCGANDCGAN是一种比较特殊的GAN,不管是生成网络还是鉴别网络的结构都不包含池化层和上采样层,因此需要激活函数辅助其实现功能。一般在生成网络中最后一层会使用激活函数tanh,其他层的激活函数会使用激活函数ReLU,而在鉴别网络中的每层的激活函数为LeakyReLU。这样一来,层与层之间的连接几乎全由卷积层代替。这样的好处是训练的过程会更加稳定。(3)WGAN与WGAN-GP(距离生成对抗网络)WGAN由MartinArjovsky等人提出。自从2014年GAN的基本概念被提出以来,GAN的训练过程总是存在着一些困难,一些学者尝试改进GAN,但是不管是CGAN还是DCGAN,都无法从根本上解决训练困难的问题。而WGAN的提出,彻底解决了GAN存在的各种问题,极大地推动了深度学习的发展。与传统的生成对抗网络相比,WGAN仅仅改动了三点就解决了训练困难的问题:在传统GAN判别器的最后一层不使用sigmoid;计算损失函数时不取log;判别器参数需要更新时先将绝对值截断,令其不超过一个常数。此外,MartinArjovsky等人认为使用动量优化算法会增大占用资源。MartinArjovsky等人指出,如果一开始的时候,生成数据与实际的数据相差较大,此时二者的交叉熵(JS散度)为一个常数,此时生成器的损失函数也将不变,这样的话生成器和判别器将无法继续优化,这也是之前的方法都无法有效改善GAN训练问题的根本原因:JS散度不适合作为衡量包含不相交部分的分布的图像像素之间的距离指标,通过优化交叉熵训练GAN会导致网络找不到准确的优化目标,导致无法优化无法保持。因此,MartinArjovsky等人提出了使用Wasserstein距离来代替原来的JS散度。WGAN的损失函数表示为:minGmaxDVG,D在WGAN的基础上,Gulrajani等人对WGAN产生的梯度消失和梯度爆炸问题进行了改进,并称之为WGAN-GP。作者发现使用WGAN时如果将权重剪切到一定范围之后,会发生如图的情况:图4-2如图4-2所示的剪切范围是[-0.01,0.01]从图中可以看出,权重大多数都集中在了两端,也就是说大部分的权重只有两种可能性,这会造成神经网络资源的极大地浪费。并且此时剪切权重会造成梯度消失或梯度爆炸等问题。为了避免出现这样的问题,Gulrajani等人提出了梯度惩罚的方式。梯度惩罚是通过建立一个损失函数来代替原有的Lipschitz连续性限制。首先,由于Lipschitz连续性限制要求判别器梯度低于K,因此先求出判别器的梯度∇D(x),然后仅需要∇D(x)与K之间建立一个二范数就可以构建一个损失函数。结果如图4-3:图4-3WGAN-GP的创新在于提出了梯度惩罚的方法解决梯度异常问题,并且得到了比WGAN更快,训练更加稳定,生成质量更高的样本。WGAN-GP是目前最好的生成对抗神经网络,因此,实验过程采用WGAN-GP进行深度学习去模糊操作。1.3FPN算法2017年,由Tsung-YiLin等人率先提出了一种多尺度的特征提取算法,即FPN(FeaturePyramidNetworks)特征金字塔网络,现多用于目标检测。对于一些较为复杂的数据,比如图像的处理,越小的目标越难以识别,但是越容易包含难以检测的细节信息。每一张图像都可以看做是一个多层次的结构,处理这个问题的方法有的是采用多个尺度的特征相互融合,再采用融合厚的特征信息进行后续处理,有的是仅采用底层或者顶层的特征信息进行处理。图4-4图像的金字塔结构如图,FPN根据图像的特征金字塔分别对每一层提取特征,图像的特征金字塔是通过自顶而下和自底而上两部分组成。首先是自底而上的过程,在这个过程中,经过一些层时featuremap大小会产生变化,而不变的层被称为stage,我们需要在每个stage的最后一个层的输出抽取特征,通过这样的操作构成一个特征金字塔的结构;而自顶向下的实现则是利用了上采样操作来进行的。将上采样的结果与自底向上方法生成的对应的featuremap相融合。由于上采样会产生混叠效应,为了消除上采样的造成的混叠效应,还要将融合结果通过一个3*3的卷积核进行卷积。并令生成的featuremap与之前的一一对应,方便后续处理。1.4深度残差生成对抗网络模型目前,关于基于深度学习的图像处理效果较好的模型有DeblurGAN、SRN-DeblurNet、DeblurGAN-v2和EDVR模型。本文主要采用了DeblurGAN模型并结合了FPN框架在此基础上设计了深度残差网络,并与其他的模型训练结果做对比。下面主要介绍网络模型的结构和其中的重要结构。网络结构如下图:图4-51.1.1生成网络的构建生成网络是根据模糊图像生成恢复图像的部分。在生成网络之中,原始的模糊图像会被替换成噪声输入到网络之中。生成网络采用深度残差网络(Resnet),相比于一般的深度学习网络结构,由于残差模块的作用,深度残差网络可以让训练更深的网络,在图像处理上可以取得更高的效率。因此,本文的生成网络采用深度残差网络模型。如图所示:图4-6深度残差网络与一般的卷积神经网络相比,不同之处是加入了残差模块。ResNet可以对每层的输入都做一个reference,当进行学习时只学习这些有reference的输入的形成函数,即残差函数。加入残差函数后ResNet变得拥有更深的网络层数,相比于其他的网络模型更容易优化。由于本文训练用的清晰-模糊数据是成对的,因此使用残差网络进行学习二者之间的差异可以极大地提高效率。传统的残差模块结构如图:图4-7由于清晰-模糊两种图像数据之间比较接近,本文中使用的残差模块去除了BN模块,这样可以训练时的收敛速率。如图所示:图4-8使用残差网络可以优化原来的目标H(x)=F(x)+x,将目标变为F(x)=H(x)−x,其中x为这个结构的输入。改变训练目标为F(x)=H(x)−x,训练时使其大小训练到逼近于0,而不是训练到得到一个恒等映射,从而降低训练难度。1.1.2鉴别网络的构建鉴别网络是模型训练的重要部分,它主要用来判断生成器输出的数据为原始数据的概率。鉴别器可以看成是一个二分器,输出为0或1。鉴别网络的设计参考了马尔科夫判别器(PatchGAN)的设计。鉴别器完全是由卷积层组成的,输入是两张图片,输出的是一个n*n的矩阵。其中,矩阵的每一个数据都是来自原图像的一个patch。鉴别网络共有四个卷积层,前两层的卷积核设定为4*4,步进为2,第三层层设定卷积核为4*4,步进为1,第四层卷积核为1*1,步进为1,将每个patch的输出放入矩阵,最终的输出由矩阵的均值决定为“是”或者“否”。其中,每一层的感受域由公式*得到:input_size=(output_size−1)∗k_stride+k_size(4-5)其中,input_size为输出节点的感受域大小,k_stride为步进大小,k_size为每层的卷积核的大小。PatchGAN常用于图像处理相关的GAN之中,本文使用的鉴别网络模仿了该判别器的设计思路。1.1.3损失函数损失函数是衡量深度学习中两个网络训练好坏的重要标准,通常损失函数的定义主要有两部分损失构成,在训练过程中,生成网络尝试欺骗判别网络,判别网络尝试识别真伪。在这个过程中,也是损失不断减少的过程。通过两个损失函数,可以观察并引导训练的过程,当损失函数的训练趋于收敛时,网络的训练也就完成了。本文设计的模型的鉴别网络的损失函数为:D_loss=−λ在这个式子中,λ=0.001,E是取期望值,D(I)表示鉴别器的判断图片是否真实的概率,P(G(B))生成网络的损失包含两部分,分别是对抗损失和内容损失。其中,内容损失使用了感知损失而不是最小绝对偏差(MAE)或者最小平方误差(MEE),这是因为多数的实验证明,后两种损失函数会造成高频信息的丢失,这样的话不适合图像的去模糊处理。对抗损失的损失函数如下:LGAN=关于内容损失实验中有三种选择,分别是L1损失、L2损失和感知损失,下面分别介绍他们:L1损失又叫最小绝对偏差(MAE),两张不同的图片中包含许多像素,对应位置的像素点之间会有所偏差。如果将这个差值叫做L1距离,则L1损失计算的正是所有像素点的L1距离的平均值。L1损失的计算公式为:S=1L2损失又叫做最小平方误差(MEE),与L1类似,它也是通过计算两张图片相对应位置的像素点的距离的平均值。定义对应像素点的平方差为L2距离,则L2损失的计算公式为:S=1感知损失本质上也是L2损失,需要VGG网络的辅助,原理是通过VGG网络计算两张图片特征空间上的L2距离。定义如下:Lx=1训练过程采用的整体来说,生成网络的损失函数如下:G_loss=LGAN其中λ=100。训练过程中生成网络的结果就是我们的最终结果,因此,本文只观测了生成网络的损失函数。1.5实验结果及分析本章全部实验都是在pytorch环境下训练和调试模型。主要使用了MACOXS数据集和Gopro数据集进行训练。学习率设置

温馨提示

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

评论

0/150

提交评论