You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DeepFace+YOLOv8人脸识别时遇AttributeError错误求助

问题原因与解决方案

问题根源

你遇到的错误是因为默认的YOLOv8目标检测模型不输出人脸关键点,DeepFace调用的普通YOLOv8模型(如yolov8n.pt)只能检测人脸框,没有keypoints属性,导致代码尝试访问result.keypoints.xy时触发NoneType错误。

解决步骤

1. 切换到YOLOv8人脸专用模型

YOLOv8有专门的人脸检测分支(YOLOv8-face),该模型会输出人脸框+5个关键点(双眼、鼻子、嘴角),完全匹配DeepFace的需求:

  • 先升级ultralytics库(YOLOv8官方依赖):
pip install --upgrade ultralytics
  • 该库会自动下载YOLOv8-face模型,无需手动操作。

2. 调整DeepFace调用逻辑

DeepFace默认的yolov8后端指向普通目标检测模型,需手动指定使用人脸专用模型,两种实现方式:

方式一:通过环境变量临时指定

import os
from deepface import DeepFace

# 告诉DeepFace使用YOLOv8-face模型
os.environ["YOLOV8_FACE_MODEL"] = "yolov8n-face.pt"

result = DeepFace.verify(
    model_name='VGG-Face',
    detector_backend='yolov8',
    img1_path='img1.jpg',
    img2_path='img2.jpg'
)

方式二:修改DeepFace检测器源码(可选)

如果环境变量方式无效,找到DeepFace的YOLOv8检测器文件(路径通常为deepface/detectors/YoloV8Detector.py),修改模型加载行:

# 原代码
self.model = YOLO("yolov8n.pt")
# 修改为
self.model = YOLO("yolov8n-face.pt")

3. 版本兼容排查

若问题仍存在,检查版本匹配度:

  • DeepFace建议用0.0.79及以上版本
  • ultralytics建议用8.0.100及以上版本
    可执行以下命令固定版本:
pip install deepface==0.0.79
pip install ultralytics==8.0.150

4. 图片有效性验证

确保输入图片满足基础要求:

  • 人脸清晰无严重遮挡
  • 图片格式为JPG/PNG等常见格式
  • 人脸区域占比不小于图片的1/10

内容的提问来源于stack exchange,提问作者Scott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:07:08