这个项目能做什么
face_recognition 是一个 Python 库和命令行工具,用于识别和处理人脸。它基于 dlib 的先进人脸识别模型构建,README 中称其在 Labeled Faces in the Wild(LFW)基准上的准确率为 99.38%。该库提供简洁的 API,可用于定位人脸、提取面部特征点、计算人脸编码,并通过比较人脸来识别人员。
## 主要功能
- 使用 `face_locations()` 查找图像中的所有人脸,并可选用基于深度学习的 CNN 模型以提升准确率(良好性能需要 CUDA)。
- 使用 `face_landmarks()` 定位并勾勒面部特征(眼睛、鼻子、嘴巴、下巴),可用于数字化妆等应用。
- 通过 `face_encodings()` 生成 128 维人脸编码,并使用 `compare_faces()` 进行匹配,从而识别人脸。
- 提供两个命令行程序:`face_recognition` 用于识别图片文件夹中的已知人物,`face_detection` 用于输出人脸边界框坐标。
## 安装
- 需要 Python 3.3+ 或 Python 2.7,支持 macOS 或 Linux。Windows 未正式支持,但可能可通过社区提供的说明运行。
- 必须先安装带 Python 绑定的 `dlib`(在 macOS/Ubuntu 上可从源码构建,或使用预配置虚拟机)。
- 安装 `cmake` 后(例如在 macOS 上执行 `brew install cmake`),通过 `pip3 install face_recognition` 安装。
- 文档中还包含针对 Nvidia Jetson Nano、Raspberry Pi 2+、FreeBSD(`pkg install graphics/py-face_recognition`)和 Windows 的平台指南。
- 提供 Docker 镜像,便于部署到 Heroku 或 AWS 等云主机。
## 使用示例(Python)
```python
import face_recognition
# 查找图像中的人脸
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)
# 获取面部特征点
face_landmarks_list = face_recognition.face_landmarks(image)
# 识别人员
known_image = face_recognition.load_image_file("biden.jpg")
unknown_image = face_recognition.load_image_file("unknown.jpg")
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)
```
## 命令行界面
- `face_recognition ./known_people/ ./unknown_pictures/` 会为每个检测到的人脸输出一行,包含文件名和识别出的姓名(或 `unknown person`)。
- `--tolerance 0.54` 会使匹配更严格;`--show-distance true` 会输出计算得到的人脸距离。
- `--cpus 4`(或 `-1` 表示所有核心)可在多核系统上启用并行处理。
- `face_detection ./folder_with_pictures/` 会为找到的每张人脸输出上、右、下、左像素坐标。
## 示例脚本
该仓库包含许多示例,包括:
- 使用默认 HOG 模型和 CNN 深度学习模型进行人脸检测。
- 实时网络摄像头识别(简单版和更快版本,需要 OpenCV)。
- 在视频文件中以及配备摄像头的 Raspberry Pi 上进行人脸识别。
- 使用 Flask 的 HTTP Web 服务。
- 用于针对每个人多张图片进行训练的 K 最近邻和 SVM 分类器。
- 在实时网络摄像头视频中模糊人脸。
## 注意事项
- 识别模型基于成年人训练,在默认比较阈值 0.6 下,对儿童的表现可能不佳。
- 不同族群之间的准确率可能存在差异;wiki 中讨论了已知准确率问题。
- 对于部署,项目包含 Dockerfile 和预构建 Docker 镜像,并在使用 Nvidia 驱动和 nvidia-docker 的 Linux 系统上支持 GPU。
该项目被广泛用作 dlib 人脸识别能力的简单高层封装,适合需要人脸检测和识别的原型开发及生产应用。
评论
0 评分人数达到10人后显示
登录后参与讨论。