RetinaFace 项目介绍
项目概述
RetinaFace 是一个基于深度学习的先进人脸检测工具,适用于 Python 编程语言。它能够识别人脸特征点,即使是在拥挤的环境中也表现十分出色。RetinaFace 是 insightface 项目的一个人脸检测模块,其原始实现主要基于 MXNet,而后由 Stanislas Bertrand 使用 TensorFlow 重写并发布。RetinaFace 的代码经过简化,并被改造成与 pip 兼容,但主要模型结构和预训练权重保持不变。
安装说明
要安装 RetinaFace,最简单的方法是从 PyPI 下载:
$ pip install retina-face
安装完成后,即可通过以下方式导入并使用该库:
from retinaface import RetinaFace
功能介绍
人脸检测
RetinaFace 提供人脸检测功能,需要输入图像的准确路径:
resp = RetinaFace.detect_faces("img1.jpg")
这将返回面部区域坐标和某些特征点(例如眼睛、鼻子和嘴巴),同时给予置信度评分。
{
"face_1": {
"score": 0.9993440508842468,
"facial_area": [155, 81, 434, 443],
"landmarks": {
"right_eye": [257.82974, 209.64787],
"left_eye": [374.93427, 251.78687],
"nose": [303.4773, 299.91144],
"mouth_right": [228.37329, 338.73193],
"mouth_left": [320.21982, 374.58798]
}
}
}
对齐功能
在现代人脸识别流程中,对齐是一项关键步骤。RetinaFace 可以找到包括眼睛坐标在内的面部特征点,并借助这些信息对检测到的面部进行对齐。
import matplotlib.pyplot as plt
faces = RetinaFace.extract_faces(img_path = "img.jpg", align = True)
for face in faces:
plt.imshow(face)
plt.show()
人脸识别
RetinaFace 是 insightface 项目中的人脸检测模块,而 人脸识别模块则是 ArcFace。两者已经在 deepface 库中一起打包,以提供端到端的人脸识别流程。
#!pip install deepface
from deepface import DeepFace
obj = DeepFace.verify("img1.jpg", "img2.jpg", model_name = 'ArcFace', detector_backend = 'retinaface')
print(obj["verified"])
贡献与支持
欢迎提交 pull requests!在创建 PR 之前,建议本地运行单元测试和代码格式检查。GitHub 上的自动化测试会在 PR 创建后自动运行。
项目的支持方式多种多样,例如在 GitHub 上给予项目星标⭐️。如果有意支持项目,还可以通过 Patreon、GitHub Sponsors 或 Buy Me a Coffee 进行赞助。
致谢
该项目主要基于 insightface 项目、RetinaFace 论文,以及 Stanislas Bertrand 的重实现版本。感谢所有参考研究的贡献者,这些研究均使用 MIT 许可证授权。