基于GAN的人脸图像生成系统_第1页
基于GAN的人脸图像生成系统_第2页
基于GAN的人脸图像生成系统_第3页
基于GAN的人脸图像生成系统_第4页
基于GAN的人脸图像生成系统_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

基于GAN的人脸图像生成系统前言近年来,随着计算机技术的快速发展,计算机计算能力的逐步提高等原因,让人工智能技术得到了非常高速的发展。在过去的十多年间,由于深度学习技术在许多领域取得了十分巨大的成果,使得有关于神经网络的研究能够再次崛起。在现如今关于人工智能的相关研究异常火热的环境下,Goodfellow等人提出的GAN作为一种崭新的深度学习模型,它的提出不仅满足了许多领域的需求,同时也为这些领域增添了新的活力,它可以说是近年来在无监督学习领域相当具有前景的方法之一。GAN目前在计算机视觉以及图像方面的研究与应用最为广泛,现在已经能够通过GAN生成诸如人脸以及数字等物体图像,能够实现对室内外场景的构建,给黑白的图像上色等等。不仅如此,在诸如语言处理、棋类比赛相关的程序当中以及许多问题的研究中也能看到GAN活跃的身影。现如今在人工智能领域中,对于数据是十分重视的,但如何能够获得大量的高质量的数据一直以来都是一个重大难题,在某些领域,一些现有的图像信息根本不足以满足得了我们的需求。通过对抗学习的方式进行训练是GAN的一大特点,它能够使生成的数据样本基本与真实的数据分布一致。通过使用GAN来进行人脸图像的生成,可以有助于我们更好的获取图像数据,生成细节更加丰富的图像,还可以用来解决标注数据不足时的学习问题。为了实现基于GAN的人脸图像生成系统,本次主要有两个部分,第一部分通过使用CelebA数据集进行训练,从而生成人脸面部图像,第二部分通过使用StarGan模型,实现通过指定人脸图像生成变化后的特定人脸图像,比如说发色的变化,性别的变化等。GAN生成人脸图像部分的主要内容如下:1.对数据集中的人脸图像进行预处理,去除多余的像素,并实现数据的输入。需要下载并从中提取数据,将图片保存,以及实现对数据集的一些基本操作。在数据输入方面,需要分别创建用于鉴别器以及生成器的输入。2.鉴别器网络和生成器网络的建立。建立的这两个网络就是GAN的核心,它使鉴别器网络和生成器网络两者间进行竞争。生成器将伪造的数据传给鉴别器,而鉴别器则主要判断预测自己收到的数据是真实的还是错误的。生成器被训练来欺骗鉴别器,它想要输出看起来尽可能接近真实数据的数据,鉴别器则需要经过训练以确定数据的真实与否。通过相互竞争,使两者各自不断提高自己的生成能力和鉴别能力,使两个网络更加的强大有效。3.计算鉴别器网络和生成器网络的损失并将结果显示输出,还要实现对两个网络的优化。使用StarGan生成特定人脸图像部分的实现主要是通过调用StarGan模型,StarGan是一种用一个框架就能实现多领域转换的这么一个算法,多个图像翻译任务同一个模型就能一起运行。通过运用StarGan来实现生成指定特征的人脸面部图像,并且能够通过使用pyqt5来实现操作界面,方便使用。通过以上这些实现的内容,将自己所学的专业基础知识到高级专业课程中的人工智能、软件工程等课程,以及自学的深度学习方面的相关知识进行了一次汇总,也是对这些知识的实际使用。

1问题定义问题定义主要是为了说明主要解决的问题的内容、问题性质的确认、项目目标的确认、工程的规模等软件总体上的一些约束和限制,并且要对用户所要求的软件的主要功能有一个具体的理解。1.1系统名称系统名称:基于GAN的人脸图像生成系统作用:本系统的主要功能大体可以分为两部分,第一部分主要是通过训练GAN来实现,生成并展示生成的人脸面部图像,预处理数据、生成器网络和鉴别器网络的实现以及各自的输入、两个网络损失的计算和优化。通过展示生成人脸面部的图像,直观的体现训练的效果。第二部分的运用StarGan模型的部分,用户可以自主选择要变换的图像,指定图像要进行的变换,例如发色、性别等,来生成特定的人脸图像。该系统除了能够单独使用,其他的图像生成系统还可以将其作为自己的一部分。1.2可行性研究阶段经费估算 本系统神经网络部分的训练需要支持cuda的显卡,还需要开发环境支持Python3.6、TensorFlow1.8等,训练部分可以选择使用网上云端机器来进行。在训练完成后,运行时则对GPU没有过多的要求。训练部分的机器的使用需要必要的经费支持。

