第7组 项目总体报告(赵玉杨)

项目分工和预期计划

谢廷宇:

分工:前后端交互与服务器代码编写及部署任务由谢廷宇负责。预期:明确用户操作流程、设计C/S模式下软件架构、分析与修改前后端代码、进行测试并修复漏洞。

刘璐瑶:

分工:本地环境配置、模型复现使用,以及前后端交互后的项目测试。预期:确定项目所需的各种库,模型代码成功复现使用,测试中考虑多种情况。

韩天悦:

选择并研究对此问题合适的算法,并修改相关代码使其能够正确运行。

赵玉杨:

在colab上装载训练数据以及跑相关代码产生训练完的模型。

赵峰:

分工:前端页面框架撰写,前端页面美化,预期:写出检测/成功/报错页面的框架

梁峻:

识别上传的文件是否为图片的功能,预期为只接收JPG png文件,其他格式弹出警告。

柳贺然:

协助实现前后端对接,写前端接口,预期为使前后端正常对接。

进度曲线:

第7组 项目总体报告(赵玉杨)

燃尽图:

第7组 项目总体报告(赵玉杨)

一张SCRUM会议照片:

第7组 项目总体报告(赵玉杨)

项目展示和结果展示:

工具:

  • colab ,pycharm ,pytorch+opencv+flask+flask_cors(anaconda)

基于Python 3.7.4,TensorFlow-GPU 1.14.0和Keras 2.2.4为环境,yolov3算法为训练算法。在谷歌云盘上放上项目代码和数据集,然后在colab上申请GPU,跑通相关代码并训练模型,通过20轮训练,最终输出last.h5文件,这就是训练出的yolov3模型。

  • Eclipse ,HTML ,Layui

采用Layui框架,精美简洁,开发高效,修改容易。

  • EOS ,引用微型的开发包Flask

    服务器部署于商用分布式应用设计的区块链操作系统EOS(Enterprise Operation System)。EOS通过创建区块链底层平台,支持多应用同时运行,为开发DApp提供底层模板;EOS无手续费,较以太坊而言普通受众群体更广泛;其上开发的dApp,按照开发者拥有的EOS的比例分配网络和计算资源。

测试设备:

一台计算机(本机及EOS网络环境);两台计算机,一部手机(局域网环境)。

网络环境:

本机;局域网内;EOS区块链网络。

检测照片:

测试图片种类包括戴口罩、不戴口罩、多人、戴墨镜、遮挡人脸、卡通人像等

测试内容:

客户通过浏览器访问口罩检测平台,上传待检测照片,查看服务器响应的检测结果。

测试结果:

整体效果较好,存在问题“当照片中的人用电脑等非口罩物品遮住嘴时,识别结果为佩戴口罩”,”人脸不完整且遮挡过多情况下,识别人脸范围不准确”,此外测试效果较准确。
第7组 项目总体报告(赵玉杨)

增加一些干扰,戴墨镜的小姐姐可正确识别! √
第7组 项目总体报告(赵玉杨)

多人识别效果,还不错! √
第7组 项目总体报告(赵玉杨)

第7组 项目总体报告(赵玉杨)

卡通多人可正确识别(๑•̀ㅂ•́)و✧! √

每个成员的过程体会:

