这是我和队友dsc参加的院级金种子项目做的,一开始报了是想通过这个项目来督促自己学习,但后面因为有各种其他事更想做,所以整个项目做的比较水,一直到中期答辩了才完成了人脸带口罩检测,后面断断续续的花时间弄,到了最后ddl才把它赶出个出样。
实现的功能、技术难点以及解决方案
1.人脸戴口罩识别
网上找的代码,好像是FaceNet(队友负责所以我不是太清楚)。因为戴口罩和不戴口罩都要进行识别出正确的人名,网上绝绝绝绝大部分都是进行戴口罩和不戴口罩的识别,是一个二分类任务,但不能实现人脸身份的确认,人脸各个点是最容易识别一个人,我们使用的是深度神经网络InceptionV2,而网上也有相关的代码(real_time_face_recognition.py)
NoMask就是指没带口罩,huang是我给自己照片命的名字
2.总人流量统计记录人员出入信息(时间),并基于Flask构建的网页进行查询
当识别出在人脸库中存有照片的人物时,会进行该人物的出入信息查询,如果该人物最后一次扫描到人脸是进入学校,当他出现在“出去”摄像头前,就会在信息中输出:
"出去 " + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + '\n'
并且校内总人数统计里面就会减1,同时页面中报表直线图也会实时的减少1
而如果该人物最后一次扫描到人脸是出去学校,当他出现在“进去”摄像头前,就会在信息中输出:
"进入 " + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + '\n'
并且校内总人数统计里面就会加1,同时页面中报表直线图也会实时的增加1
3.微信小程序上传人脸图片并传到本地计算机系统中
小程序文件 pages/index.js 中使用函数 wx.uploadFile,上传图片文件到指定页面地址
这里我在本地设置中勾选了“不校验合法域名、web-view(业务域名)、TLS版本以及HTTPS证书”,可以在开发版本中使用本机地址来上传,但如果后续想要应用到其他人的手机微信上,需要买服务器,并且要注册域名,还要申请域名备案,最后要添加到小程序的wx.uploadFile的合法域名和wx.downloadFile合法域名中
微信开发者工具:
python使用Flask框架构建接口页面:
并且当有人上传了自己的照片到人脸库后,我们需要重启系统进行人脸库的读取
读取人脸文件,如果文件中.jpg文件的数量改变了则说明有人上传了照片
后续idea:
在记录人员出入的时间的同时,记录各个门禁的地点。将所有人员的地点、时间数据,进行向量表示,基于wordtovec的相似计算距离,当给定感染者的经过的地点及时间数据,就能找到密切接触者和次密切接触者;或者可以将人名、地点、时间的三元组进行知识图谱的构建,然后用知识图谱的关系搜索技术找到密切接触者(这个没怎么了解)