基于python调用摄像头进行人脸识别,支持多张人脸同时识别

本文涉及的产品
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
简介: 基于python调用摄像头进行人脸识别,支持多张人脸同时识别

介绍

调用摄像头进行人脸识别, 支持多张人脸同时识别;

  1. 摄像头人脸录入

请不要离摄像头过近, 人脸超出摄像头范围时会有 "OUT OF RANGE" 提醒


04820c1367965648a5dc9cef648f940a.png

  1. 提取特征建立人脸数据库
  2. 利用摄像头进行人脸识别

face_reco_from_camera.py, 对于每一帧都做检测识别


0edb41641fdd4a2b1afb003d2693b95e.png


face_reco_from_camera_single_face.py, 对于人脸<=1, 只有新人脸出现才进行再识别来提高 FPS


8f4316747d2defe6e549727efe4d24ea.png


face_reco_from_camera_ot.py, 利用 OT 来实现再识别提高 FPS


577da69b2cc9d64c7b83d9f85d5283b7.png

定制显示名字, 可以写中文

afbae03fbc75865c6bf2c9b752146e1b.png


关于精度

  • 当使用 0.6 的距离阈值时,dlib 模型在标准 LFW 人脸识别基准上获得了 99.38% 的准确率。

关于算法


  • 基于残差网络(Residual Neural Network)的 CNN 模型;
  • 该模型是一个具有 29 个卷积层的 ResNet 网络。 它本质上是 He、Zhang、Ren 和 Sun 的论文 Deep Residual Learning for Image Recognition 中 ResNet-34 网络的一个版本,去除了几层,每层的过滤器数量减少了一半。


概述


此项目中人脸识别的实现流程 (no OT, 每一帧都进行检测+识别)


89d3c434747a85e6be860eaa86fe5ad2.png


实现流程(with OT, 初始帧进行检测+识别, 后续帧检测+质心跟踪)


8679a5ce97fa4a53baa4fc25c1119abe.png




如果利用 OT 来跟踪, 可以大大提高 FPS, 因为做识别时候需要提取特征描述子的耗时很多;

Steps


  • 安装依赖库
pip install -r requirements.txt


  • 下载源码
git clone https://github.com/coneypo/Dlib_face_recognition_from_camera
  • 进行人脸信息采集录入
python3 get_face_from_camera.py


  • 提取所有录入人脸数据存入 "features_all.csv"
python3 features_extraction_to_csv.py
  • 调用摄像头进行实时人脸识别
python3 face_reco_from_camera.py


  • 对于人脸数<=1, 调用摄像头进行实时人脸识别
python3 face_reco_from_camera_single_face.py
  • 利用 OT 算法, 调用摄像头进行实时人脸识别
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 / 人脸信息采集录入


  • 请注意存储人脸图片时, 矩形框不要超出摄像头范围, 要不然无法保存到本地;
  • 超出会有 "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_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;


相关文章
|
1月前
|
数据采集 Python
Python实用记录(七):通过retinaface对CASIA-WebFace人脸数据集进行清洗,并把错误图路径放入txt文档
使用RetinaFace模型对CASIA-WebFace人脸数据集进行清洗,并将无法检测到人脸的图片路径记录到txt文档中。
40 1
|
1月前
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
104 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
3月前
|
机器学习/深度学习 人工智能 监控
利用Python和OpenCV实现实时人脸识别系统
【8月更文挑战第31天】本文将引导您了解如何使用Python结合OpenCV库构建一个简易的实时人脸识别系统。通过分步讲解和示例代码,我们将探索如何从摄像头捕获视频流、进行人脸检测以及识别特定个体。本教程旨在为初学者提供一条明晰的学习路径,帮助他们快速入门并实践人脸识别技术。
|
4月前
|
机器学习/深度学习 数据采集 算法
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
307 19
|
4月前
|
机器学习/深度学习 TensorFlow 数据处理
使用Python实现深度学习模型:医学影像识别与疾病预测
【7月更文挑战第24天】 使用Python实现深度学习模型:医学影像识别与疾病预测
69 4
|
4月前
|
存储 安全 Linux
|
4月前
|
机器学习/深度学习 监控 算法框架/工具
使用Python实现深度学习模型:人脸识别与人脸表情分析
【7月更文挑战第18天】 使用Python实现深度学习模型:人脸识别与人脸表情分析
218 2
|
4月前
|
机器学习/深度学习 数据采集 算法
Python实现PCA降维和KNN人脸识别模型(PCA和KNeighborsClassifier算法)项目实战
Python实现PCA降维和KNN人脸识别模型(PCA和KNeighborsClassifier算法)项目实战
109 3
|
4月前
|
机器学习/深度学习 数据采集 算法
Python基于MTCNN+FaceNet+SVM进行人脸识别项目实战
Python基于MTCNN+FaceNet+SVM进行人脸识别项目实战
|
4月前
|
文字识别 前端开发 Java
印刷文字识别使用问题之如何使用Python SDK来上传图片并获取识别结果
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。

热门文章

最新文章

下一篇
无影云桌面