2可行性研究 可行性研究它作为软件开发之前的一个必不可少的阶段,主要是为了确认上一个阶段所确定的一系列问题是否有可行的解决方法,这也是为了避免盲目的就对软件进行开发,相关人员需要进行一次简化的设计以及系统分析过程,研究项目的可行性,结合诸多方面的限制,探索研究这个软件产品是否有可行的方案,能否解决软件存在的问题,可行性分析主要的目的就在于它能够用最小的代价以一段相对理想的时间确定这个问题是否能够解决。 在本阶段的描述当中,通过运用系统的流程图,对现行系统的目标、系统的相关业务等进行了细致的描写,并从技术、经济等多个方面对本系统的可行性进行研究与分析。2.1系统目标 使用生成式对抗网络实现对于人脸面部图像的生成,并可以在一定程度上对人脸的特定部分进行修改,例如发色、性别等。本系统主要是为了实践生成式对抗网络模型,生成式对抗网络的独特的博弈对抗的思想相信将会对现有的深度学习模型的各个方面产生重要的影响。2.2可行性分析2.2.1可行性分析的目的 得到解决问题的具体解决方案并不是可行性分析的目的,它的主要目是研究与分析问题的解决是否可行以及是否有其必要性。因为在实际的开发过程中,会有许多的因素导致不能够在预期的资源限制和时间限制范围内解决问题,像是开发人员或者是用户对市场需求的不了解不充分、对需要技术把握的不够成熟、对进行开发的各种风险的预估计不够等等都可能导致这一结果。但是假如开发人员能够提前预知问题是否有一个合理的解决方案的话,那么就能提前终止对于项目的开发,尽可能的在一定程度上避免对人力资源、物力资源的过度浪费。2.2.2技术可行性 深度学习当中的有关神经网络方面的知识是本系统最主要运用的知识,得益于计算机现如今的计算能力的飞速提高和现有数据量的急剧增大,在很大程度上解决了神经网络本身的参数过多、训练难度过大等问题,从而使之能够被广泛应用在各个方面。GAN使用博弈对抗的思想运用神经网络进行训练,使其能够生成人脸的面部图像。实现本系统的主要编程语言为python,pycharm2018.2.2是主要的开发平台,在其中使用了许多python相关的数字处理的库,同时还需要使用TensorFlow1.8来进行神经网络部分内容的编程以及还使用了pyqt5来进行界面的设计。由于本系统的开发者已学习了与系统开发相关的基础知识,可以通过使用这些知识来对系统进行开发,因此,从系统的技术方面来看该系统的实现是可行的。2.2.3经济可行性 本系统的开发人员主要是为实践生成式对抗网络模型,为了训练神经网络,对使用计算机的性能有一定程度的要求,也可以通过租用云端服务器来进行解决,相关资料可以通过互联网来获取,因此,从实现本系统的经济方面的角度上来看是可行的。2.2.4操作可行性 本系统开发主要是用于学习研究,用户需求比较明确,对于使用本系统的开发人员来说,调研方便,可以查阅相关书籍也可请教老师以及相关人员。基于GAN实现的人脸生成系统的规模并不是很大,复杂程度也不是很高,StarGan虽然比较复杂但本系统是直接调用这个模型,所以在开发过程中遇到困难能够解决。开发本系统所用的算法现如今都比较成熟,也易于开发和维护。而对于使用本系统的用户来说,由于本系统的人机交互界面简洁,操作简单,并且对使用者没有任何相关专业的要求,所以容易使用。因此可以得出本系统在操作上的可行性。2.2.5法律可行性 人脸图像生成系统的设计与开发并不设计任何商业牟利,也不涉及版权以及合同相关的内容。开发过程中所有需要的技术资料以及开发环境全是开源公开的,不涉及任何的法律行为。本系统主要是用于个人学习,同时提高个人的综合开发能力,因此可以得出本系统在法律上的可行性。2.2.6可行性研究结论 通过以上对系统的各个可行性方面的研究,说明基于GAN的人脸图像生成系统在技术、经济、法律、操作等方面均可行,开发成本较为低廉,具有较为成熟的技术保障以及还有较为完善的设计的思路,因此,本系统的设计和开发是可行的。

