DeepFace 实时活体检测与人脸识别示例 🎭🔍
本项目演示使用 OpenCV + DeepFace 进行实时活体检测与人脸识别:
- 📷 通过摄像头实时捕获画面
- 🛡️ 使用 DeepFace
extract_faces(..., anti_spoofing=True)进行活体检测 - 🔎 对通过活体检测的人脸进行识别(
DeepFace.find) - 🏷️ 在画面上绘制检测框与识别标签
github源码: github.com/huangj17/de…
环境要求 🔧
- Python 3.8+
- macOS / Linux / Windows(需具备摄像头)
安装 📦
pip install -r requirements.txt
如果尚未安装依赖,请先生成并安装:
pip install deepface opencv-python
pip freeze > requirements.txt
数据准备(人脸库) 🗂️
DeepFace 识别依赖本地人脸库(./images)。目录结构示例:
images/
Alice/
alice1.jpg
alice2.jpg
Bob/
bob1.jpg
- 每个子文件夹代表一个人的名字(识别结果将显示该文件夹名)。
- 放入该人的多张清晰正脸照片可提升识别准确率。
- 首次运行会在
images/下生成索引文件(如.representations_v3.pkl),后续识别会更快;若你替换或大量增删库中图片,可删除该索引让其重新生成。
运行 ▶️
python main.py
运行后:
- 🪟 窗口标题为“实时反欺诈检测”,按
q退出。 - ✅ 通过活体检测的人脸以绿色框显示,❌ 伪造以红色框显示。
- 🎯 若识别置信度 ≥ 70%,标签显示“姓名(置信度%)”。
效果示例 🖼️
关键逻辑说明 🧠
- ⏱️ 活体检测与识别间隔均为 1 秒,避免过于频繁地处理帧。
- 🖼️ 活体检测使用临时文件将当前帧传给 DeepFace;对每张通过活体的脸,再裁剪成单张人脸图片用于识别。
可配置项(在 main.py 中) ⚙️
-
⏲️ 检测/识别间隔:修改
DETECTION_INTERVAL与RECOGNITION_INTERVAL(默认 1.0 秒)。 -
🎯 识别显示阈值:在识别绘制阶段的
if conf >= 70:可调整显示阈值(0–100)。 -
🧰 检测器后端:
DeepFace.extract_faces(..., detector_backend="opencv")可改为retinaface、mtcnn等。-
🧩 使用
retinaface前可安装:pip install retina-face
-
-
📁 人脸库路径:
DeepFace.find(..., db_path="./images")可改为你的库目录。
常见问题排查 🛠️
-
📷 无法打开摄像头:
- 🔐 检查系统摄像头权限(macOS 需在“系统设置 → 隐私与安全 → 相机”允许终端/IDE)。
- 🔁 可能需要将
cv2.VideoCapture(0)中索引改为1/2等。 - 🚫 确认没有其它应用占用摄像头(如视频会议软件)。
-
🎯 识别不准确:
- 🖼️ 提供更清晰、更多角度的人脸样本图,并保证
images/的子文件夹命名规范。 - 💡 提升光照与拍摄距离,避免强背光与遮挡。
- ♻️ 若库更新后识别变慢或异常,可删除
images/下的索引文件重新生成。
- 🖼️ 提供更清晰、更多角度的人脸样本图,并保证
-
📦 依赖安装失败:
-
⬆️ 先升级
pip:python -m pip install --upgrade pip。 -
🧪 如遇到
opencv安装问题,尝试pip install opencv-python-headless(无 GUI 环境)。 -
🍎 Apple Silicon(M1/M2/M3)若遇到 TensorFlow 相关错误,可尝试:
pip install tensorflow-macos==2.12.* tensorflow-metal==1.1.*之后再安装
deepface。
-
目录结构 🗃️
.
├─ main.py # 实时活体检测与人脸识别主程序
├─ requirements.txt # 依赖列表
└─ images/ # 人脸库(按人名分目录)
许可 📜
本项目供学习与演示使用。若用于生产,请遵循相关第三方库的许可证与使用条款。