同步操作将从 wzm/Dlib_face_recognition_from_camera 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
仓库地址: https://github.com/fizherbeart/Dlib_face_recognition_from_camera
分支信息
- master: 主分支, 里面的代码都是原仓库的
- rtsp: 根据海康威视的RTSP流进行人脸识别
Detect and recognize single/multi-faces from camera;
调用摄像头进行人脸识别, 支持多张人脸同时识别;
摄像头人脸录入 / Face register
请不要离摄像头过近, 人脸超出摄像头范围时会有 "OUT OF RANGE" 提醒 / Please do not be too close to the camera, or you can't save faces with "OUT OF RANGE" warning;
提取特征建立人脸数据库 / Generate face database from images captured
利用摄像头进行人脸识别 / Face recognizer
face_reco_from_camera.py, 对于每一帧都做检测识别 / Do detection and recognition for every frame:
face_reco_from_camera_single_face.py, 对于人脸<=1, 只有新人脸出现才进行再识别来提高 FPS / Do re-reco only for new single face:
face_reco_from_camera_ot.py, 利用 OT 来实现再识别提高 FPS / Use OT to instead of re-reco for every frame to improve FPS:
定制显示名字, 可以写中文 / Show chinese name:
** 关于精度 / About accuracy:
0.6
, the dlib model obtains an accuracy of 99.38%
on the standard LFW face recognition benchmark.** 关于算法 / About algorithm
此项目中人脸识别的实现流程 (no OT, 每一帧都进行检测+识别) / The design of this repo:
实现流程(with OT, 初始帧进行检测+识别, 后续帧检测+质心跟踪) / The design of this repo:
如果利用 OT 来跟踪, 可以大大提高 FPS, 因为做识别时候需要提取特征描述子的耗时很多;
安装依赖库 / Install some python packages needed
pip install -r requirements.txt
下载源码 / Download zip from website or via GitHub Desktop in windows, or git clone repo in Ubuntu
git clone https://github.com/coneypo/Dlib_face_recognition_from_camera
进行人脸信息采集录入 / Register faces
python3 get_face_from_camera.py
提取所有录入人脸数据存入 "features_all.csv" / Features extraction and save into "features_all.csv"
python3 features_extraction_to_csv.py
调用摄像头进行实时人脸识别 / Real-time face recognition
python3 face_reco_from_camera.py
对于人脸数<=1, 调用摄像头进行实时人脸识别 / Real-time face recognition (FPS improved)
python3 face_reco_from_camera_single_face.py
利用 OT 算法, 调用摄像头进行实时人脸识别 / Real-time face recognition with OT (FPS improved)
python3 face_reco_from_camera_ot.py
Repo 的 tree / 树状图:
. ├── get_faces_from_camera.py # Step 1. Face register ├── features_extraction_to_csv.py # Step 2. Feature extraction ├── face_reco_from_camera.py # Step 3. Face recognizer ├── face_reco_from_camera_single_face.py # Step 3. Face recognizer for single person ├── face_reco_from_camera_ot.py # Step 3. Face recognizer with OT ├── face_descriptor_from_camera.py # Face descriptor computation ├── how_to_use_camera.py # Use the default camera by opencv ├── data │ ├── data_dlib # Dlib's model │ │ ├── dlib_face_recognition_resnet_model_v1.dat │ │ └── shape_predictor_68_face_landmarks.dat │ ├── data_faces_from_camera # Face images captured from camera (will generate after step 1) │ │ ├── person_1 │ │ │ ├── img_face_1.jpg │ │ │ └── img_face_2.jpg │ │ └── person_2 │ │ └── img_face_1.jpg │ │ └── img_face_2.jpg │ └── features_all.csv # CSV to save all the features of known faces (will generate after step 2) ├── README.rst └── requirements.txt # Some python packages needed
用到的 Dlib 相关模型函数:
Dlib 正向人脸检测器 (based on HOG), output: <class 'dlib.dlib.rectangles'>
detector = dlib.get_frontal_face_detector()
faces = detector(img_gray, 0)
Dlib 人脸 landmark 特征点检测器, output: <class 'dlib.dlib.full_object_detection'>, will use shape_predictor_68_face_landmarks.dat
# This is trained on the ibug 300-W dataset (https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/)
# Also note that this model file is designed for use with dlib's HOG face detector.
# That is, it expects the bounding boxes from the face detector to be aligned a certain way, the way dlib's HOG face detector does it.
# It won't work as well when used with a face detector that produces differently aligned boxes,
# such as the CNN based mmod_human_face_detector.dat face detector.
predictor = dlib.shape_predictor("data/data_dlib/shape_predictor_68_face_landmarks.dat")
shape = predictor(img_rd, faces[i])
Dlib 特征描述子 Face recognition model, the object maps human faces into 128D vectors
face_rec = dlib.face_recognition_model_v1("data/data_dlib/dlib_face_recognition_resnet_model_v1.dat")
Python 源码介绍如下:
get_face_from_camera.py:
进行 Face register / 人脸信息采集录入
features_extraction_to_csv.py:
从上一步存下来的图像文件中, 提取人脸数据存入CSV;
face_reco_from_camera.py:
这一步将调用摄像头进行实时人脸识别; / This part will implement real-time face recognition;
face_reco_from_camera_single_face.py:
针对于人脸数 <=1 的场景, 区别于 face_reco_from_camera.py (对每一帧都进行检测+识别), 只有人脸出现的时候进行识别;
face_reco_from_camera_ot.py:
只会对初始帧做检测+识别, 对后续帧做检测+质心跟踪;
(optional) face_descriptor_from_camera.py
调用摄像头进行实时特征描述子计算; / Real-time face descriptor computation;
Tips:
logging.basicConfig(level=logging.DEBUG)
to print info for every frame if needed (Default is logging.INFO
)N
再 S
/ Press N
before S
#. 关于 face_reco_from_camera.py 人脸识别卡顿 FPS 低问题, 原因是特征描述子提取很费时间, 光跑 face_descriptor_from_camera.py 中 face_reco_model.compute_face_descriptor 在我的机器上得到的平均 FPS 在 5 左右 (检测在 0.03s, 特征描述子提取在 0.158s, 和已知人脸进行遍历对比在 0.003s 左右), 所以主要提取特征时候耗资源, 可以用 OT 去做追踪 (使用`face_reco_from_camera_ot.py`), 而不是对每一帧都做检测+识别, 识别的性能从 20 FPS -> 200 FPS
可以访问我的博客获取本项目的更详细介绍, 如有问题可以邮件联系我 / For more details, please refer to my blog (in chinese) or mail to me :
Thanks for your support.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。