选题简介

这次我们做的是一个人脸对比并返回相似度的网页,部署在Linux的环境下。我们选题的原因是在实验七学习到了一些有关于人脸识别的知识,再加上之前个人实验中学习的知识,包括python、mysql、nginx容器的使用,所以我们打算综合这些知识做一个网页。

设计与使用的容器

设计

用flask结构写前后端交互,然后将各个文件分别部署到对应的容器内

用到的容器

首先分别拉取nginx、mysql和python的镜像,然后在此基础上分别构建nginx、mysql和python的容器。然后将之前编写好的html界面放入nginx容器中,在python容器中导入所需要的库,将py文件放入python容器中,在mysql容器中将数据库建立。

图片对比代码

def load_and_align_data(image_paths, image_size, margin, gpu_memory_fraction):

minsize = 20 # minimum size of face

threshold = [ 0.6, 0.7, 0.7 ] # three steps's threshold

factor = 0.709 # scale factor

print('Creating networks and loading parameters')

with tf.Graph().as_default():

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=gpu_memory_fraction)

sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options, log_device_placement=False))

with sess.as_default():

pnet, rnet, onet = align.detect_face.create_mtcnn(sess, None)

tmp_image_paths=copy.copy(image_paths)

img_list = []

for image in tmp_image_paths:

img = imageio.imread(os.path.expanduser(image), pilmode='RGB')

img_size = np.asarray(img.shape)[0:2]

bounding_boxes, _ = align.detect_face.detect_face(img, minsize, pnet, rnet, onet, threshold, factor)

if len(bounding_boxes) < 1:

image_paths.remove(image)

print("can't detect face, remove ", image)

continue

det = np.squeeze(bounding_boxes[0,0:4])

bb = np.zeros(4, dtype=np.int32)

bb[0] = np.maximum(det[0]-margin/2, 0)

bb[1] = np.maximum(det[1]-margin/2, 0)

bb[2] = np.minimum(det[2]+margin/2, img_size[1])

bb[3] = np.minimum(det[3]+margin/2, img_size[0])

cropped = img[bb[1]:bb[3],bb[0]:bb[2],:]

aligned = misc.imresize(cropped, (image_size, image_size), interp='bilinear')

prewhitened = facenet.prewhiten(aligned)

img_list.append(prewhitened)

images = np.stack(img_list)

return images

运行结果

整个项目AI:

子文件1:数据库MySQL

MySQL的dockerfile:

Setup.sh(容器启动时执行的文件):

子文件2:Python

Python的dockerfile:

需要装载的第三方库的相关文件:Requirement.txt

子文件3:Nginx

Nginx的dockerfile:

Nginx的default.conf:

映射的相关html文件:

本次实验相关镜像文件:

运行时的相关容器:

运行时的默认界面,本次实验实现的两个功能,功能一……

功能一:人脸对比

功能二:人脸搜索

Mysql内的相关内容:

最终分工+贡献比

学号

姓名

分工

贡献比

031702340

张逸杰

负责后端代码的编写,数据库的构建,处理部署过程中出现的题

30%

031702331

杨锦镔

前端界面的编写,前后端数据通信问题的处理,处理部署过程中出现的题

30%

031702341

黄彬煌

负责部署微服务,以及处理部署过程中出现的问题

40%

总结

张逸杰:

首先是对代码,因为自己没有怎么学习过机器学习的内容。所以即使是在facenet提供的开源代码上进行修改,也是感觉到比较困难。中途遇到了很多的问题,比如:存放测试模型用绝对路径就无法运行,只能用相对路径;计算到欧式距离以后不知道该怎么转化为人脸相似度;在pycharm的terminal和Linux的terminal的环境不同导致要输入执行的指令也不同的问题。在这次实验之后,我真的是对docker有了进一步的认识,对镜像,容器的构建过程以及运行过程的认识都有了提升。

黄彬煌:

这一次实验收获比较大的方面主要是在于更加熟悉docker的部署,以及Flask框架的运用。由于一开始不知道选题实际上相当于是要占据一周的时间,所以一开始还是比较悠哉悠哉,打算先准备完硬件实践课的考试再来做,考完试后才发现实际上只剩下一周多,当时就比较茫然了。然后开始和小组成员拼上差不多一周的除去吃饭睡觉的时间来攻克最后的大作业。整个过程在一开始是先找一份能够在本地上跑的开源代码,差不多符合我们想要的功能,然后再去解读这一个代码大概的思路过程,改成我们想要的代码。幸运的是,在这个过程找到的感觉ok的第三份代码成功在本地上跑了起来(前两份”bugs”调不过来,实在尽力了),期间解决了部分包的难下载以及版本兼容问题。在得到可用的代码后,便开始想说在本地先把整个项目运行起来,再部署到docker容器中。接下来就是前端代码的编写,flask框架的搭建以及后端和数据库的连接,顺带复习了数据库的相关知识。部署到容器前,我们翻了前几次博客的内容,根据自己当前的项目,想着是用Nginx+Python+MySQL的框架来完成作业。使用Nginx设定一个端口,通过其能够访问写好的前端代码,前后端数据通过Ajax来实现传输。期间遇到一个卡了很久的问题就是Ajax的URL到底怎么填,在docker上运行和本地太不一样了,其实说到底还是没能比较彻底的掌握相关知识。最终是发觉可以用容器的IP,一开始并不是很清楚关于容器IP的相关知识,导致一直有点晕乎。直到后来可以用后,再想起第五次作业python要连接MySQL时就是用”sudo docker inspect 容器ID”来查看MySQL容器的IP,这才恍然,但在搭载好的第二天有个报错是”address error”,查看相关IP内容后,发觉了docker容器的IP其实是在”172.17.0.0”网段的,根据先开启的先赋予,所以一个容器的IP实际上是可变的。后来想的办法是我们项目建立的三个容器要按照一定的顺序开启,虽然不是根本之法,但香。之后就是一点一点完善整个作业,虽然到最后似乎还是有点简陋,但是个人觉得中间”loading”这一点子和加载动画都蛮不错的。最后就是三人行,合作太愉快了。

