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

使用DeepFace.analyze()的SSD后端时出现cv2.dnn无readNetFromCaffe属性错误

解决cv2.dnn.readNetFromCaffe属性错误(DeepFace+OpenCV 4.9.0)

问题场景

已安装环境:

  • opencv-python 4.9.0.80
  • opencv-contrib-python 4.9.0.80
  • deepface 0.0.81
    运行代码:
DeepFace.analyze('Img.jpg', ['race'], detector_backend = 'ssd', enforce_detection= False, silent = False)

触发错误:

AttributeError: module 'cv2.dnn' has no attribute 'readNetFromCaffe'

解决方案

方案1:修复Anaconda环境冲突(优先尝试)

Anaconda环境中,pip安装的OpenCV可能与conda自带的OpenCV包冲突,导致dnn模块方法无法正常加载:

  • 卸载所有OpenCV相关包:
pip uninstall -y opencv-python opencv-contrib-python
conda uninstall -y opencv
  • 用conda重新安装兼容版本的OpenCV:
conda install -c conda-forge opencv=4.8.0
  • 重新安装deepface:
pip install deepface==0.0.81
  • 重启Jupyter Notebook后再次运行代码。

方案2:修改DeepFace的SSDWrapper代码

如果不想更换OpenCV版本,可直接修改DeepFace的SSD检测器封装代码:

  1. 定位到文件路径:~/anaconda3/lib/python3.11/site-packages/deepface/detectors/SsdWrapper.py
  2. 将第46行的cv2.dnn.readNetFromCaffe替换为cv2.dnn.readNet:
# 原代码
face_detector = cv2.dnn.readNetFromCaffe(
    home + "/.deepface/weights/deploy.prototxt",
    home + "/.deepface/weights/res10_300x300_ssd_iter_140000.caffemodel",
)
# 修改后
face_detector = cv2.dnn.readNet(
    home + "/.deepface/weights/deploy.prototxt",
    home + "/.deepface/weights/res10_300x300_ssd_iter_140000.caffemodel",
)
  1. 保存文件后,重启Jupyter Notebook运行代码。

方案3:降级OpenCV到兼容版本

OpenCV 4.9.0对部分旧API有调整,降级到4.8.x版本可解决兼容性问题:

  • 卸载现有OpenCV包:
pip uninstall -y opencv-python opencv-contrib-python
  • 安装指定兼容版本:
pip install opencv-python==4.8.0.74 opencv-contrib-python==4.8.0.74
  • 重启Jupyter Notebook后测试代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:06:01