首页IT科技Python人脸采集(Python 人脸识别系统)

Python人脸采集(Python 人脸识别系统)

时间2025-06-20 06:54:30分类IT科技浏览3983
导读:简介 人脸识别不同于人脸检测。在人脸检测中,我们只检测了人脸的位置,在人脸识别任务中,我们识别了人的身份。...

简介

人脸识别不同于人脸检测           。在人脸检测中            ,我们只检测了人脸的位置                 ,在人脸识别任务中      ,我们识别了人的身份                  。

本文重点介绍使用库 face_recognition 实现人脸识别         ,该库基于深度学习技术                 ,并承诺使用单个训练图像的准确率超过 96%      。

识别系统用例

寻找失踪者 识别社交媒体上的帐户 识别汽车中的驾驶员 考勤系统

了解人脸识别的工作原理

我们将人的照片和他们的名字传递给模型        。 该模型拍摄每张照片        ,将它们转换为某种数字编码      ,并将它们存储在一个列表中                  ,并将所有标签(人名)存储在另一个列表中                 。 在预测阶段           ,当我们传递未知人的图片时   ,识别模型会将该人的图像转换为编码         。 在将未知人的图像转换为编码后                  ,它会尝试根据距离参数找到最相似的编码      。与未知人的编码距离最小的编码将是最接近的匹配                 。 在获得最接近的匹配编码后              ,我们从该列表中获取该编码的索引并使用索引            。我们找到检测到的人的名字   。

传统人脸识别算法

传统的人脸识别算法不符合现代人脸识别标准                 。它们旨在使用旧的传统算法识别面部               。

OpenCV 提供了一些传统的面部识别算法。

Eigenfaces:http://www.scholarpedia.org/article/Eigenfaces 尺度不变特征变换 (Scale Invariant Feature Transform,SIFT):https://en.wikipedia.org/wiki/Scale-invariant_feature_transform Fisher faces:http://www.scholarpedia.org/article/Fisherfaces 局部二进制模式直方图 (Local Binary Patterns Histograms               ,LBPH):https://en.wikipedia.org/wiki/Local_binary_patterns

这些方法在提取图像信息和匹配输入和输出图像的方式上有所不同              。

LBPH 算法是一种简单但非常有效的方法                 ,仍在使用中   ,但与现代算法相比速度较慢                  。

人脸识别深度学习

有多种基于深度学习的面部识别算法可供使用   。

DeepFace DeepID series of systems FaceNet VGGFace

一般来说            ,基于地标的人脸识别器对人脸图像进行拍摄                 ,并试图找到眉毛            、嘴角                 、眼睛      、鼻子         、嘴唇等基本特征点           。有60多个地标                  。

人脸识别涉及的步骤

人脸检测:定位人脸      ,记下每个人脸定位的坐标         ,并在每个人脸周围绘制一个边界框      。 面部对齐        。标准化人脸以获得快速训练                 。 特征提取         。从面部图片中提取局部特征进行训练                 ,这一步由不同的算法执行不同的操作      。 人脸识别                 。将输入人脸与我们数据集中的一个或多个已知人脸进行匹配            。

识别流程

使用python实现人脸识别系统   。使用 face_recognition 库实现基于深度学习的人脸识别系统                 。

1. 设置人脸识别库:

为了安装人脸识别库        ,我们需要先安装dlib

dlib:它是一个现代 C++ 工具包      ,包含与机器学习相关的算法和工具               。

pip install dlib

安装实际的人脸识别库face recognition。

pip install face recognition

Opencv用于一些图像预处理

pip install opencv

Note: Sometimes installing dlib throws error in that case install install the C++ development toolkit using vs_code community .

导入库

import cv2

import numpy as np

import face_recognition

2. 加载图片:

我们完成了库的安装和导入              。是时候将一些示例图像加载到face_recognition库中了                  。

该face_recognition库仅支持 BGR 格式的图像   。在打印输出图像时                  ,我们应该使用 OpenCV 将其转换为 RGB           。

Face_recognition仅加载 BGR 格式的图像                  。

import cv2 import numpy as np import face_recognition img_bgr = face_recognition.load_image_file(student_images/modi.jpg) img_rgb = cv2.cvtColor(img_bgr,cv2.COLOR_BGR2RGB) cv2.imshow(bgr, img_bgr) cv2.imshow(rgb, img_rgb) cv2.waitKey

输出→ BGR 与 RGB

3.检测和定位人脸:

face_recognition库可以自行快速定位人脸           ,我们不需要使用haar_cascade或其他技术      。

img_modi=face_recognition.load_image_file(student_images/modi.jpg) img_modi_rgb = cv2.cvtColor(img_modi,cv2.COLOR_BGR2RGB) #--------- Detecting Face ------- face = face_recognition.face_locations(img_modi_rgb)[0] copy = img_modi_rgb.copy() # ------ Drawing bounding boxes around Faces------------------------ cv2.rectangle(copy, (face[3], face[0]),(face[1], face[2]), (255,0,255), 2) cv2.imshow(copy, copy) cv2.imshow(MODI,img_modi_rgb) cv2.waitKey(0)

4. 样本图像识别:

该face_recognition库基于深度学习   ,它支持单次学习                  ,这意味着它需要一张图片来训练自己检测一个人        。

img_modi = face_recognition.load_image_file(student_images/modi.jpg) img_modi = cv2.cvtColor(img_modi,cv2.COLOR_BGR2RGB) #------to find the face location face = face_recognition.face_locations(img_modi)[0] #--Converting image into encodings train_encode = face_recognition.face_encodings(img_modi)[0] #----- lets test an image test = face_recognition.load_image_file(student_images/modi2.jpg) test = cv2.cvtColor(test, cv2.COLOR_BGR2RGB) test_encode = face_recognition.face_encodings(test)[0] print(face_recognition.compare_faces([train_encode],test_encode)) cv2.rectangle(img_modi, (face[3], face[0]),(face[1], face[2]), (255,0,255), 1) cv2.imshow(img_modi, img_modi) cv2.waitKey(0)

上面的代码拍了两张总理的照片              ,因为两张照片都是同一个人,所以它返回了true                 。

face_recognition.face_encodings(imgelon)[0]→返回传递图像的编码         。 face_recognition.compare_faces([train_encode],test_encode) 获取经过训练的编码列表和未知图像的测试编码      。如果两个测试编码在训练编码中匹配               ,则返回True ;否则                 ,它会返回False.

挑战

姿势:识别系统容易受到人体姿势的影响                 。面部识别系统将无法预测该人的面部是否不可见            。 照明:照明会极大地改变面部轮廓   。用于人脸识别的照片应在适当的照明条件下拍摄                 。 面部表情:不同的面部表情会导致对同一个人的图像的不同预测               。 低分辨率:低分辨率图片包含的信息较少   ,因此不适合人脸识别训练。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
win 10无法找到工作组其他电脑(如何解决Win10搜索不到工作组计算机?) 大学什么都不学(大学一般有什么**-大学不停**与从不**的人,毕业后会有怎样的差异?)