谢廷宇:

  • 问题:在前后端交互期间,发现前端界面多为静态网页,所使用的层叠样式表及图片均为本地提供;负责神经网络模型训练的后端组比前端组进度略慢,因此无法采用快速原型模型进行迭代。
    解决:负责编写服务器代码的谢廷宇对前端代码进行修改,使其具备一定的动态性,能够根据服务器提供的不同参数而变化;由于模型训练慢,故对前期测试时服务器响应部分进行了调整。

  • 独立完成部分:学过web框架设计后,服务器的代码轻车熟路编写出来。总结经验:个人开发用Flask,团队开发选Django。与前端对接:前端组发来的代码后,我愣住了,界面简直是奇丑无比,我有种万念俱灰的感觉,心想我是不是应该自己写个前端代码,于是我就自己写了一段时间。后来意识到前端组只发了html文件,css跟jpg之类的还没传来,又跟他们要了全部文件,发现界面其实挺美观。所以说,组内成员应该多沟通免得出乌龙。与神经网络模型对接:对接前我的思路是,问问队友模型的输入函数是啥,输出函数是啥,分别写个借口函数就好。真正对接时,发现输出处理并非我预想的那样直接产生图片并保存在本地。于是我将main函数包含的代码逐个分析,编写与之类似的接口函数,一行行进行测试并纠错,最终完成了对接。服务器部署:之前有别组成员与我沟通,他们大致想部署在腾讯云或者阿里云上,然而我在这方面认知有限且毫无经验,因此建议直接部署在本地服务器。因为是区块链协会成员,多多少少了解些DApp部署流程,所以尝试与区块链结合。事实上,由于区块链的不可篡改性,已部署的服务器在运行过程中不可以直接修改,对代码的每次微小修改都必须重新部署,需要不少EOS币支撑,因此测试环节还是放在本地做比较好。

刘璐瑶:

  • 在本地环境配置的过程中,遇到过各种问题,解决方式是换镜像、先将所需文件下载到本地等。环境配置成功但运行时提示缺少库,解决方式是注意要activate所创建的虚拟环境。

  • 一开始,尽管通过搜集资料,知道了理论上实现的大体框架与模型,但仍旧非常迷茫,不懂的东西太多,colab传文件的速度太慢,时间成本太高,猫狗大战那个就试了很多次才成功……然后,尝试按照网上的教程在colab跑模型,这个阶段,网速太慢、问题太多,深感自己不能独立完成。之后,主要负责学习本地环境的配置,在电脑上成功配置项目所需的本地环境——pytorch+opencv,利用开源项目,在pycharm中复现使用,看到图片和摄像头成功检测结果很兴奋。最终,将其运用到前后端连接网页实现中,小组完整实现网页版人脸戴口罩识别检测。后期负责测试,考虑多种图片种类,搜集所需图片,进行检测。总之,经过这次项目,我明白自己的不足,对linux下指令的不熟知,各种知识欠缺,但同时,也有很多的收获,尤其是在配置环境方面。希望以后,在时间允许的条件下,付出更多的精力,去进一步学习这一方面的知识,并多动手实践。

韩天悦:

  • 通过这次学习,对于深度学习理论知识有了很好的实践,这才发现先前SRDP学习的知识在实际应用模型的时候会出现这么多意想不到的难关。还好有助教和小组同学的帮助,才让后端模型成功实现。之前没有选过类似的前后端对接课程,在软工课上有了新鲜的合作体验。每个人的角色分工与个性鲜明不同,沟通交流的过程中也积累了经验。

  • 一开始直接调包的时候,有很多报错需要手动修改路径名称。直接在colab跑的时候pytorch版本的图片打印功能不顺利,换用tensorflow版本解决。参考了一些csdn的保姆级教程,结合同学帮助,才在本地成功跑出模型。前后端接口没有经验,多亏了组内大佬carry。

赵玉杨:

  • 本次项目让我学到了有关深度学习的一些东西,包括一些相关的数学原理和代码该如何使用。深度学习是机器学习的一种,它的原理比较巧妙,用到了很多数学知识,经过数学推导得出算法。使用方面,实际上正确的执行一次训练的步骤并不多,训练模型之前需要跑的代码也不多,最大部分的时间花在上传训练集和训练上。但是,由于自己对Python和深度学习的不熟练,导致运行代码的过程实际上走了很多弯路,在摸索当中浪费了大量时间。幸好有石晓晨学长和吕亮学长的帮助,让我走的弯路少了很多,也让我们组及时完成了本次项目。
  • 往谷歌云盘上上传训练数据时,一开始上传的是包含所有图片和用xml文档显示结果的文件夹。由于这是外国网站,网速不稳定,结果导致有些图片和xml文件上传失败。若重新上传,谷歌云盘不会提示是否要覆盖原有文件,而是会再拷贝上去一份,导致有些代码运行的时候出错。后来改了方法,先压缩成zip文件,再上传整个压缩文件,这样虽然还是很慢,但是不会出现上传失败的情况,然后在colab当中用命令行解压缩并放进谷歌云盘,解决了文件缺失和重复的问题.

