教你如何用Python实现人脸识别(含源代码)


Posted in Python onJune 23, 2021

工具与图书馆

  • Python-3.x
  • CV2-4.5.2
  • 矮胖-1.20.3
  • 人脸识别-1.3.0

若要安装上述软件包,请使用以下命令。

pip install numpy opencv-python

要安装FaceRecognition,首先安装dlib包。

pip install dlib

现在,使用以下命令安装面部识别模块

pip install face_recognition

下载人脸识别Python代码

请下载python面部识别项目的源代码: 人脸识别工程代码

项目数据集

我们可以使用我们自己的数据集来完成这个人脸识别项目。对于这个项目,让我们以受欢迎的美国网络系列“老友记”为数据集。该数据集包含在面部识别项目代码中,您在上一节中下载了该代码。

建立人脸识别模型的步骤

在继续之前,让我们知道什么是人脸识别和检测。

人脸识别是从照片和视频帧中识别或验证一个人的脸的过程。

人脸检测是指在图像中定位和提取人脸(位置和大小)以供人脸检测算法使用的过程。

人脸识别方法用于定位图像中唯一指定的特征。在大多数情况下,面部图片已经被移除、裁剪、缩放和转换为灰度。人脸识别包括三个步骤:人脸检测、特征提取、人脸识别。

OpenCV是一个用C++编写的开源库.它包含了用于计算机视觉任务的各种算法和深度神经网络的实现。

1.准备数据集

创建2个目录,训练和测试。从互联网上为每个演员选择一个图片,并下载到我们的“火车”目录中。确保您所选择的图像能够很好地显示人脸的特征,以便对分类器进行分类。

为了测试模型,让我们拍摄一张包含所有强制转换的图片,并将其放到我们的“test”目录中。

为了您的舒适,我们增加了培训和测试数据与项目代码。

2.模型的训练

首先导入必要的模块。

import face_recognition as fr
import cv2
 
import numpy as np
import os

人脸识别库包含帮助人脸识别过程的各种实用程序的实现。

现在,创建2个列表来存储图像(人员)的名称及其各自的脸编码。

path = "./train/"
 
known_names = []
known_name_encodings = []
 
images = os.listdir(path)

人脸编码是一种值的矢量,它代表着脸部特征之间的重要度量,如眼睛之间的距离、额头的宽度等。

我们循环遍历火车目录中的每个图像,提取图像中的人的姓名,计算其脸编码向量,并将信息存储在相应的列表中。

for _ in images:
image = fr.load_image_file(path + _)
image_path = path + _
encoding = fr.face_encodings(image)[0]
 
known_name_encodings.append(encoding)
known_names.append(os.path.splitext(os.path.basename(image_path))[0].capitalize())

3.在测试数据集中测试模型

如前所述,我们的测试数据集只包含一个包含所有人员的图像。

使用CV2 imread()方法读取测试映像。

test_image = "./test/test.jpg"
 
image = cv2.imread(test_image)

人脸识别库提供了一种名为Face_Locations()的有用方法,它定位图像中检测到的每个人脸的坐标(左、下、右、上)。使用这些位置值,我们可以很容易地找到脸编码。

face_locations = fr.face_locations(image)
 
face_encodings = fr.face_encodings(image, face_locations)

我们循环遍历每个面部位置及其在图像中的编码。然后,我们将这种编码与“列车”数据集中的人脸编码进行比较。

然后计算人脸距离,即计算测试图像编码和训练图像编码之间的相似性。现在,我们从它选取最小值距离,表示测试图像的这张脸是训练数据集中的人之一。

现在,使用CV2模块中的方法绘制一个带有面部位置坐标的矩形。

for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
   matches = fr.compare_faces(known_name_encodings, face_encoding)
   name = ""
 
   face_distances = fr.face_distance(known_name_encodings, face_encoding)
   best_match = np.argmin(face_distances)
 
   if matches[best_match]:
       name = known_names[best_match]
 
   cv2.rectangle(image, (left, top), (right, bottom), (0, 0, 255), 2)
   cv2.rectangle(image, (left, bottom - 15), (right, bottom), (0, 0, 255), cv2.FILLED)
 
   font = cv2.FONT_HERSHEY_DUPLEX
   cv2.putText(image, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)

使用CV2模块的imShow()方法显示图像。

cv2.imshow("Result", image)

使用imwrite()方法将图像保存到当前工作目录中。

cv2.imwrite("./output.jpg", image)

释放未被释放的资源(如果有的话)。

cv2.waitKey(0)
cv2.destroyAllWindows()

Python人脸识别输出

让我们看看模型的输出。

教你如何用Python实现人脸识别(含源代码)

摘要

在这个机器学习项目中,我们使用我们自己的自定义数据集,在python和OpenCV中开发了一个人脸识别模型。

到此这篇关于教你如何用Python实现人脸识别(含源代码)的文章就介绍到这了,更多相关Python人脸识别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python使用pymysql小技巧
Jun 04 Python
matplotlib 纵坐标轴显示数据值的实例
May 25 Python
django_orm查询性能优化方法
Aug 20 Python
Python使用while循环花式打印乘法表
Jan 28 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
解决python 上传图片限制格式问题
Oct 30 Python
Pytorch: 自定义网络层实例
Jan 07 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
python属于哪种语言
Aug 16 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 Python
python 对图片进行简单的处理
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
浅析Python中的套接字编程
Python中使用ipython的详细教程
详解Python类和对象内容
python析构函数用法及注意事项
Jun 22 #Python
Python自动化测试PO模型封装过程详解
You might like
第六节--访问属性和方法
2006/11/16 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
PHP session会话操作技巧小结
2016/09/27 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
bootstrap table小案例
2016/10/21 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
Python程序设计入门(3)数组的使用
2014/06/16 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
Python操作MongoDB详解及实例
2017/05/18 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
5款非常棒的Python工具
2018/01/05 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
Python多进程写入同一文件的方法
2019/01/14 Python
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
社会实践感言
2014/01/25 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
大学生学年个人总结
2015/02/15 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
律师函格式范本
2015/05/27 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android