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

在Google Colab加载ZoeDepth预训练模型遇RuntimeError求助

ZoeDepth加载预训练模型时state_dict意外键报错的解决方法

问题场景

在Google Colab中运行ZoeDepth,已成功执行以下初始化代码:

!pip install torch
!pip install timm
import torch
torch.hub.help("intel-isl/MiDaS", "DPT_BEiT_L_384", force_reload=True)

但执行预训练模型加载代码时触发RuntimeError,提示state_dict存在多个意外键(如core.core.pretrained.model.blocks.0.attn.relative_position_index):

import torch
repo = "isl-org/ZoeDepth"
model_zoe_n = torch.hub.load(repo, "ZoeD_N", pretrained=True)

可行解决方案

方法1:加载模型时忽略不匹配的键

修改模型加载代码,添加strict=False参数,让PyTorch跳过state_dict中不匹配的键(这类键多为辅助参数,不影响模型核心功能):

import torch
repo = "isl-org/ZoeDepth"
model_zoe_n = torch.hub.load(repo, "ZoeD_N", pretrained=True, strict=False)

方法2:克隆仓库本地加载模型

绕过torch.hub的缓存问题,直接从本地仓库加载:

  1. 克隆仓库并进入目录:
!git clone https://github.com/isl-org/ZoeDepth.git
%cd ZoeDepth
  1. 安装依赖(若未安装):
!pip install -r requirements.txt
  1. 本地导入并加载模型:
from zoedepth.models.builder import build_model
from zoedepth.utils.config import get_config

config = get_config("zoedepth", "infer")
model_zoe_n = build_model(config)
# 加载权重时同样可添加strict=False跳过不匹配键
model_zoe_n.load_state_dict(torch.load("weights/ZoeD_N.pt"), strict=False)
model_zoe_n.eval()

方法3:清理torch.hub缓存后重新加载

清除Colab中torch.hub的旧缓存文件,结合强制重载和忽略不匹配键:

import torch
torch.hub.cleanup()
repo = "isl-org/ZoeDepth"
model_zoe_n = torch.hub.load(repo, "ZoeD_N", pretrained=True, force_reload=True, strict=False)

内容的提问来源于stack exchange,提问作者Thian Daniel Iskandar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:46:07