opencv+mtcnn+facenet+python+tensorflow 实现实时人脸识别 (2018.9.26 更新)
新增测试方法“直接使用 emb 特征进行计算对比”
此次更新主要想法
上一个版本是使用 knn 对准备好的若干张照片进行“训练”,首先准确率不是很高(还没细究问题,猜测原因是自己准备的图片问题,以及实时采集实时的环境影响),但最主要的原因还是对每个目标对象都必须准备若干张照片进行训练,再看当前市面上的人脸识别都是直接采集一张图片放入数据库,并不需要再训练,直接便可以识别,而 facenet 的最初思想便是如此,是一开始的自己走远了。
所以本次的更新便是,直接将想要测试的对象的一张照片以其英文名命名(中文会乱码),放入一个名为 test_img 文件夹中,接下来对其进行人脸检测并切割,切割后的人脸图片尺寸为 160*160,存入 emb_img 文件夹中,这一步的主要目的是为了不要每次测试的时候都还要重新开始人脸检测,当人脸识别程序启动时,先读取 emb_img 文件夹图片并输入网络得到其 emb(128 维特征),用于后续与摄像头捕捉的照片进行比较
总体来说,基本上没什么思想,可以说是很简单,甚至可以说是一个简单版的 knn,因为我的想法是以后能够将每张照片的 emb 存入数据库,并使用 kd 树优化(本次更新没有做),可是这样的话不就和 knn 一样了么,哎,做完自己才发现自己在做一件傻事,可是还是觉得 knn 不太好 …. 先不管了,就酱
新增两个文件夹、两个.py 文件
文件夹(涉及个人和同学照片,未上传,测试时自己直接新建即可)
test_img : 此文件夹中直接存放需要识别对象的一张照片 emb_img: 此文件夹可以自己新建,或者不管(脚本中对这个文件夹检测了,没有则新建),用于存放剪切后的 160*160 尺寸的人脸图片
.py 文件(一个用来批处理图片,一个用来运行检测)
calculate_dection_face.py : 代码中已经注明了有些路径自己要更改一下,先执行此脚本,进行人脸定位切割(有点残忍的感觉)new_face_recognition.py : 直接执行即可,此次默认使用的是电脑自带的摄像头(如果要使用手机的,自己改一下,还是以前方法),路径也要注意
注意事项
此次代码中的路径我使用的都是绝对路径,所以要根据自己的路径更改一下
github 地址:https://github.com/WindZu/fac… 如果觉得有用,给个小星星啦,我会很开心的:)