使用Python的人脸识别系统-600学习网
600学习网终身会员188,所有资源无秘无压缩-购买会员
介绍
人脸识别不同于人脸检测。在人脸检测中,我们只检测人脸的位置。在人脸识别任务中,我们识别人的身份。
在本文中,我们将使用python在人脸识别库的帮助下构建一个人脸识别系统。
市场上有许多人脸识别算法。这个计算机视觉挑战是从视频和图片中检测人脸。许多应用程序可以建立在识别系统上。许多大公司出于安全和认证目的使用身份识别系统。
识别系统用例
人脸识别系统在现代被广泛使用,许多新的创新系统都建立在识别系统之上。
有几个用例:
查找失踪人员识别社交媒体上的账户识别汽车中的驾驶员考勤系统
许多人脸识别算法取决于它们的性能和准确姓。
传统的人脸识别算法
传统的人脸识别算法不能满足现代人脸识别标准。它们被设计为使用旧的传统算法识别人脸。
OpenCV提供了一些传统的人脸识别算法。
这些方法在提取图像信息和匹配输入和输出图像的方式上不同。
LBPH算法是一种简单但非常有效的方法,目前仍在使用,但它比现代算法慢。
人脸识别深度学习
有许多基于深度学习的人脸识别算法可用。
DeepFaceDeepID系列系统FaceNetVGGFace
一般来说,基于地标的人脸识别器捕获人脸图像,并试图找到基本特征点,如眉毛.嘴角.眼睛.鼻子和嘴唇。这里有60多个地标。
人脸识别涉及的步骤
1.人脸检测:定位人脸,记录每个人脸位置的坐标,并在每个人脸周围绘制一个边界框。
2.面对齐。标准化面部以进行快速训练。
3.特征提取。从人脸图像中提取局部特征用于训练。不同的算法在此步骤中执行不同的操作。
4.人脸识别。将输入面与数据集中的一个或多个已知面进行匹配。
本文重点研究了使用基于深度学习技术的库face_recognition实现人脸识别,该库承诺使用单个训练图像,准确率超过96%。
使生效
使用python实现人脸识别系统。利用人脸识别库实现了基于深度学习的人脸识别系统。
1.设置人脸识别库:
为了安装人脸识别库,我们需要先安装dlib
·Dlib:它是一个现代C++工具包,包括与机器学习相关的算法和工具。
#安装dlib
pip安装dlib
·安装实际的人脸识别库。
#安装人脸识别
pip安装人脸识别
·Opencv用于一些图像预处理
#安装opencv
pip安装opencv
注意:有时安装dlib会引发错误,在这种情况下,使用vs_代码社区安装C++开发工具包。
导入库
导入cv2
将numpy导入为np
导入人脸识别
2.加载图片:
我们已经完成了库的安装和导入。是时候将一些示例图像加载到face_recognition库中了。
此face_recognition库仅支持BGR格式的图像。打印图像时,我们应该使用OpenCV将其转换为RGB。
Face_rerecognition仅加载BGR格式的图像。
导入cv2
将numpy导入为np
导入人脸识别
img_bgr=人脸_识别.加载_图像_文件(‘学生_图像/modi.jpg’)
img_rgb=cv2.cvt颜涩(img_bgr,cv2.COLOR_BGR2RGB)
cv2.imshow(‘bgr’,img_bgr)
cv2.imshow(‘rgb’,img_rgb)
cv2.wait键
输出→ BGR和RGB
3.人脸检测
img_modi_rgb=cv2.cvt颜涩(img_modi,cv2.COLOR_BGR2RGB)
#—————————检测人脸—————————
面部=面部识别。面部位置(img_modi_rgb)[0]
copy=img_modi_rgb.copy()
#———————-在面周围绘制边界框
cv2.矩形(副本,(面〔3〕,面〔0〕),(面[1],面〔2〕),,(255,0255),2)
cv2.imshow(“副本”,副本)
cv2.imshow(‘MODI’,img_MODI_rgb)
cv2.waitKey(0)
4.样本图像识别:
face_recognition库基于深度学习。它支持单一学习,这意味着它需要一张图片来训练自己检测一个人。
img_modi=人脸_识别.加载_图像_文件(‘学生_图像/modi.jpg’)
img_modi=cv2.cvtColor(img_modi,cv2.COLOR_BGR2RGB)
#————-查找面部位置
面部=面部识别。面部位置(img_modi)[0]
#–将图像转换为编码
列车编码=人脸识别。人脸编码(img_modi)[0]
让我们测试一幅图像
test=人脸识别加载图片文件(‘学生图片/modi2.jpg’)
test=cv2.cvtColor(test,cv2.COLOR_BGR2RGB)
test_encode=face_recognition。face_编码(test)[0]
打印(面部识别。比较面部([训练编码],测试编码))
cv2.矩形(img _modi,(面[3],面[0]),(面[1],面[2]),(255,0255),1)
cv2.imshow(‘img_modi’,img_modi)
cv2.waitKey(0)
上面的代码拍摄了首相的两张照片。因为这两张图片都是同一个人,所以返回true。
面部识别。面编码(imgelon)[0]→ 返回传输图像的编码。
面部识别。compane_faces([train_encode],test_encode)获得训练代码和未知图像的测试代码的列表。如果两个测试代码在训练代码中匹配,则返回True;否则,它将返回False
了解人脸识别的工作原理
1.我们把人们的照片和名字传给模特。
2.模型拍摄每张照片,将其转换为数字代码,存储在一个列表中,并将所有标签(人名)存储在另一个列表。
3.在预测阶段,当我们传输未知人物的图像时,识别模型会将该人物的图像转换为代码。
4.将未知人物的图像转换为代码后,它将根据距离参数尝试找到最相似的代码。与未知人员编码距离最小的代码将是最接近的匹配。
5.在获得最接近的匹配代码后,我们从列表中获得该代码的索引并使用该索引。我们找到了我们检测到的人的名字。
确定系统挑战
这些是识别系统面临的主要挑战,需要解决。
·姿势:识别系统很容易受到人体姿势的影响。面部识别系统将无法预测该人的面部是否不可见。
·照明:照明可以大大改变面部轮廓。人脸识别照片应在适当的照明条件下拍摄。
·面部表情:不同的面部表情会导致对同一个人形象的不同预测。
·低分辨率:低分辨率图像包含的信息较少,因此不适合人脸识别训练。
结论
本文讨论了如何利用python和单图像训练技术实现人脸识别系统。您还可以使用类似python Tkinter的GUI来设计基于GUI的考勤系统。我们看到了影响识别系统的挑战以及如何应对这些挑战。
600学习网 » 使用Python的人脸识别系统-600学习网