【Face Recognition人脸识别】3. 单张图片人脸识别

本文介绍如何使用Python和face_recognition库仅用7行代码实现人脸识别。文章详细讲解了从读取图片、获取特征向量,到比较特征向量并调整容错率阈值的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们将使用7行代码实现python人脸识别

【 1. 读取图片 】

与前面不同,因为是识别图片,所以我们需要分别读取已知名字图片和未知名字图片:

known_image = face_recognition.load_image_file("picture1.jpg")
unknown_image = face_recognition.load_image_file("picture2.jpg")

【 2. 获取128维的特征向量 】

可以使用 face_encodings 函数对人脸进行编码,获取到对应128维的人脸特征向量:

face_encodings(face_image, known_face_locations=None, num_jitters=1)

#	face_image:包含单个或者多个人脸的图片对象;
#	known_face_locations:可选值,已经知道名字的人脸位置;
#	num_jitters:当计算编码时,进行多少次的re-sample操作,次数越多,越精准(但同时会更慢,例如,值为100时,会慢100倍)。

分别对已知名字的人脸和未知名字的人脸,进行编码,如下:

cyx_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

【 3. 比较特征向量 】

最后,使用 compare_faces函数,比较已经人脸与未知人脸之间特征向量:
如果未知图片高于指定的容错率阈值,将会返回真(True);
如果低于指定的阈值,将会返回假(False)。

compare_faces(known_face_encodings, face_encoding_to_check, tolerance=0.6)

#	known_face_encodings:已知人脸特征向量的数组;
#	face_encoding_to_check:一个用于与已知向量相比较的未知人脸特征向量;
#	tolerance:容错率,默认的容错率是0.6,容错率越低,识别越严格准确。
#	如果未知图片高于指定的容错率阈值,将会返回真(True);如果低于指定的阈值,将会返回假(False)。

results = face_recognition.compare_faces([cyz_encoding], unknown_encoding, tolerance=0.4)

容错值的选取:

  • 若识别同一个人错误时,应当增大容错值。让识别不太严格。
  • 若识别不同的人错误时,应当减小容错值。让识别严格起来。
  • 综合以上两种方法选取不同的容错值进行测试(一般是0.7左右)。

【 4. 范例 】

1. 代码

import face_recognition
# 导入图片
known_image_cyz = face_recognition.load_image_file("picture1.jpg")
unknown_image = face_recognition.load_image_file("picture2.jpg")
# 编码获取128维特征向量
cyz_encoding = face_recognition.face_encodings(known_image_cyz)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
# 比较特征向量值,识别人脸
results = face_recognition.compare_faces([cyz_encoding], unknown_encoding, tolerance=0.5)
# 打印结果
print(results)

2. 容错值测试

picture1:
在这里插入图片描述
picture2:
在这里插入图片描述
picture3:
在这里插入图片描述
picture4:
在这里插入图片描述

  • 我们先令容错值为1:

让已知图片picture1 和 待识别图片picture2比较:可知是同一人,测试结果正确
在这里插入图片描述
让已知图片picture1和待识别图片picture3比较:可知是同一人,测试结果正确
在这里插入图片描述
让已知图片picture1和待识别图片picture4比较:可知是同一人,测试结果错误
在这里插入图片描述

  • 因此我们适当减小容错值,让它为0.5,让它识别更严格

让已知图片picture1 和 待识别图片picture2比较:可知是同一人,测试结果正确
在这里插入图片描述
让已知图片picture1和待识别图片picture3比较:可知是同一人,测试结果正确
在这里插入图片描述
让已知图片picture1和待识别图片picture4比较:可知不是同一人,测试结果正确。
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MR_Promethus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值