1. 引言
绘图与图像生成的问题一直以来都具有非常高的挑战性,由于建模困难,传统的训练模型在大规模数据的计算下变得极难求解。为了解决计算复杂和准确性问题,深度卷积生成网络 [1] (DCGAN)被提出。我们便使此深度卷积生成网络运行在服务器端进行AI训练与图像计算,以此来省去用户的算力,致使用户可在用户端实现弹指间获取自己心仪的图片。
在“互联网+”的迅速发展下,推进机器学习代替人工为大环境所需,且近年来“云服务”模式渐有取代单一有限制的本地模式 [2],所以我们探索设计这种服务器端计算,用户端上传需求下载成品的“云服务”模式绘图软件。希望通过努力,运用大数据信息网络,融合“互联网+”技术 [3],可以大大提高工作效率,降低绘图门槛与时间成本。
2. 应用设计
2.1. 项目需求分析
在我们的日常生活中某些任务可能会需要你进行手动绘图制作,但你没有手工绘图方面的专业技能,所谓一分难倒英雄汉,这时就需要有一个能够依据你的任务需求来自动绘制你所需图片的软件了,这样就可以大大减少你完成任务所需要时间,从而获得更高的效率 [4]。
2.2. 项目技术需求分析
“图自绘”应用的用户端开发环境采用:Android Studio + Android SDK + JDK 1.8。服务端开发环境采用MyEclipse + HTML。数据储存采用MySQL数据库。
2.3. 应用框架设计
本应用采用服务端–用户端–数据库结合的模式,最大限度的优化用户的体验,把数据计算和图片生成全部交由建设在云服务器的服务端来做 [5],用户端仅仅作为请求的发送和结果的接收,数据库用来存储用户的历史数据和算法机器人的数据训练存储。
2.4. 应用功能原理
本应用的实现功能原理是利用DCGAN(深度卷积对抗网络)技术对原有图片进行处理,使之成为符合用户需求的新图片,从而解决用户自己绘图的困扰。
2.4.1. DGGAN技术的介绍
DCGAN是继GAN (生成对抗网络)之后的一种比较好的改进,全称深度卷积对抗网络(Deep Convolutional Generative Adversarial Networks),它首次将卷积运算引入到生成式模型当中来做无监督的训练,利用卷积层强大的特征提取能力来提高GAN 的效果 [6]。
DCGAN技术相较于GAN技术有以下四个方面的特点:
1) 在判别器模型中使用带步幅的卷积代替池化层,在生成器模型中使用步长为四的反卷积完成从随机噪声到图片的生成过程。
2) 在网络结构中,除了生成器模型的输出层及其对应的判别器模型的输入层,其他层上都使用了批量归一化(Batch normalization),加入Batch normalization层这一操作解决了初始化差的问题,同时保住梯度传播到每一层,也能够防止生成器把所有的样本都收敛到同一个点。
3) 去除全连接层,直接使用卷积层连接生成器和判别器的输入层和输出层;使得模型的稳定性增加,但缺点是将模型的收敛程度变慢,需要进行多次训练。
4) 生成器的输出层使用Tanh(双切正切函数)激活函数,其余层均使用ReLU (线性整流函数);判别器的所有层使用leaky ReLU函数(图1)。
![](//html.hanspub.org/file/31-1542117x9_hanspub.png)
Figure 1. DCGAN generatormodel [1] p2
图1. DCGAN生成器模型 [1] p2
2.4.2. DCGAN在“图自绘”中的应用
在本应用中,为了得到更加逼真的图像,生成器G和鉴别器D需要各自选择自己的学习率(learning rate),以使G或者D的效果差别不会太大。这个过程十分缓慢,但是一旦找到合适的平衡点,就能很快的收敛,使用64 × 64分辨率的图像时,我们测得最佳的平衡点是鉴别器的学习率为0.0005,生成器学习率为0.0002,并且出现模型崩溃的比率也下降,以生成猫为例,最终得到如图2所示的一系列猫。再将得到的图片上传至服务器端中作为基数进行分类,方便下次进行迭代。
![](//html.hanspub.org/file/31-1542117x10_hanspub.png)
Figure 2. Cat model generated by DCGAN
图2. DCGAN生成的猫模型
本应用中,生成器的结构采用全连接层+反卷积层+反卷积层+反卷积层+反卷积层,具体实现如下:
第一层:全连接层,输出神经元个数为8 × 8 × 128 = 8192个,然后通过reshape函数生成8 × 8像素,最后用ReLU激活函数。
第二层:反卷积层,卷积核大小为[5, 5],步长为2,权重使用高斯分布,同时权重的初始化标准差stddev = 0.02,输出通道数64 × 4,后面接Batch Normalization(BN)层,最后使用ReLU激活函数。
第三层:反卷积层,参数与第二层一样,输出通道数为64 × 2,后面接Batch Normalization (BN)层,最后使用ReLU激活函数。
第四层:反卷积层,参数与第二层一样,输出通道数为64 × 1,后面接Batch Normalization (BN)层,最后使用ReLU激活函数。
第五层:反卷积层,输出通道数为3,后面接ReLU激活函数(没有Batch Normalization层)。
鉴别器的结构采用卷积层 + 卷积层 + 卷积层 + 卷积层 + 全连接层,具体实现如下:
第一层:卷积层,卷积核大小:[5, 5],权重初始化使用高斯分布,标准差为stddev = 0.02,输出的通道数为64 × 1,然后接LeakyRelu激活函数,没有BN层。
第二层:卷积层,参数与第一层一样,输出的通道数为64 × 2,使用BN层,接LeakyRelu激活函数。
第三层:卷积层,参数与第一层一样,输出的通道数为64 × 4,使用BN层,接LeakyRelu激活函数。
第四层:卷积层,参数与第一层一样,输出的通道数为64 × 8,使用BN层,接LeakyRelu激活函数。然后将第四层的输出通过reshape函数拉平。
第五层:全连接层,输出神经元个数1,卷积核大小:[5, 5],权重初始化使用高斯分布,标准差为stddev = 0.02。
3. “图自绘”应用功能模块设计
本应用涉及到用户的日常使用,为了简化用户的操作,我们对应用进行了功能模块划分。使得每一个模块都具有独特的功能并且是独立的个体,同时这些模块又能相互交叉使用 [7]。
3.1. 用户模块
1) 登录:如之前已注册,信息就已储存在后台数据库,这时可以输入账号,密码直接进入应用。
2) 注册:如用户之前未注册,登陆时点击注册按钮进入注册页面,依照提示输入账号,密码,手机号码,验证码,邮箱进行注册。注册完成后信息会自动储存在数据库中,用户以刚刚注册的账号密码完成第1)步操作即可成功登录。
3) 图片上传:用户根据需求上传所需的图片到服务器即可。
4) 图片下载:用户可在线预览服务器自动绘制出的图片,选择满意的图片下载即可。
3.2. 用户端–服务端交互模块
1) 用户端向服务端发送请求数据。
2) 服务端接收用户端数据,并将计算结果下发到用户端。
3) 用户端接收服务端结果数据。
3.3. 后台管理模块
1) 用户管理:增加/删除用户,修改用户信息,查看用户使用记录。
2) 系统管理:设置绘图频度/参数等,删除违规图片。
4. “图自绘”应用的实现
据上文功能模块的划分,对于“图自绘”应用的主要功能实现,给出详尽的逻辑流程图与功能实现图片进行分析。
4.1. 登录注册功能的实现
4.1.1. 逻辑流程分析
登录注册模块的逻辑分析如图3所示。
由图3可知,用户在使用本应用进行登录和注册时,分为三个部分:
1) 判断用户是否注册过账号,如果注册过直接登录,若没有注册过,则进入注册界面。
2) 已经注册过的用户在登录界面输入账户和密码进入主界面进行相关操作。
3) 未注册过的用户单击注册按钮进入注册页面,填写相关信息完成注册。
![](//html.hanspub.org/file/31-1542117x11_hanspub.png)
Figure 3. Login and registration module implementation process
图3. 登录注册模块实现流程
4.1.2. 界面设计
图自绘应用的登录界面如图4所示。
如果之前并未注册,那么需要单击注册按钮进入注册页面进行注册,注册界面如图5所示。
4.2. 提交图片功能的实现
4.2.1. 逻辑流程分析
提交图片功能模块流程如图6所示。
![](//html.hanspub.org/file/31-1542117x14_hanspub.png)
Figure 6. Submit picture function module process
图6. 提交图片功能模块流程
提交图片功能模块的实现主要分为两个部分:
1) 用户从主界面登入后会进入提交图片界面,从相册中选取图片进行提交。
2) 后台自动判断图片是否存在于数据库中,若存在则不进行操作,若不存在则将图片加入数据库中进行存储。
4.2.2. 界面设计
用户登入图自绘应用后进行图片提交后的界面如图7所示。
4.3. 图片自动绘制功能的实现
4.3.1. 逻辑流程分析
图片自动绘制功能实现模块如图8所示。
![](//html.hanspub.org/file/31-1542117x16_hanspub.png)
Figure 8. Implementation process of automatic picture drawing function
图8. 图片自动绘制功能实现流程
图片自动绘制功能模块的实现主要分为两个部分:
1) 后台接受用户传来的图片,并从数据库里的图片集中搜寻类似的图片。
2) 后台对找出类似的图片进行随机组合形成新的图片展示给用户。
4.3.2. 界面设计
图片自动绘制功能实现界面如图9所示。
![](//html.hanspub.org/file/31-1542117x17_hanspub.png)
Figure 9. The interface of automatic picture drawing function
图9. 图片自动绘制功能实现界面
4.4. 后台管理功能的实现
界面设计
管理员登入图自绘后台,对后台搜集的图片进行添加和删除操作,后台管理功能的实现界面如图10所示。
![](//html.hanspub.org/file/31-1542117x18_hanspub.png)
Figure 10. Background management function implementation interface
图10. 后台管理功能实现界面
5. 项目评价
5.1 项目创新特色
1) 轻量化应用设计模式
随着互联网技术的迅速发展与普及,轻量化应用与云应用模式将会成为未来发展的主流趋势。因此本应用采用了服务器端–用户端的设计模式,把复杂的计算任务交给了服务器,给用户提供了最为轻量便捷的使用体验与服务。
2) DCGAN技术应用创新
通过上文对此技术的介绍可知,此技术需要通过大量的计算与训练来提高图片的生成质量,对硬件的要求极高,这无疑是提高了应用使用的门槛。因此我们先让相关的技术与训练在服务端进行,在此过程中用户使用软件增加需求,服务端再进行需求实现,这样不仅优化了用户的实际使用体验,也能更好的使用用户的需求进行再训练,优化了软件性能与响应时间。
3) 互联网+以及大数据应用
经过日常使用发现,市面上很多相关图片生成绘制类软件大多是单机运行,即使用用户的算力和资源为用户服务。这些没有经过联网的应用往往具有时效性,不能及时更新紧跟用户需求。本项目通过互联网使应用接入服务器,可以让用户使用服务器的算力为自己服务,且用户在使用过程中的数据可以经过服务器进行再计算,通过大数据分析可以为用户提供更加精准的个性化服务,以达到前人栽树,后人乘凉的效果 [8]。
5.2. 项目总体评价
在近年来国家大力支持发展互联网技术的大环境下,本项目的研发有了重大的意义:由于采用了轻量化的设计,本项目省时省力可以任意地点任意时间使用,帮用户解决了时间,地点以及硬件方面的问题。同时用户在使用软件时,已经经过了服务器端的大量计算,因此用户获得往往是高质量的心仪图片,大量节省了用户的时间。
6. 总结
总体而言,本项目的研发与实现具有深远的影响及意义:应用的推出为特定人群解决了迫在眉睫的需求、采用了轻型软件开发方式,优化了用户的使用体验,大大降低了应用的资源占用与浪费,解决了部分用户的硬件门槛过低问题。在大数据和人工智能技术的加持下,本应用采用了用户–服务–数据三方结合的思路,让应用运行畅通无阻,数据交互便捷畅快 [9]。最后我们对应用的模块进行了细致划分,不浪费丝毫资源,实现了完整系统功能。相信随着后续工作的进行与展开,“图自绘”会是一个更加完美成熟并且具有更加远阔的前景。
致谢
本文在曹大有教授的悉心指导与严格要求下完成。在此向指导老师曹大有教授表示由衷的感谢和崇高的敬意。同时感谢汉江师范学院给我提供了优质的平台与资源供我学习进步,也感谢大学生创新创业训练项目委员会给予的基金支持。感谢参考文献中科研前辈们的无私奉献,让我得以站在巨人的肩膀上走的更远。
基金项目
汉江师范学院2020大学生创新创业训练计划项目国家级项目:利用DCGAN实现工程图片自动绘制(项目编号:202010518003)。