杨锦镔:

本次大作业实验,我们没有运用树莓派,而是采用了在linux上的docker进行实验,在这次实验中,我主要负责前端代码的编写,以及前后端数据通信问题的处理。虽然本次实验的核心不是在我的电脑上进行部署,但每次作业时,我们组都进行了屏幕分享,视频等方式进行交流、沟通、探讨。进行库的安装、网上找开运代码的本地运行、容器的部署等遇到各种问题时,一起想办法解决,也起到了一个相互促进,相互学习的效果。本次实验使我对docker容器的部署有了更加深入的了解,当然也涉猎了人工智能如facenet等方面的知识,收获颇丰。

MySQL 大作业实训考试题_2020系统综合实践 期末大作业 15组相关推荐

  1. C语言贪吃蛇大作战实训心得,在《贪吃蛇大作战》中感悟一些道理

    最近很火(严格说应该是前段时间开始很火).这种诺基亚时代的玩法,跟其他旧IP新作一样,通过平台移植和改良,通常很火.涉及的玩家感情旧回忆那些就不说了.还有盈利模式单一,玩到最后通盘只有自己大蛇的寂寞. ...

  2. 2021大二实训part02

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 2021大二实训part02 7.22 上午 名词解释 搭建 ...

  3. 2021大二实训part01

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 2021大二实训part01 7.21 上午 企业介绍 老师 ...

  4. web前端大三实训网页设计:餐饮网站设计——烧烤美食山庄(7个页面) HTML+CSS+JavaScript

    web前端大三实训网页设计:餐饮网站设计--烧烤美食山庄(7个页面) HTML+CSS+JavaScript 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从 ...

  5. 【学习笔记】大三集中实训做的一个微信小程序之点餐系统(静态页面不包含java后台逻辑)

    点餐系统 注:大三集中实训的时候由于没有什么经验,只实现了静态页面,但微信小程序开发文档里面所有的功能差不多都实现(视频的上传与下载以及登录等等)所以在这里记录自己的学习笔记 目录 **点餐系统** ...

  6. 实训项目计算机基础知识实训报告,计算机应用基础(本)形考作业实训2学习实训报告.docx...

    <计算机应用基础(本)形考作业实训2学习实训报告.docx>由会员分享,提供在线免费全文阅读可下载,此文档格式为docx,更多相关<计算机应用基础(本)形考作业实训2学习实训报告.d ...

  7. 产教融合 |2021年度校企协同育人实训班 重庆理工大学重庆芝诺大数据有限公司...

    6月7日上午,2021年度校企协同育人实训班重庆理工大学&重庆芝诺大数据有限公司开班仪式在大渡口区移动互联网产业园隆重举行.本次实训对象为重庆理工大学金融数学专业学生. 重庆芝诺大数据有限公司 ...

  8. HTML5+CSS大作业——个人网页(6页) 网页制作期末大作业成品

    HTML5+CSS大作业--个人网页(6页) 网页制作期末大作业成品 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. 动漫. 明 ...

  9. HTML5期末大作业:在线电影网站设计——我不是药神电影介绍(4页) HTML+CSS+JavaScript 大二实训大作业HTML源码

    HTML5期末大作业:在线电影网站设计--我不是药神电影介绍(4页) HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作成品 常见网页设计作 ...

最新文章

  1. 【控制】《自动控制原理》胡寿松老师-第10章-动态系统的最优控制方法
  2. springboot 按钮权限验证_SpringBoot中实现Shiro控制ThymeLeaf界面按钮级权限控制
  3. Fedora 17 Beta is declared GOLD.
  4. ThinkPHP 数据库操作(一) : 连接数据库
  5. 自由之战服务器显示登录失败,自由之战:生存的游戏一直登入不进去怎么办
  6. mongoDB导出数据库所有集合内容到json文件
  7. 学习DX编程中的一个很丢脸,但是不知道是为什么的问题
  8. bzoj5392 [Lydsy1806月赛]路径统计
  9. Spring事务原理1-动态代理
  10. VMware ESXi 7.0 U2 SLIC Unlocker USB 网卡驱动集成镜像
  11. Java对接微信支付预下单
  12. webstorm 使用技巧
  13. 统计篇(五)-- 随机变量、样本、统计量
  14. linux加密文件系统
  15. python 爬虫 requests模块 中的Cookies 验证 通过验证cookies模拟登陆豆瓣登陆
  16. selenium webdriver操作chrome options、 启用无痕模式、缓存烦恼
  17. 水仙花数(输出全部水仙花数)
  18. Linux中禁用命令历史记录
  19. 诺基亚Lumia 920更新后出现屏幕亮度自动调节问题?
  20. php实现通讯录按字母分组,通讯录首字母检索功能实现

热门文章

  1. Dubbo系列之框架概括(一)
  2. 基于单片机的蓝牙电子秤系统设计(#0493)
  3. 【考研经验】上海交通大学自动化系考研心路分享
  4. 尚驰SHANGCHI洗车店兰州汽车美容店私人定制洗车服务 杜绝难看的洗车纹!
  5. 字节流之文件输入流FileInputStream(上)
  6. C++11之后的decltype类型指示符
  7. iWatch 的text和label
  8. 学习-Java字符串之字符串、字符数组与字节数组间的使用之单词重新排序
  9. #1830 : Cheat
  10. 领扣--唯一摩尔斯密码