3人脸图像生成系统需求分析 得到用户对最终系统的期望是软件需求分析方面的主要内容,通过对这些问题及环境进行理解与分析,需求分析为其设计相关功能,系统通过这些就能够建立对应的模型,从而对用户的需求进行完善,最终形成对需求规格的相关说明,以上这些活动就构成了需求分析阶段。 本阶段的最主要的任务就是需要对系统的一系列功能进行详细的描述和分析,并且能够对系统的各个模块的实现能有一个详细的设计。主要使用用例图以及与用例图相应的用例描述来对系统进行建模。通过用例图表现参与者和用例相关的关系,用户对于系统的需求也可以通过用例说明得到,从而能够对项目进行控制以及规划。需求分析阶段的首要的工作之一就是用例的获取。3.1人脸图像生成系统系统需求3.1.1功能需求 人脸图像生成系统的主要功能为:1.用户对本系统进行登录并选择相应的功能2.用户可查看通过GAN生成的人脸图像,也可以选择是否运用数据集重新进行训练,并查看训练结果 3.用户可选择想要通过StarGan处理的图片,并自行选择想要实现的相关变换,系统能将结果显示3.1.2环境需求 通过对人脸图像生成系统的相关功能进行的相关模拟以及技术分析,得到了如下的系统环境需求,以下提供的一些技术指标仅仅是作为基础的参考,具体的环境需求要以最终的系统使用为准。硬件环境:处理器:Pentium600MHz以上主频 内存:512MB以上 显存:32MB以上软件环境:操作系统::MicrosoftWindows7及以上 开发环境:Python3.6以及TensorFlow1.83.1.3可靠性需求 人脸图像生成系统因为需要对图像进行相应的处理、还需要对GAN进行训练等,所以需要系统能够保证在这一系列的操作过程中能够保持系统工作的正常稳定。同时由于系统内拥有一些操作选项,所以需要开发人员在开发的过程中能够注意人机交互界面的可靠性,若系统在运行过程中出现不可抗的一些意外,比如操作界面的崩溃等需要关闭系统,系统要能够具备一定程度的恢复能力。3.1.4安全保密性需求 人脸图像生成系统理论上进行开源,只要能够承诺不用于任何商业行为,任何用户都可以使用本系统,也可对本系统的代码等内容进行修改优化,因此,本系统无任何特殊的安全保密需求。3.1.5系统界面需求 人脸图像生成系统应当具有一个较为完整可靠的界面,系统的相关操作选择、结果显示灯人机交互行为能在界面上实现,方面用户的操作。 登录界面主要为了安全考虑,用户需要再登录界面上输入账号、密码以保证安全性,同时密码的显示形式需要以密文来显示,界面上还需要具有登录按钮。 功能选择界面需要有两个按钮能实现两种功能界面的跳转。 GAN生成人脸功能界面,需要能显示生成的图像,以及能够自行选择设置超参数,并且能够点击训练按钮进行训练。 StarGan生成特定人脸功能界面,需要能够自行选择从本地获取图片并显示,能够选择特征,以及能够生成图像。3.2人脸图像生成系统需求分析 本节对人脸图像生成系统进行相关的需求分析,主要使用面向对象的思想,将用例模型与用例描述相结合的方式对系统进行表现。3.2.1人脸图像生成系统用例模型 用例图的主要组成就是参与者和用例,以及边界和三者之间的关系,用例图可以被用于描述系统的相关功能,它向我们展现了参与者、用例以及他们之间的关系。人脸图像生成系统需求分析中使用的一些图符说明见表3-1。表3-1用例图图符Table3-1usecaseSymbols图符名称图符含义参与者参与参与者主要为了完成一个事件而与系统进行交互的主体,它并非特定的人或物,是用户相对于系统所扮演的角色。用例用例实例主要用例实例主要是指能够生成使特定参与者可见结果的一系列行为,通常使用一个用例来定义一组用例实例。包含包含包含关系主要指的是在系统内部的某个位置显式地合并了另一个用例的基用例的行为。扩展扩展扩展关系主要指的是基用例在某位置上隐式地合并了另一用例的行为。图3-1人脸图像生成系统用例图Figure3-1Usecasediagramoffaceimagegenerationsystem3.2.2人脸图像生成系统用例描述 本小节主要是通过对人脸图像生成系统中各用例进行详细说明,达到能够针对系统的功能对客户进行一定程度的沟通与交流,是开发者能够加深对目标系统的了解,同时也是为了在进行系统测试的时候能够对系统的功能指标进行考核。 本节通过运用用例描述对用例模型中的用例进行相应的文字说明,用例描述实际上也可以被认为是参与者与系统两者之间交互行为的说明。界面登录的用例描述用例编号:001用例名称:界面登录用例描述:用户对系统进行登录前置条件:系统运行正常后置条件:进入功能选择界面活动步骤:(1)运行本系统(2)输入账号以及密码(3)点击登录按钮进行登录图3-2界面登录的用例描述图Figure3-2Descriptionoftheusecaseoftheinterfacelogin功能选择的用例描述用例编号:002用例名称:功能选择用例描述:用户对系统功能进行选择前置条件:(1)系统运行正常(2)系统登录成功后置条件:进入相对应的功能界面活动步骤:点击相应的按钮进入不同功能的界面图3-3功能选择的用例描述图Figure3-3UsecasedescriptionoffunctionselectionGAN生成人脸的用例描述用例编号:003用例名称:GAN生成人脸用例描述:显示由GAN训练生成的人脸面部图像前置条件:(1)系统正常登录(2)功能选择正确后置条件:显示由GAN训练生成的人脸面部图像活动步骤:登录显示图像图3-4GAN生成人脸的用例描述图Figure3-4DescriptionoftheusecaseofGANgeneratingafaceGAN训练的用例描述用例编号:004用例名称:GAN训练用例描述:使用GAN对网络进行训练前置条件:进入GAN生成人脸的功能的界面后置条件:对网络进行训练活动步骤:点击训练按钮图3-5GAN训练的用例描述图Figure3-5DescriptionoftheusecaseofGANtraining显示生成图像的用例用例编号:005用例名称:显示生成的图像用例描述:获取生成测的图像信息并显示前置条件:GAN训练已完成后置条件:显示图像信息活动步骤:点击显示图像的按钮图3-6显示生成图像的用例描述图Figure3-6showsausecasedescriptionofthegeneratedimageStarGan生成人脸的用例描述用例编号:006用例名称:StarGan生成人脸用例描述:使用StarGan模型生成特定人脸图像前置条件:(1)系统运行正常(2)选择StarGan生成人脸的功能后置条件:在相应的区域显示生成的图像活动步骤:(1)运行此功能(2)用例005包含用例006、用例007图3-7StarGan生成人脸的用例描述Figure3-7UsecasedescriptionofStarGangeneratedface获取图像的用例描述用例编号:007用例名称:获取图像用例描述:从本地选择需要进行变化的图像前置条件:进入StarGan生成人脸的功能界面后置条件:在相应区域显示获得图像活动步骤:点击获取图像的按钮图3-8获取图像的用例描述图Figure3-8Usecasedescriptionimageforobtainingimages选定相关特征的用例描述用例编号:008用例名称:选定相关特征用例描述:选取想要变化的相关特征前置条件:(1)使用StarGan生成人脸图像功能界面正常(2)已获取图像后置条件:显示所选取的特征活动步骤:选取与特征相关的按钮图3-9选定相关特征的用例描述图Figure3-9Usecasedescriptionofselectedrelatedfeatures生成特定人脸图像的用例描述用例编号:009用例名称:生成特定人脸图像用例描述:根据选取特征生成特定人脸图像前置条件:(1)使用StarGan生成人脸图像功能界面正常(2)已获取图像(3)已选取相应特征后置条件:生成特定的人脸图像活动步骤:点击生成按钮图3-10生成特定人脸图像的用例描述图Figure3-10Usecasedescriptionforgeneratingaspecificfaceimage3.3系统活动图设计 将系统的动态方面作为系统建模时的参考,这就是活动图的主要形式之一,它主要强调了活动间控制流的流动,即使是并行的行为它也能够支持。活动图甚至在整个系统建模的过程中都能够被添加到任何建模元素中,以此来描述元素。 在本节中,将会从用户的角度对人脸生成系统的状态的变化进行详细的说明,方面用户明白本系统的活动切换流程。活动图图符如表3-2。表3-2活动图图符Table3-2Activitydiagramicon图符名称图符含义初始节点初始节点使用实心圆来进行表示,一般在一个子图中初始节点只能拥有一个。初始节点使用实心圆来进行表示,一般在一个子图中初始节点只能拥有一个。活动节点活动节点主要用来表示一个活动,它可以是原子的活动,也可以是进一步分解的一系列操作,需要将活动的名称写在圆角矩形的内部。活动节点主要用来表示一个活动,它可以是原子的活动,也可以是进一步分解的一系列操作,需要将活动的名称写在圆角矩形的内部。活动终点活动终点使用圆圈内再加实心圆来进行表示,在一个活动图中有可能存在多个活动终点。活动终点使用圆圈内再加实心圆来进行表示,在一个活动图中有可能存在多个活动终点。分叉节点分叉节点主要有一个转换用于进入,以及两个或多个转换用于离开,每个转换都可以被看作是一个独立的工作流。分叉节点主要有一个转换用于进入,以及两个或多个转换用于离开,每个转换都可以被看作是一个独立的工作流。汇合节点汇合节点是有一个转换用于离开以及两个或多个转换用于离开,只有当控制流都到达汇合节点后才可以进入下一个活动节点。汇合节点是有一个转换用于离开以及两个或多个转换用于离开,只有当控制流都到达汇合节点后才可以进入下一个活动节点。分支分支使用菱形来表示。在每个离开转换上都要有一个条件来表示进行转换满足的条件。分支使用菱形来表示。在每个离开转换上都要有一个条件来表示进行转换满足的条件。(1)界面登录用例的活动图用户在进入人脸生成系统后,需要首先对系统输入账号密码来进行登录以保证安全性,在点击登录按钮后,系统会检查账号密码正确与否。如果正确,则表明系统登录成功,如若错误,则说明登录失败,需要对账号或密码重新进行输入。图3-11界面登录用例的活动图Figure3-11Activitydiagramoftheinterfaceloginusecase(2)功能选择的活动图 用户在成功登陆系统之后,由于本系统功能主要分为两部分,所以需要对使用的功能进行选择,系统会根据点击按钮的的不同,进入不同的界面。图3-12功能选择用例的活动图Figure3-12Activitydiagramofthefunctionselectionusecase(3)GAN生成人脸用例的活动图 进入GAN生成人脸功能的界面后,可以对先前已经过训练生成的图像进行显示。图3-13GAN生成人脸用例的活动图Figure3-13ActivitydiagramoftheGANgeneratedfaceusecaseGAN训练用例的活动图进入该系统之后,可以选择是否重新训练网络,系统将会对GAN重新进行训练,并将训练的效果实时显示出来。图3-14GAN训练用例的活动图Figure3-14ActivitydiagramoftheGANtrainingusecase显示生成图像用例的活动图图3-15显示生成图像信息用例的活动图Figure3-15showstheactivitydiagramofthegeneratedimageinformationusecase(4)StarGan生成特定人脸用例的活动图 在选择由StarGan生成特定人脸的功能时,首先需要用户先选求要变换的图片,之后系统会根据用户所选取的特征运用StarGan对图像进行变化,最后生成用户所需要的图像。图3-16StarGan生成特定人脸用例的活动图Figure3-16ActivitydiagramofStarGantogenerateaspecificfaceusecase获取图像用例的活动图用户首先需要从本地选取想要变化的图像,若获取成功,获取图像用例会将其显示出来,失败则弹出错误提示信息。图3-17获取图像用例的活动图Figure3-17Gettheactivitydiagramoftheimageusecase选定相关特征的用例的活动图系统会根据用户的选择对图像进行处理,用户需要选择想要实现的特征变化图3-18选取相关特征用例的活动图Figure3-18Activitydiagramforselectingrelatedfeatureusecases生成特定人脸图像用例的活动图 在用户选定图像以及变化的特征之后,系统将会调用StarGan对图像进行处理图3-19生成特定人脸图像用例的活动图Figure3-19Activitydiagramforgeneratingaspecificfaceimageusecase

