DeepFace 实时活体检测与人脸识别示例

82 阅读3分钟

DeepFace 实时活体检测与人脸识别示例 🎭🔍

本项目演示使用 OpenCV + DeepFace 进行实时活体检测与人脸识别:

  • 📷 通过摄像头实时捕获画面
  • 🛡️ 使用 DeepFace extract_faces(..., anti_spoofing=True) 进行活体检测
  • 🔎 对通过活体检测的人脸进行识别(DeepFace.find
  • 🏷️ 在画面上绘制检测框与识别标签

📚 DeepFace 官方文档

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") 可改为 retinafacemtcnn 等。

    • 🧩 使用 retinaface 前可安装:

      pip install retina-face
      
  • 📁 人脸库路径:DeepFace.find(..., db_path="./images") 可改为你的库目录。

常见问题排查 🛠️

  • 📷 无法打开摄像头:

    • 🔐 检查系统摄像头权限(macOS 需在“系统设置 → 隐私与安全 → 相机”允许终端/IDE)。
    • 🔁 可能需要将 cv2.VideoCapture(0) 中索引改为 1/2 等。
    • 🚫 确认没有其它应用占用摄像头(如视频会议软件)。
  • 🎯 识别不准确:

    • 🖼️ 提供更清晰、更多角度的人脸样本图,并保证 images/ 的子文件夹命名规范。
    • 💡 提升光照与拍摄距离,避免强背光与遮挡。
    • ♻️ 若库更新后识别变慢或异常,可删除 images/ 下的索引文件重新生成。
  • 📦 依赖安装失败:

    • ⬆️ 先升级 pippython -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/             # 人脸库(按人名分目录)

转存失败,建议直接上传图片文件

许可 📜

本项目供学习与演示使用。若用于生产,请遵循相关第三方库的许可证与使用条款。