资源 【Demo】使用Dlib从相机进行人脸识别
使用Dlib从相机进行人脸识别 介绍 调用摄像头进行人脸识别,支持多张人脸同时识别; 摄像头人脸录入 / Face register 请不要离摄像头过近,人脸超出摄像头范围时会有 "OUT OF RANGE" 提醒; 提取特征建立人脸数据库 利用摄像头进行人脸识别 单张人脸 利用 OT 对于单张人脸追踪 多张人脸 利用 OT 来实现 定制显示名字, 可以写中文 关于精度: 当使用0.6的距离阈值时,dlib模型在标准LFW人脸识别基准上可获得99.38%的精度。 关于算法: 基于 Residual Neural Network / 残差网络的 CNN 模型; 该模型是一个具有29个转换层的ResNet网络。 它本质上是He,Zhang,Ren和Sun的论文《深度残差学习进行图像识别》中ResNet-34网络的一个版本,删除了几层,每层的过滤器数量减少了一半。 概述 此项目中人脸识别的实现流程 (no OT, 每一帧都进行检测+识别) 实现流程(with OT, 初始帧进行检测+识别,后续帧检测+质心跟踪) 如果利用 OT 来跟踪,可以大大提高 FPS, 因为做识别时候需要提取特征描述子的耗时很多; 流程 安装依赖库 下载源码 进行人脸信息采集录入 提取所有录入人脸数据存入 "features_all.csv" 调用摄像头进行实时人脸识别 或者利用 OT 算法,调用摄像头进行实时人脸识别 关于源码 Repo 的 tree / 树状图: 用到的 Dlib 相关模型函数: Dlib 正向人脸检测器 (based on HOG), output: <class 'dlib.dlib.rectangles'> Dlib 人脸 landmark 特征点检测器, output: <class 'dlib.dlib.full_object_detection'>, will use shape_predictor_68_face_landmarks.dat Dlib 特征描述子 Face recognition model, the object maps human faces into 128D vectors Python 源码介绍如下: get_face_from_camera.py: 进行 Face register / 人脸信息采集录入 请注意存储人脸图片时,矩形框不要超出摄像头范围,要不然无法保存到本地; 超出会有 "out of range" 的提醒; features_extraction_to_csv.py: 从上一步存下来的图像文件中,提取人脸数据存入CSV; 会生成一个存储所有特征人脸数据的 "features_all.csv"; size: n*128 , n means n people you registered and 128 means 128D features of the face face_reco_from_camera.py: 这一步将调用摄像头进行实时人脸识别; / This part will implement real-time face recognition; Compare the faces captured from camera with the faces you have registered which are saved in "features_all.csv" 将捕获到的人脸数据和之前存的人脸数据进行对比计算欧式距离, 由此判断是否是同一个人; face_reco_from_camera_ot_single_person/multi_people.py: 区别于 face_reco_from_camera.py (对每一帧都进行检测+识别),只会对初始帧做检测+识别,对后续帧做检测+质心跟踪; (optional) face_descriptor_from_camera.py 调用摄像头进行实时特征描述子计算; / Real-time face descriptor computation; Tips: 如果希望详细了解 dlib 的用法,请参考 Dlib 官方 Python api 的网站 / You can refer to this link for more information of how to use dlib: http://dlib.net/python/index.html Windows下建议不要把代码放到 C:\, 可能会出现权限读取问题 / In windows, we will not recommend that running this repo in dir C:\ 代码最好不要有中文路径 人脸录入的时候先建文件夹再保存图片, 先 N 再 S 关于人脸识别卡顿 FPS 低问题, 原因是特征描述子提取很费时间, 光跑 face_descriptor_from_camera.py 中 face_reco_model.compute_face_descriptor 在 CPU: i7-8700K 得到的最终 FPS: 5~6 (检测在 0.03s, 特征描述子提取在 0.158s, 和已知人脸进行遍历对比在 0.003s 左右), 所以主要提取特征时候耗资源, 可以用 OT 去做追踪,而不是对每一帧都做检测+识别 来源https://github.com/coneypo/Dlib_face_recognition_from_camera