4系统分析 系统分析主要目的是为了在需求分析的基础之上能够对现行的系统进行进一步的详细调查,能够对现行系统具体的信息处理环节以及系统的业务内在逻辑进行一个细致的分析。 本章通过使用面向对象的分析方法,将人脸图像生成系统的对象、动态以及功能模型分别采用类图及其关联以及使用时序图、用例图等来进行相应的描述,也是为了能够为系统的设计与开发提供进一步的参考与指导。4.1人脸生成系统对象模型设计根据对本系统进行的分析,主要总结得出了以下对象模型:操作界面类:主要为了显示系统界面,方面使用操作;图像文件类:用于存储图像图像处理类:对图片进行读取、预处理等操作;数据集类:用于存储数据集;数据集处理类:主要对数据集进行操作,实现抽取数据等功能;人脸生成类:通过从指定位置的数据集中选取图像来对Gan进行训练,生成人脸面部图像;StarGan模型接口类:系统通过StarGan的接口实现对StarGan的调用,将选取的好的希望变化的图片导入StarGan,进行生成特定人脸的面部图像;图4-1人脸生成系统对象模型Figure4-1FaceGenerationSystemObjectModel4.4.1实体类分析实体对象的抽象就是实体类,描述具体的实体就是它的主要用途。它还被用来对相关的信息进行保存和更新,因此使实体类一直存在通常是非常需要的,可能在系统的整个生存期中实体类都存在。因此,实体类设计的是否完善对系统能否正确的完成预定目标具有十分重要的作用。 在人脸生成系统中,实体类主要有图像文件类、数据集类,用于存储相关实体信息,分别用于存储图像文件以及数据集文件,以便于系统在需要的时候进行快速的调用,获取需要的数据进行业务逻辑处理。图像文件类图像文件类的主要作用是存储从系统中读取的图片文件、从数据集中选取的图像,设计如下成员变量完成相应的任务。表4-1图像文件类成员变量Table4-1Imagefileclassmembervariables成员变量类型说明data_pathstring图像路径load_sizeint图像大小channelsint图像通道selected_attrsstring选取的特征train_datasetlist训练的图像train_dataset_labellist训练图像的标签test_datasetlist测试的图像test_dataset_labellist测试图像的标签数据集类这个数据集类主要用于GAN生成人脸功能模块,由于这个功能并不需要图像的的特征信息,故提取出来方便这个功能使用表4-2数据集成员变量Table4-2Datasetmembervariables成员变量类型说明database_namestring数据集名称data_fileslist数据集中的文件列表4.1.2边界类分析 对边界对象的抽象就是边界类,它的主要功能就是为了能够完成系统与参与者间的相互交互,对边界类进行相应的分析建模可以更加有效的帮助开发者识别出用户对界面的需求。操作界面类分析操作界面的主要作用是为了集成系统各个功能的操作选项以及显示,能够为用户提供一个更加方面的交互界面,能帮助用户更加准确、便捷的了解使用系统,有效的提高了系统的使用价值,本次主要设计了如下的成员变量以及相应的成员函数来完成对应的功能。表4-3操作界面类成员变量Table4-3Operationinterfaceclassmembervariables成员变量类型说明btnOkQPushButton确认键btnCancelQPushButton取消键btnGanQPushButton选择GAN功能键btnStarGanQPushButton选择StarGan功能键btnTrainQPushButton训练键btnDisplayQPushButton显示键btnReadImageQPushButton获取图像键btnprocessingQPushButton生成图像键textEditTextEdit显示损失信息graphQLabel显示图像控件line_batchsizeLineEdit批次line_zdimLineEdit噪声zline_lrLineEdit学习率line_betalLineEditAdam的动量项line_datasetLineEdit数据集位置表4-4操作界面类成员函数Table4-4Operationinterfaceclassmemberfunctions成员变量类型说明login()void登录clear()void清空账号密码gan_fun()void进入GAN功能界面stargan_fun()void进入StarGan功能界面btnTrain_clicked()voidGAN训练btnDisplay_clicked()void显示图像btnReadImage_clicked()void获取图像btnprocessing_clicked()void显示生成图像4.1.3控制类分析 控制类主要是对用例关于业务逻辑方面的实现方式进行相应的描述,经常能够被用来对用例的控制行为进行相应的建模设计,用例与控制类对象可能是一对多的关系,又或者是控制类的实体对象又与多个用例相对应,并没有一种固定的对应关系,要视情况而定。实体类和边界类控制下的业务逻辑可以被控制类有效的脱离,从而主要集中于业务逻辑的处理,高效的完成系统功能。在本系统中,控制类主要由数据集处理类、图像处理类、StarGan模型接口类、人脸生成类组成。图像处理类本系统图像处理类的作用主要将对图像进行的处理操作进行封装,使之能够方面的对图像进行操作,现设计如下的成员变量与成员函数。1)成员变量表4-5图像处理类成员变量Table4-5ImageProcessingClassMemberVariables成员变量类型说明data_pathstring图像路径load_sizeint图像大小channelsint图像通道selected_attrsstring选取的特征train_datasetlist训练的图像train_dataset_labellist训练图像的标签test_datasetlist测试的图像test_dataset_labellist测试图像的标签2)成员函数表4-6图像处理类成员函数Table4-6Imageprocessingclassmemberfunctions成员函数类型说明get_image()array从图像地址读取图像images_square_grid()Image将图像保存为方形网格preprocess()void对图像进行预处理save_images()void将图像存入指定位置(2)数据集处理类主要是针对训练GAN生成人脸来使用,用于对数据集的管理以及一些基础操作。成员变量表4-7数据集处理类成员变量Table4-7DatasetProcessingClassMemberVariables成员变量类型说明database_namestring数据集名称data_fileslist数据集中的文件列表成员函数表4-8数据集处理类成员函数Table4-8DataSetProcessingClassMemberFunctions成员变量类型说明download_extract()void下载并提取数据集get_batches()void从数据集中获取批量大小的数据(3)人脸生成类通过训练GAN网络生成相似的人脸面部图像,该部分主要是通过从训练集不断的抽取图像来进行训练鉴别器网络与生成器网络,最后能够生成相似的图像。成员变量表4-9人脸生成类成员函数Table4-9FaceGenerationClassMemberFunctions成员变量类型说明data_dirstring数据集地址batch_sizeint批量大小z_dimint噪声z的维度learning_ratefloat学习率betalfloatAdan的动量项epochsint批次celeba_datasetDateset数据集成员函数表4-10人脸生成类成员函数Table4-10FaceGenerationClassMemberFunctions成员变量类型说明model_input()tuple创造模型输入discriminator()tuple鉴别器网络generatoer()Tensor生成器网络model_loss()tuple获得鉴别器和生成器的网络model_opt()tuple获得优化操作show_generaor_output()void显示图像输出train()void训练GAN(4)StarGan模型接口类 StarGan是运用TensorFlow构成的模型,通过设立接口对其进行调用,可以更为高效的使用这个模型,通过StarGan可以使用户自行选择想要实现的特征,生成特定的人脸面部图像。成员变量表4-11StarGan模型接口类成员函数Table4-11StarGanModelInterfaceClassMemberFunctions成员变量类型说明sesssessionTensorFlow会话checkpoint_dirstringcheckpoint文件地址sample_dirstring样本地址result_dirstring结果地址dataset_namestring数据集名称dataset_pathstring数据集地址epochint要运行的批数iterationint训练的迭代次数batch_sizeint批量大小selected_attrsstringCelebA数据集的选定属性adv_weightfloatGAN的权重ldfloat梯度惩罚lrfloat学习率custom_labelint关于所选属性的自定义标签n_disint鉴别器层数img_sizeint图像大小img_chint图像通道2)成员函数表4-12StarGan模型接口类成员函数Table4-12StarGanModelInterfaceClassMemberFunctions成员变量类型说明generator()tensor生成器网络discriminator()tuple鉴别器网络gradient_penalty()tensor梯度惩罚build_model()void建立模型train()void网络训练save()voidcheckpoint文件保存load()boolcheckpoint文件加载test()void模型测试4.2人脸生成图像系统动态模型设计时序图主要是为了将对象之间的信息传递以及交互行为进行直观的显示。本节主要采用时序图来描述系统随着时间变化的行为,时序图图符如表4-11所示。表4-11时序图图符Table4-11Timingdiagramicons图符名称图符含义参与者生命线参与者生命线用于表示在时序图中参与交互操作的对象,下方的生命线表明在该时间内的用户会使存在的。参与者生命线用于表示在时序图中参与交互操作的对象,下方的生命线表明在该时间内的用户会使存在的。对象生命线对象生命线表示时序图中参于交互的对象,它不仅可能是某个原型化事物也可能是具体的某个事物,下方的生命线说明该对象在该时间内是存在的。对象生命线表示时序图中参于交互的对象,它不仅可能是某个原型化事物也可能是具体的某个事物,下方的生命线说明该对象在该时间内是存在的。激活激活用于说明对象正在进行某一活动,在不同对象的生命线间进行消息传递同时激活对象。激活用于说明对象正在进行某一活动,在不同对象的生命线间进行消息传递同时激活对象。消息消息主要是对象的行为,一个对象如果调用了其他对象,那就将这个行为称为消息的传递。消息主要是对象的行为,一个对象如果调用了其他对象,那就将这个行为称为消息的传递。返回信息返回信息表示从消息处接收信息并将其反馈给调用的对象。返回信息表示从消息处接收信息并将其反馈给调用的对象。条件判断指出了一种互斥行为主要在两个或以上消息序列之间的。(1)界面登录时序图图4-2界面登录时序图Figure4-2Interfacelogintimingdiagram(2)功能选择时序图图4-3功能选择时序图Figure4-3Functionselectiontimingdiagram(3)GAN生成人脸时序图图4-4GAN生成人脸时序图Figure4-4GANgeneratedfacetimingdiagram(4)StarGan生成特定人脸图像时序图图4-5StarGan生成特定人脸图像时序图Figure4-5StarGangeneratesaspecificfaceimagetimingchart4.3人脸生成系统功能模型设计 功能模型可以被直观的用来描述系统功能,它能够使得用户非常清晰的了解到系统的主要功能。本节主要针对系统功能进行相关的设计,通过展示人脸生成系统所有的功能,方便用户能够进一步了解本系统。 根据本系统的功能分析,人脸生成系统可以主要细分出以下部分。登录界面:通过此功能对系统进行登录;选择功能:通过此功能进行功能的选择;显示生成图像:通过此功能获取生成的图像信息并显示;GAN训练,通过此功能对GAN进行训练;获取图像:通过此功能获得需要的本地图像;选定相关特征:通过此功能选择想要变化的特征生成特定人脸图像:通过此功能经由StarGan人脸面部图像图4-6人脸生成系统功能模型Figure4-6Humanfacegenerationsystemfunctionmodel

