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

使用Python通过Dlib初始化ResNet时出现KeyError问题求助

问题

环境配置:

  • Python 3.10.5
  • dlib 19.24.0
  • deepface 0.0.79
  • Jupyter Lab

运行代码:

import dlib
from deepface import DeepFace
from deepface.basemodels.DlibResNet import DlibResNet
dlib_model = DlibResNet()

触发报错:

dlib_face_recognition_resnet_model_v1.dat is going to be downloaded
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In [4], line 17
      3 from deepface.basemodels.DlibResNet import DlibResNet          
   (...)\n---> 17 dlib_model = DlibResNet()

File C:\\Program Files\\Python310\\lib\\site-packages\\deepface\\basemodels\\DlibResNet.py:32, in DlibResNet.__init__(self)
     30 url = f"http://dlib.net/files/{file_name}"
     31 output = f"{home}/.deepface/weights/{file_name}"
---> 32 gdown.download(url, output, quiet=False)
     34 zipfile = bz2.BZ2File(output)
     35 data = zipfile.read()

File C:\\Program Files\\Python310\\lib\\site-packages\\gdown\\download.py:178, in download(url, output, quiet, proxy, speed, use_cookies, verify, id, fuzzy, resume, format)
    173     url = "https://drive.google.com/open?id={id}".format(
    174         id=gdrive_file_id
    175     )
    176     continue
--> 178 if res.headers["Content-Type"].startswith("text/html"):
    179     m = re.search("<title>(.+)</title>", res.text)
    180     if m and m.groups()[0].endswith(" - Google Docs"):

File C:\\Program Files\\Python310\\lib\\site-packages\\requests\\structures.py:52, in CaseInsensitiveDict.__getitem__(self, key)
     51 def __getitem__(self, key):
---> 52     return self._store[key.lower()][1]

KeyError: 'content-type'

问题原因

错误根源是gdown库的兼容性问题:gdown原本是为Google Drive文件下载设计的,当它请求dlib.net的模型文件时,服务器返回的响应头里没有Content-Type字段,导致代码直接抛出KeyError。

解决方法

方法1:手动下载模型文件

  1. 下载模型压缩包:获取dlib_face_recognition_resnet_model_v1.dat.bz2文件
  2. 找到权重存储目录:默认是用户主目录/.deepface/weights/(Windows下路径类似C:\Users\你的用户名\.deepface\weights\)
  3. 把下载好的压缩包放到这个目录,无需解压
  4. 重新运行代码即可

方法2:修改DlibResNet源码替换下载方式

找到deepface/basemodels/DlibResNet.py文件(路径在Python安装目录的site-packages下,比如C:\Program Files\Python310\lib\site-packages\deepface\basemodels\DlibResNet.py),修改初始化方法里的下载代码:

# 替换原来的gdown.download(url, output, quiet=False)这一行
import requests
response = requests.get(url, stream=True)
with open(output, 'wb') as f:
    for chunk in response.iter_content(chunk_size=1024):
        if chunk:
            f.write(chunk)

保存文件后重新运行代码。

方法3:升级DeepFace到最新版本

新版本可能修复了这个依赖问题,执行命令升级:

pip install --upgrade deepface

升级后再尝试初始化DlibResNet。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:47:51