赵峰:

  • 比起实用技术,在这个项目中学会的更多是如何与人沟通和合作,结果是次要的,团队精神才是主要的。
  • 问题*:文件上传按钮不美观
    解决:调整css,将文件上传按钮透明化并重叠于按钮上方,使得上传按钮与页面风格统一。
    前端框架,使用技术,部署流程:前端采用Layui框架,精美简洁,开发高效,修改容易。
    过程体会:比起实用技术,在这个项目中学会的更多是如何与人沟通和合作,结果是次要的,团队精神才是主要的

梁峻:

  • 软件工程其实本身不难,但是其中很考验时间规划的能力和发现问题并及时学习相关技能的能力。只要时间规划合理了,发现了问题,能及时找到该学点啥来解决这个问题其实就已经成功了大部分了。最后再加上与小组成员合作的能力,一个项目就能完成得差不多了。

  • 问题:用户可能提交程序所能接受的图片格式以外的文件,最终导致程序崩溃;

  • 解决:在HTML层面给提交表单处设置默认可接受的文件格式,同时在图片提交的时候进行文件格式检测,如果不符合要求会不能提交并有提示。

柳贺然:

  • 学习了本地AIZOO开源项目图片及摄像头口罩识别检测和进一步了解yolov3,前端页面设计中出现了不少问题,但是在上网搜索以及看相关文章慢慢尝试解决后学到了很多新东西。

  • 数据集训练时间较长,对前后端如何进行匹配连接,如何配置环境在本地运行存在困难,对图像的实时捕获和检测的实现。通过询问助教,得到了符合选题的yolov3模型,并且助教演示教授了一些文件和命令行的作用。前端组找到了合适的样本,完善了功能设计。

附加题

刘璐瑶:

1、希望“你”不要被困难吓倒,希望“你”合理安排时间。
2、建议对软工项目提供更多学习途径与资料的指导。
3、对于未来,我希望自己可以更自律、自信一些。

谢廷宇:

1、希望学弟学妹选高峰老师的软件工程课。首先,老师本人风趣幽默,笑口常开,使人如坐春风;其次,我旁听了另外一位软工老师的小组展示,他们的展示没有问答和打分环节,十分枯燥无味,于是一个小时之后我就坐不住了,又溜回高峰老师的课堂。
2、希望老师继续保持小组展示中颇具趣味的问答环节。另外我觉得奖品可以改成物美价廉的小黄鸭,毕竟一组一个充电宝的话,要么是组长独吞,要么组员可能会大打出手。
3、这个学期的高嘤课,老师给我们小组安排电影任务时三天两头变更需求,我们苦不堪言。我希望以后在IT公司上班时,甲方不要也这样。孔子说己所不欲勿施于人,如果我以后当了甲方,我也尽量不去折腾乙方。

韩天悦:

1、友友们,提前准备工程任务,不要等到后续课程考试有时间冲突的时候再开始。
2、总体来讲软件工程体验特别好,只是频繁的汇报容易流于形式,可以适当减少次数。课程安排可以在平时章节里增加一点针对考试的实用题型。
3、期许可以早日迈入快乐养老。

柳贺然:

1、希望可以做好规划,重视团队合作,积累项目开发的经验。
2、无
3、希望能够取得进步,更加自律。

梁峻:

1、能干的活早干,别拖。省的到最后突击。
2、暂无
3、能考上美国研究生

赵峰:

1、建议一定要做好分工和任务分配,对项目提前有个预期,不要干一步是一步
2、希望能更多一些理论作业,现在的作业形式感觉和课堂教学联系太弱
3、希望能成为一个合格的码农

赵玉杨:

1、还是要提高效率,要不忘初心,知道自己该干什么;
2、无;
3、希望自己能保研到一个满意的学校,ACM比赛能取得满意的成绩,希望自己以后能够自信阳光地走下去。

上一篇:ULAM公链第六十六期工作总结


下一篇:Spring Boot读取配置文件中的数据