核心 API 是 face_recognition 库的基础,提供了人脸检测、面部特征提取和人脸识别的核心功能。本文档介绍了驱动该库功能的 Python 主要函数、它们的参数、返回值以及常见的用法模式。
有关命令行工具的信息,请参阅 命令行接口。有关示例和高级用法,请参阅 示例和用法。
核心 API 由实现完整人脸识别流程的几个关键函数组成。这些函数设计得易于使用,同时又利用了 dlib 提供的强大机器学习模型。
来源: face_recognition/api.py1-7 README.md257-261
使用人脸识别功能的第一步是加载图像进行处理。
load_image_file(file, mode='RGB')将图像文件加载到 NumPy 数组中进行处理。
参数
file:图像文件名或文件对象(支持 JPG、PNG 等)mode:要转换为的格式(默认为 'RGB')返回值
示例
来源: face_recognition/api.py78-89 README.md257-261
加载图像后,下一步通常是检测其中的人脸。
face_locations(img, number_of_times_to_upsample=1, model="hog")查找图像中的所有人脸位置。
参数
img:图像的 NumPy 数组number_of_times_to_upsample:放大图像的次数(次数越多,检测到的小人脸越多)model:要使用的检测模型"hog":速度更快但准确度较低,在 CPU 上运行(默认)"cnn":更准确,但需要 GPU/CUDA 才能获得良好性能返回值
示例
batch_face_locations(images, number_of_times_to_upsample=1, batch_size=128)用于在图像批次中查找人脸的 GPU 优化函数。
参数
images:图像 NumPy 数组列表number_of_times_to_upsample:放大图像的次数batch_size:每个批次要处理的图像数量返回值
来源: face_recognition/api.py92-151 README.md257-288
检测到人脸后,您可以提取面部标志(特定面部特征)。
face_landmarks(face_image, face_locations=None, model="large")识别检测到人脸中的特定面部特征。
参数
face_image:图像的 NumPy 数组face_locations:可选的面部位置列表(如果已检测)model:要使用的特征检测模型"large":68 点模型,具有详细特征(默认)"small":5 点模型,仅包含眼睛和鼻子(速度更快)返回值
示例
大模型提供的面部特征
小模型提供
来源: face_recognition/api.py154-200 README.md292-300 examples/find_facial_features_in_picture.py1-27
人脸识别流程的最后一步涉及生成人脸编码并进行比较。
face_encodings(face_image, known_face_locations=None, num_jitters=1, model="small")为每个人脸生成一个 128 维的编码。
参数
face_image:图像的 NumPy 数组known_face_locations:可选的人脸位置列表(如果已检测)num_jitters:计算编码时重新采样的次数(次数越多,准确度越高,但速度越慢)model:要使用的特征模型("small" 或 "large")返回值
compare_faces(known_face_encodings, face_encoding_to_check, tolerance=0.6)将一张人脸编码与已知编码列表进行比较以查找匹配项。
参数
known_face_encodings:已知人脸编码列表face_encoding_to_check:要与列表进行比较的人脸编码tolerance:用于将人脸视为匹配的阈值(值越低,要求越严格,默认值为 0.6)返回值
face_distance(face_encodings, face_to_compare)计算人脸编码之间的欧氏距离。
参数
face_encodings:要比较的人脸编码列表face_to_compare:要进行比较的人脸编码返回值
完整的识别流程示例
来源: face_recognition/api.py203-226 README.md307-326
以下是核心 API 的典型用法模式
| 模型 | 优点 | 缺点 | 用例 |
|---|---|---|---|
| HOG(人脸检测) | 速度快,可在 CPU 上运行 | 准确度较低 | 实时应用、资源受限的设备 |
| CNN(人脸检测) | 更准确,可检测到更小的人脸 | 需要 GPU 才能获得良好性能 | 批量处理,在准确性至关重要时使用 |
| Small(面部特征) | 更快 | 仅 5 个点 | 只需要基本的眼睛/鼻子位置 |
| Large(面部特征) | 详细的面部特征 | 更慢 | 需要详细的面部特征 |
来源: face_recognition/api.py1-226 README.md248-326
核心 API 函数充当 dlib 的 C++ 实现人脸检测和识别算法的 Python 包装器。关键技术组件包括:
人脸检测模型:
人脸识别模型:
内部函数:
_raw_face_locations:用于获取 dlib 人脸检测结果的底层函数_raw_face_landmarks:用于获取 dlib 面部特征预测的底层函数_rect_to_css 和 _css_to_rect:在 dlib 矩形和 CSS 样式元组之间进行转换来源: face_recognition/api.py16-29 face_recognition/api.py32-60
在使用核心 API 时,请考虑这些性能优化项
模型选择:
批处理:
batch_face_locations() 对多个图像进行 GPU 加速批量处理重复使用检测结果:
调整参数:
number_of_times_to_upsample:值越低速度越快,值越高检测到的小人脸越多num_jitters:值越高,编码越准确,但速度越慢来源: face_recognition/api.py108-145 face_recognition/api.py203-214
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(2e2dcc)