AI应用02_face-recognition学习

开源人脸识别项目face_recognition学习

在图片中识别人脸

1
face_locations=face_recognition.face_locations(image)

如果你正在为同一个人获得多个比较,那可能就是这样您的照片中的人看起来非常相似,容差值较低需要使脸部比较更严格。
你可以用–tolerance参数来做到这一点。默认容差值为0.6,较低的数字使脸部比较更严格

找到并操作图片中的脸部特征

获得图片中人类眼睛、鼻子、嘴、下巴的位置和轮廓:

1
face_landmarks_list = face_recognition.face_landmarks(image)

鉴定图片中的脸

识别图片中的人是谁

1
2
3
biden_encoding=face_recognition.face_encodings(known_image)[0
]unknown_encoding=face_recognition.face_encodings(unknown_image)[0]
results=face_recognition.compare_faces([biden_encoding],unknown_encoding)

一旦你有面孔的编码,你可以像这样比较:

1
2
#results是一个True / False数组,表示未知的面部与known_faces数组中的任何人匹配
results = face_recognition.compare_faces(known_face_encodings, a_single_unknown_face_encoding)

batch_face_locations(GPU加速,略)

compare_faces

1
face_recognition.api.compare_faces(known_face_encodings, face_encoding_to_check, tolerance=0.6)

将候选编码的面部编码列表进行比较,以查看它们是否匹配。

参数:

1
2
3
known_face_encodings - 已知面部编码的列表
face_encoding_to_check - 与已知面部编码的列表进行比较的单面编码
tolerance - 面孔之间的距离要考虑多少。越小越严格, 0.6是典型的最佳性能。

返回:

1
一个True / False值的列表,指出哪个known_face_encodings匹配要检查的面部编码

face_distance

1
face_recognition.api.face_distance(face_encodings, face_to_compare)

给出面部编码列表,将其与已知的面部编码进行比较,并为每个比较的人脸获得欧几里得距离。距离告诉你面孔是如何相似的。
参数:

1
2
face_encodings - 要比较的面部编码列表
face_to_compare - 要比较的面部编码

返回:

1
一个numpy ndarray,每个面的距离与“faces”数组的顺序相同

face_recognition.api.face_encodings(face_image, known_face_locations=None, num_jitters=1)
源码

给定图像,返回图像中每个面部的128维面部编码。

参数:
face_image - 包含一个或多个面的图像
known_face_locations - 可选 - 如果您已经知道它们,每个面的边框。
num_jitters - 计算编码时重新采样多少次。更高更准确,但更慢(即100是100倍慢)
返回:
128个面部编码的列表(图像中的每个脸部一个)

face_recognition.api.face_landmarks(face_image, face_locations=None)
源码

给定图像,返回图像中每个脸部的脸部特征位置(眼睛,鼻子等)的指令

参数:
face_image - 要搜索的图像
face_locations - 可选地提供要检查的面部位置的列表。
返回:
面部特征位置(眼睛,鼻子等)的列表

face_locations

1
face_recognition.api.face_locations(img, number_of_times_to_upsample=1, model='hog')

返回图像中人脸的边框数组

参数:

1
2
3
img - 一个图像(作为一个numpy数组)
number_of_times_to_upsample - 用于对图像进行上采样的次数多少次。较高的数字找到较小的脸。
model - 要使用的面部检测模型。“hog”在CPU上不太准确,但速度更快。“cnn”是一个更准确的深入学习模式,GPU / CUDA加速(如果可用)。默认为“hog”。

返回:

1
一个可以在css(上,右,下,左)顺序中找到的表面位置的元组列表

load_image_file

1
face_recognition.api.load_image_file(file, mode='RGB')

将图像文件(.jpg,.png等)加载到numpy数组中

参数:

1
2
file - 要加载的图像文件名或文件对象
mode - 将图像转换为格式。只支持“RGB”(8位RGB,3声道)和“L”(黑白)。

返回:

1
图像内容为numpy数组

识别图像中出现的人脸

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import face_recognition
known_image = face_recognition.load_image_file(“biden.jpg”)
unknown_imag = face_recognition.load_image_file(“unknown.jpg”)
#获取每个图像文件中每个面部的面部编码
#由于每个图像中可能有多个人脸,所以返回一个编码列表。
#但是事先知道每个图像只有一个人脸,每个图像中的第一个编码,取索引0。
Biden_encoding =face_recognition.face_encodings(known_image)[0]
Unknown_encoding=face_recognition.face_encodings(unknown_image)[0]
#如果图像中有多个人脸 获取图像中多个人脸编码
face_locations = face_recognition.face_locations(unknow_image)
face_encodings = face_recognition.face_encodings(unknown_image, face_locations)
#结果是True/false的数组,未知面孔known_faces阵列中的任何人相匹配的结果
#[true, false,false]
Results=face_recognition.compare_faces([biden_encoding],unknown_encoding)
#结果是True/false的数组,未知面孔known_faces阵列中的任何人相匹配的结果 设定比对结果的阀值
#[true, false,false]
match = face_recognition.compare_faces(known_faces, face_encoding, tolerance=0.50)

参考

[face_recognition中文文档] 第1节 人脸识别:https://www.jianshu.com/p/4dd131567015
[face_recognition中文文档] 第3节 用法:https://www.jianshu.com/p/20d81cc779f6
[face_recognition中文文档] 第4节 Face Recognition API:https://www.jianshu.com/p/a0e61f5fd570
Python人脸识别第三方库face_recognition接口说明文档:https://www.jb51.net/article/160623.htm

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×