5系统设计 将系统分析得到的结果与系统科学相关的思想方法进行结合,尽可能的实现能满足要求的目标系统,这个过程就叫做系统设计。在进行系统设计的时候,需要将内部设计与外部设计一起结合起来进行思考,需要从系统的输入、输出、功能、程序、环境等因素综合起来加以考虑,从而才能设计出整体最优的系统。5.1边界类设计 用户通过窗口上的各个控件和鼠标与人脸生成系统进行交互,系统窗口目前主要分为四个部分。图5-1登录界面Figure5-1Logininterface图5-2功能选择界面Figure5-2Functionselectioninterface图5-3GAN生成人脸功能Figure5-3GANgeneratesfacefunction图5-4StarGan生成人脸功能界面Figure5-4StarGangeneratedfacefunctioninterface5.2控制类设计(1)图像处理类 当用户在GAN生成人脸部分点击“显示图像”按钮时,图像处理类会从数据集中获取已通过GAN训练生成的图片信息并进行展示。在GAN训练部分时,图像处理类需要处理从数据集中选取的图像,只有在对图像进行预处理之后图像才会被运用于训练当中。图5-5图像处理类流程图Figure5-5ImageProcessingClassFlowchart数据集处理类数据集处理类主要是对使用的数据集进行处理,它将被应用于GAN的训练。首先需要先从网上下载所要使用的数据集,之后在GAN训练时,需要对数据集中的图像进行随机批次提取,数据集处理类主要被用于返回批量的数据,以方便GAN训练使用。图5-6数据集处理类流程图Figure56-DataSetProcessingClassFlowchart(3)人脸生成类 人脸生成类是通过对GAN网络进行训练,从而得到人脸面部图像,用户通过进入GAN生成人脸功能界面,对GAN进行训练从而得到人脸面部图像。之后,为了使图像能够在相应的控件上进行显示,图像处理类就要对图像进行相应的处理操作。图5-7人脸生成类流程图Figure5-7FaceGenerationClassFlowchart(4)StarGan模型接口类 当用户选择StarGan模型生成特定图像功能时,首先需要点击“获取图片”按钮选取想要变化的图像,之后再依次选取想要实现的特征变化,最后点击“生成图像”按钮实现图像的生成。图5-8StarGan模型接口类流程图Figure5-8StarGanModelInterfaceClassFlowchart5.3GAN生成人脸功能部分的结构设计5.3.1数据预处理数据预处理部分主要是对使用的图像进行处理。首先需要对使用的数据集进行下载,之后还要使用数据集处理类中的批处理函数来获取图像,并根据之后要设置的批大小为我们提供一个图像数组。为了结果能够更加符合预期,需要对图像进行适当的裁剪,去掉无用的像素,以便只显示人脸。还需要对图像进行标准化,使它们的值在-0.5到+0.5之间。最后,我们将图像缩小到28x28。图5-9图像预处理结果Figure5-9Imagepreprocessingresults5.3.2网络的输入 在开始定义两个网络之前,首先需要定义输入。这样做的目的是为了不使程序在训练时看起来很混乱。为此,使用TensorFlow占位符对真假输入以及学习率进行定义。输入的参数需要有图像的宽度、高度、通道数、以及噪声z的维度5.3.4鉴别器网络和生成器网络 鉴别器和生成器主要都采用的是卷积神经网络。卷积神经网络是现如今深度学习中的一个代表算法之一,它的深度学习架构是仿造生物的视知觉机制所构建的。卷积神经网络自提出以来,就拥有非常优秀的表现,目前已被广泛应用于各个领域当中。它的最大的特点就在于能够将网络的权值数量有效降低,网络模型的训练难度以及复杂度也同样减少,使它的权值共享和局部连接部分能够更加类似生物的视知觉神经网络。(1)鉴别器网络鉴别器网络试图区分真实和虚假的图像,也就是用于图像分类的卷积神经网络。鉴别器网络由四个卷积层组成。对于网络的每一层,首先将执行卷积,然后将执行batchnormalization调整激活值的分布,它能够使激活值拥有适当的广度,从而使得网络学习更快更准确,最后,将执行激活函数LeakyReLu。鉴别器网络采用的激活函数主要是LeakyReLu,函数式如下,f其中α只是个控制尺度的参数,通常很小。它的整体效果要比ReLu要好,收敛速度必sigmoid快,计算十分简单有效,且不会产生过拟合。鉴别器的整体与部分网络结构如下:图5-10鉴别器网络结构Figure5-10Networkdiagramofthediscriminator图5-11鉴别器卷积层的第一层结构示意图Figure5-11Schematicdiagramofthefirstlayerstructureofthediscriminatorconvolutionlayer 在第一层卷积层中采用了64个5*5*3大小的卷积核,使用步长为2对28*28*3大小的图像进行卷积计算,使用激活函数LeakyReLu,最后得到14*14*64的特征图。图5-12鉴别器卷积层的第二层结构示意图Figure5-12Schematicdiagramofthesecondlayerstructureofthediscriminatorconvolutionlayer 在第二层卷积层中采用了128个5*5*64大小的卷积核,使用步长为2对第一次卷积计算得到的14*14*64大小的特征图进行卷积计算,得到7*7*128的特征图,之后使用batchnormalization调整激活值,接着使用激活函数LeakyReLu,最后得到7*7*128的特征图。图5-13鉴别器卷积层的第三层结构示意图Figure5-13Schematicdiagramofthethirdlayerstructureofthediscriminatorconvolutionlayer 在第三层卷积层中采用了256个5*5*64大小的卷积核,使用步长为1对第二次卷积计算得到的7*7*128大小的特征图进行卷积计算,得到4*4*256的特征图,之后使用batchnormalization调整激活值,接着使用激活函数LeakyReLu,最后得到4*4*256的特征图。图5-14鉴别器的输出Figure5-14Outputofthediscriminator 在第三层的卷积层中进行卷积计算后,将4*4*256的特征图进行reshape,即对其进行一维化,之后在连接全连接层,输出后使用激活函数sigmoid,得到鉴别器的输出结果(2)生成器网络生成器网络的方式与鉴别器正好不同,它试图去愚弄鉴别器。该网络由四个反卷积层组成。首先,我们需要先将输入通过全连接层变换维度,然后reshape,之后,将其输入到去卷积层。每个反卷积层执行反卷积,然后执行batchnormalization调整激活值和使用激活函数LeakyReLu。最后,我们返回tanh激活函数。生成器网络整体和部分网络结构如下:图5-15生成器网络结构图Figure5-15Generatornetworkstructure图5-16生成器输入层Figure5-16Generatorinputlayer 生成器网络在第一层输入层采用全连接层,生成7*7*512units图5-17生成器卷积层输入Figure5-17GeneratorConvolutionInput 将全连接层得到的数据reshape,之后,执行batchnormalization调整激活值和使用激活函数LeakyReLu,得到7*7*512的特征图。图5-18生成器反卷积层的第一层结构Figure5-18Thefirstlayerstructureofthegeneratordeconvolutionlayer在第一层反卷积层中采用了256个5*5*256大小的卷积核,使用步长为2对反卷积输入得到的7*7*512大小的特征图进行反卷积计算,得到14*14*256的特征图,之后使用batchnormalization调整激活值,接着使用激活函数LeakyReLu,最后得到14*14*256的特征图。图5-19生成器反卷积层的第二层结构Figure5-19Layer2structureofthegeneratordeconvolutionlayer在第二层反卷积层中采用了128个5*5*128大小的卷积核,使用步长为2对反卷积输入得到的14*14*512大小的特征图进行反卷积计算,得到28*28*256的特征图,之后使用batchnormalization调整激活值,接着使用激活函数LeakyReLu,最后得到28*28*128的特征图。图5-20生成器反卷积层的第三层结构Figure5-20Layer3structureofthegeneratordeconvolutionlayer在第三层反卷积层中采用了3个5*5*3大小的卷积核,使用步长为2对反卷积输入得到的28*28*128大小的特征图进行反卷积计算,得到28*28*3的特征图,之后使用激活函数tanh,最后输出得到28*28*3的图像。5.3.5损失函数需要主要定义三个损失:生成器的损失,使用真实图像时鉴别器的损失以及使用假图像时鉴别器的损失,鉴别器的损失不仅仅是单一的损失,对于鉴别器来说,总损失是假图像和实际图像损失的总和。损失将tf.nn.sigmoid_cross_entropy_with_logits取得,它是TensorFlow中与sigmoid搭配使用交叉熵损失函数,再将其封装在tf.reduce_mean以获得批处理中所有图像的均值。特别对于鉴别器的损失来说,需要使用标签平滑来更好的计算。因为对于鉴别器,损失由两部分,同时又希望能够在其鉴别出真图像时输出1,假图像时输出0,所以在计算损失时,将假图像的logit与全零标签一起使用,真图像则与全一标签一起使用。5.3.6优化 对于模型的优化,主要使用Adam算法,使用了TensorFlow中的AdamOptimizer优化器。首先,需要得到所有可训练的变量,由于在之前已经对变量以命名方式进行区分,例如生成器以“generator”开头,鉴别器以“discriminator”开头。之后,将获取的变量列表分为两部分,一个用于生成器变量,另一个则用于鉴别器变量。之后传递给minimize方法中的var_list,从而使得优化器只对var_list中的变量进行更新。最后,使用AdamOptimizer单独创建网络创建优化器。5.4StarGan模型 StarGan实现了多领域转换的问题,它能够十分有效的对图像进行训练。它的网络结构主要是星型结构,从图5-20可以清楚的看出,通常情况下,多对多的结构是十分复杂的,而StarGan只需要使用一个G就可以学习所有领域的转换。((a)Cross-domainmodels2143G21G12G41G14G32G23G34G4321543b)(StarGAN图5-21StarGan模型框架Figure5-21StarGanModelFramework 为了让生成网络能够拥有多个领域转换的能力,需要对通常的网络进行变换。例如,需要在生成器网络中加入目标领域的有关信息;鉴别器网络不仅需要具有原先判断图像真实性的功能,还需要能够对图像的类别给出判断等等。以下是生成器和鉴别器的训练图。图5-22StarGan训练Figure5-22StarGanTraining关于StarGan模型,更详细的部分见附录B。

6编码 编码是将软件设计得到的一系列成果编译成能够使用某种程序设计语言来进行书写的程序,它作为软件工程中的一个重要阶段,编码本身也是使系统设计进一步具体的一种方法,所以说,软件设计的质量很大程度上能够影响程序的质量。同时,程序本身也会受到程序设计语言以及编码风格采用的不同而产生很大的影响。6.1编码工具的选择(1)人脸生成系统开发工具选择 本系统主要使用PyCharm2018来进行开发,人机交互界面主要是采用PyQt5框架,同时在对图像进行操作时主要使用的是python的图形处理库PIL(PythonImagingLibrary),系统开发环境如下: PyCharm是一款由JetBrains开发的PythonIDE,它具有许多能够帮助开发者在使用Python开发过程中有效提升效率的系列工具,像是单元测试、语法的高亮、程序调试等许多内容。不仅如此,PyCharm还提供了许多高级功能能够支持专业Web开发,用来专门针对Django框架。 PyQt5作为一个GUI扩展,它是专门面向Python提供的,Qt本身是目前所使用的最为强大的GUI库之一,它还将Python与Qt库进行了一次完美的融合,它跨平台的特性也让它的应用范围更加的广泛。PyQt作为拥有高性能的GUI控件集,能够运用Qt成熟的IDE进行操作界面的设计,同时提供了多种多样的窗口控件。不仅如此,它还提供了一套完整的应用程序接口专门为了开发者,这就使得开发者可以轻松利用Python实现所有Qt能做的事。 PIL(PythonImagingLibrary)作为图像处理库,它支持许多文件格式的特性能够对开发人员产生非常大的帮助;同时,它强大的图像和图形处理能力也能为开发人员提供方便。(2)人脸生成模型训练工具选择 本次的人脸生成模型的开发与设计主要是基于深度学习,采用TensorFlow作为深度学习框架,采用PyCharm2018作为模型训练部分的开发环境。 TensorFlow是谷歌公司开发的一款深度学习工具,它能够很好的支持深度学习的各种各样的算法,而且并不仅仅局限于深度学习方面。TensorFlow目前已经被广泛应用于谷歌的各类产品当中,语音搜索、翻译、YouTube、图片等等。TensorFlow的广泛应用已经受到了学术界、工业界的大量关注,同时也有大量的科技公司加入其中。6.2变量及函数命名规则 本系统主要使用的命名规则是“驼峰命名法”,混合大小写字母来构成相应的变量和函数名,尽可能的使命名做到简洁明了,使人易懂。类名的首字母使用大写,类名如果由多个单词组成,则将之后单词的首字母全都使用大写。变量名的首字母则采用小写字母,若有多个单词则运用下划线来划分。函数的命名规则也与类名类似,尽可能的使函数直接易懂,方便后续开发人员的使用。6.3人脸生成模型的训练(1)数据集的获取 本系统的数据集主要采用的是香港中文大学的开放数据集CelebA。在这个数据集当中包含了10177个名人身份的202599张图片,这些图像对于本系统的训练来说十分的有帮助。在GAN生成人脸图像的功能当中,由于只需利用人脸的图像来进行训练,所以还需要对图像进行一些处理。利用PIL对图片进行裁剪,删除大多数不属于人脸部分的像素,之后再利用双线性差值对图像进行缩放,方便训练。由于本系统还使用了StarGan模型,所以在训练的过程中还需要图像相关的属性信息,下面便是图像的属性信息列表。图6-1图像属性列表Figure6-1Imageattributelist(2)TensorFlow网络的构建根据已设计好的人脸生成模型的网络结构,利用Python导入TensorFlow函数库,利用TensorFlow自带的卷积、全连接、归一化等函数编写GAN网络。具体网络的如何构建可以查看本文5.3人脸生成模型网络结构设计这部分的内容。(3)参数配置 ①GAN生成人脸功能部分的超参数如下:batch_size=32 #批量大小z_dim=100 #噪声z的维度learning_rate=0.0002 #学习率betal=0.5 #Adam的动量项 ②StarGan生成人脸功能部分的超参数如下: batch_size=16 #批量大小 lr=0.0001 #学习率 ld=10.0 #梯度惩罚项lambda adv_weight=1 #GAN的权重 n_res=6 #残差块数量 n_dis=6 #鉴别器层数 6.4程序清单 主要程序代码见附录C

7测试设计 测试并不是为了说明程序的正确与否,而是为了发现程序在执行过程中产生的错误。从开发人员的角度上来说,就是为了证明软件不存在错误,软件能够正常的运行,实现用户的要求。7.1系统测试的基本原则 为了能够对系统更加有效的进行测试,以及为了能够使用有效的测试方法,本系统采用了如下的测试准则: (1)用户的需求必须要被测试满足,程序无法满足用户的需求对用户来说就是最为严重的错误。 (2)测试计划在测试开始之前就应该要被设计提出。 (3)Pareto原理在软件测试中能够进行相应的应用。它主要表达了这么一个观点,程序中80%的错误有可能由程序中20%的模块所产生。这个原理的主要目的就在于对其中可疑的模块进行完整的测试。 (4)测试的规模要逐渐变大。首先由小模块开始,先对单个程序模块进行测试;之后模块逐渐变大,重点进行转移,最后,就是在整个系统中进行查找。 (5)穷举测试是无法实现的。因为它需要对所有的运行的路径都进行检查,由此可以得出,即使是一个规模很小的程序,但若将所有运行路径进行排列,需要运行的路径也会变得非常的多。并且在测试过程中难免会受到各种资源的束缚,不可能对所有可能的路径都进行测试。所以,使用软件测试无法说明程序没有错误。可是,可以通过提高程序的可靠性,对测试方案进行详细的相关设计,以及使程序的逻辑能够被全面的覆盖来实现。 (6)为了能够使测试达到令人满意的最优结果,程序的测试最好由独立的人员来进行。 (7)对测试的程度要拿捏得当,要选取一个平衡点,无论是充分还是不充分都对资源进行了浪费,同样都是不负责任的表现。7.2系统测试的基本方法 测试的基本方法主要分为两种,一种首先需要测试者先对产品具有的功能进行了解,之后通过测试来对各个功能进行检验,检查是否能正常使用各个功能;另一种则需要首先了解产品的内部工作过程,之后通过规则说明书的相关规定来对产品的内部动作进行检验。前者被称为黑盒测试,后者则是白盒测试。 在软件测试中,所谓的黑盒测试就是把程序看作是一个黑盒子,丝毫不关心对程序的内部结构以及程序的处理过程。这就说明,对程序的接口进行的测试就是黑盒测试测试的主要部分,它检查程序是否能够正确的接收以及输出数据,在程序运行时对外部信息的完整性能否保持。 白盒测试则与黑盒测试完全不同,它相当于把整个程序放在透明的白盒子中,这就要求测试人员不仅仅只是对程序的结构熟悉还要对处理算法十分了解。在进行测试的过程中,依照软件设计说明书中的相关说明严格检查程序内部细节,专门设计测试用例给特定的条件使用,还要使测试软件的逻辑路径得到充分的覆盖,从而才能够得出最后的测试结果。7.3人脸生成系统测试方案 黑盒测试是本测试单元主要采用的测试方式。通过使用它来检查程序是否正确的对数据进行输入输出、是否能够正常的使用功能、并且使外部信息的完整性在运行时能够否得到保持。登录功能测试表7-1登录功能测试Table7-1Loginfunctiontest测试功能:登录功能测试目的:测试系统是否能够正常的登录测试设计:(1)在登录界面输入账号密码(2)点击登录按钮预期结果:成功登录人脸生成系统,界面跳转到功能选择界面;登录失败则需要弹出错误信息进行提示测试结论:功能正常图7-1登录功能测试Figure7-1Loginfunctiontest(2)功能选择功能测试表7-2功能选择功能测试Table7-2Functionselectionfunctiontest测试功能:功能选择功能测试目的:测试系统是否能够正常执行功能选择测试设计:(1)选择GAN生成人脸功能(2)选择StarGan生成特定人脸图像功能预期结果:界面正常跳转到选择的功能界面测试结论:功能正常图7-2功能选择功能测试Figure7-2Functionselectionfunctiontest(3)GAN训练功能测试表7-3GAN训练功能测试Table7-3GANTrainingFunctionTest测试功能:GAN训练功能测试目的

温馨提示

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

最新文档

评论

0/150

提交评论