使用 Python 的人脸识别系统
介绍
人脸识别不同于人脸检测。在人脸检测中,我们只检测了人脸的位置,在人脸识别任务中,我们识别了人的身份。
在本文中,我们将在人脸识别库的帮助下,使用python构建一个人脸识别系统。
市场上有许多用于人脸识别的算法。这一计算机视觉挑战是从视频和图片中检测人脸。许多应用程序可以构建在识别系统之上。许多大公司出于安全和身份验证的目的而采用识别系统。
识别系统用例
人脸识别系统在现代得到广泛应用,许多新的创新系统都建立在识别系统之上。
有几个用例:
寻找失踪者
识别社交媒体上的帐户
识别汽车中的驾驶员
考勤系统
多种实现面部识别的算法取决于其性能和准确性。
传统人脸识别算法
传统的人脸识别算法不符合现代人脸识别标准。它们旨在使用旧的传统算法识别面部。
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多个地标。
人脸识别涉及的步骤
人脸检测:定位人脸,记下每个人脸定位的坐标,并在每个人脸周围绘制一个边界框。
面部对齐。标准化人脸以获得快速训练。
特征提取。从面部图片中提取局部特征进行训练,这一步由不同的算法执行不同的操作。
人脸识别。将输入人脸与我们数据集中的一个或多个已知人脸进行匹配。
本文重点介绍使用库 face_recognition 实现人脸识别,该库基于深度学习技术,并承诺使用单个训练图像的准确率超过 96%。
执行
使用python实现人脸识别系统。使用 face_recognition 库实现基于深度学习的人脸识别系统。
1. 设置人脸识别库:
为了安装人脸识别库,我们需要先安装dlib
dlib
:它是一个现代 C++ 工具包,包含与机器学习相关的算法和工具。
# installing dlib
pip install dlib
安装实际的人脸识别库
face recognition
。
# installing face recognition
pip install face recognition
Opencv
用于一些图像预处理
# installing opencv
pip install opencvNote: 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
.
了解人脸识别的工作原理
我们将人的照片和他们的名字传递给模型。
该模型拍摄每张照片,将它们转换为某种数字编码,并将它们存储在一个列表中,并将所有标签(人名)存储在另一个列表中。
在预测阶段,当我们传递未知人的图片时,识别模型会将该人的图像转换为编码。
在将未知人的图像转换为编码后,它会尝试根据距离参数找到最相似的编码。与未知人的编码距离最小的编码将是最接近的匹配。
在获得最接近的匹配编码后,我们从该列表中获取该编码的索引并使用索引。我们找到检测到的人的名字。
识别系统的挑战
这些都是识别系统面临的重大挑战,需要解决。
姿势:识别系统容易受到人体姿势的影响。面部识别系统将无法预测该人的面部是否不可见。
照明:照明会极大地改变面部轮廓。用于人脸识别的照片应在适当的照明条件下拍摄。
面部表情:不同的面部表情会导致对同一个人的图像的不同预测。
低分辨率:低分辨率图片包含的信息较少,因此不适合人脸识别训练。
结论
本文讨论了如何使用 python 和单次图像训练技术实现人脸识别系统。你可以进一步使用像 python Tkinter 这样的 GUI 来设计基于 GUI 的考勤系统。我们看到了影响识别系统的各种挑战以及如何解决这些挑战。
☆ END ☆
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。
↓扫描二维码添加小编↓
使用 Python 的人脸识别系统相关推荐
- 如何使用Python制作人脸识别系统(2022/5/28版)持续更新
首先,你必须安装Anaconda Individual Edition.链接如下:Anaconda | Individual Edition 注意:如果你有管理员权限,请安装给ALL Users!!! ...
- python人脸识别毕业设计-Python基于Dlib的人脸识别系统的实现
之前已经介绍过人脸识别的基础概念,以及基于opencv的实现方式,今天,我们使用dlib来提取128维的人脸嵌入,并使用k临近值方法来实现人脸识别. 人脸识别系统的实现流程与之前是一样的,只是这里我们 ...
- python人脸识别环境搭建_怎样用3分钟搭建 Python 人脸识别系统
Face Recognition 使用的是 C++ 开源库 dlib 通过深度学习模型构建的先进人脸识别系统,可通过 Python 接口或命令行工具对图片中的人脸进行识别.在 Labeled Face ...
- python人脸识别系统下载_简单的Python人脸识别系统
案例一 导入图片 思路: 1.导入库 2.加载图片 3.创建窗口 4.显示图片 5.暂停窗口 6.关闭窗口 # 1.导入库 import cv2 # 2.加载图片 img = cv2.imread(' ...
- python怎么另起一行阅读答案_使用Python+Dlib构建人脸识别系统(在Nvidia Jetson Nano 2GB开发板上)...
Nvidia Jetson Nano 2GB开发板是一款新的单板机 售价59美元 运行带有GPU加速的人工智能软件.在2020年 你可以从一台售价59美元的单板计算机中获得令人惊叹的性能 让我们用它来 ...
- 用Python做一个人脸识别系统,简单操作又实用~
导语 今天给大家介绍一个非常简洁的人脸识别系统: 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.而通过我们Python编程,几行代码就可以实现人脸识别,这主要得益于face_reco ...
- python简单的人脸识别系统(PCA+逻辑回归)
python简单的人脸识别系统(PCA+逻辑回归) 数据集:ORL人脸库 特征提取:PCA降维,将112*92降成30 分类器:逻辑回归 ** 代码: from tkinter import * fr ...
- Python | 人脸识别系统 — 用户操作
本博客为人脸识别系统的摄像头画面展示代码解释 人脸识别系统博客汇总:人脸识别系统-博客索引 项目GitHub地址:Su-Face-Recognition: A face recognition for ...
- Python | 人脸识别系统 — 人脸比对 代码部分
本博客为人脸识别系统的人脸比对代码解释 人脸识别系统博客汇总:人脸识别系统-博客索引 项目GitHub地址:Su-Face-Recognition: A face recognition for us ...
- 【Python实现人脸比对】——打造智能人脸识别系统
[Python实现人脸比对]--打造智能人脸识别系统 人脸比对是指对两张或多张人脸图像进行对比,判断它们是否属于同一个人的过程.在现代化社会的各个领域中,如金融.安防.旅游等等,人脸识别技术得到广泛应 ...
最新文章
- JPG图片EXIF信息提取工具exif
- python小括号报错_Python学习记录:括号配对检测问题
- Tableau必知必会之通过 tabadmin 备份 Tableau Server
- UVa11882,Biggest Number
- 图像 pipeline_多面体优化,Pipeline与深度学习编译器
- 2009网络视频监控业务分析及市场发展研究报告
- c语言改变cmd 字体大小_嵌入式开发中常见3个的C语言技巧
- DWR中引用JS的路径问题
- 12306一直提示网络有问题_教你怎么在12306官网订购火车票 火车票查询12306订购...
- 俄罗斯政府称“主权网络”测试成功
- 处理器管理与进程调度
- 【python游戏开发入门】pygame下载与安装教程
- [附源码]java毕业设计社区医院电子病历系统
- 如何撰写优秀的谷歌AD广告标题?
- 计算机启动显示不正确的分区表,分区表无效怎么办_一开机就显示分区表无效怎么解决...
- grub4dos修改/制作message背景文件
- 5个提供flickr高级图片搜索的网站
- 2017全球ROI Top25游戏广告平台排行榜
- 山东大学软件学院数字仓库与数字挖掘考试(回忆版)
- MySQL 常见面试题汇总
热门文章
- windows cl命令行编译和nmake
- ESP-Drone控制板设计的第二个任务-绘制USB-TTL串口下载电路和ESP32-S2芯片内置USB接口电路
- abaqus2021+vs2018+intel oneAPI2022关联程序
- Vue+MDUI+Muse-UI的使用与安装
- 英语“就近原则”和“就远原则”
- 关闭远程服务器端口,远程端口 程序自动关闭问题解决方案
- OpenDaylight Hydrogen版本应用SampleTap研究(一)
- Linux下 SVN 常用命令
- 在php页面出现乱码的原因,html网页乱码原因与解决方法
- 字节、十六进制字符串相互转换(asc2hex、hex2asc)