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

使用SSD-MobileNet-V1-Coco模型训练自定义数据集遇属性报错

解决TensorFlow Detection API训练时'SsdFeatureExtractor'无'override_base_feature_extractor_hyperparams'属性的问题

我之前帮不少开发者排查过这个问题,它本质上是TensorFlow Detection API版本和你使用的旧预训练模型不兼容导致的,下面给你分步解决的方案:

一、核心原因

你用的ssd_mobilenet_v1_coco_11_06_2017是2017年发布的旧模型,对应的Detection API还是早期版本;而你当前环境的API版本大概率是较新的——在后续的API迭代中,开发团队重构了SsdFeatureExtractor类,移除了override_base_feature_extractor_hyperparams这个方法,但旧模型的配置文件还在调用它,所以触发了属性不存在的报错。

二、具体解决步骤

1. 切换到与模型匹配的API分支

首先把TensorFlow/models仓库切换到和模型发布时间对应的稳定分支,比如r1.2分支(这个分支和2017年6月的模型完全兼容):

cd 你的tensorflow/models目录路径
git checkout r1.2

同时确保你的TensorFlow版本是1.2.x,高版本的TF(比如1.4+)和这个旧分支的API会有冲突。

2. 重新编译Protobuf文件

切换分支后,必须重新编译Detection API依赖的Protobuf文件,保证生成的Python代码和当前API版本一致:

cd path/to/tensorflow/models/research
protoc object_detection/protos/*.proto --python_out=.

然后重新设置PYTHONPATH环境变量:

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

3. 检查并修正训练配置文件

打开你的pipeline.config文件,查找是否有类似override_base_feature_extractor_hyperparams: true的配置项:

  • 如果是切换到旧API分支,这个配置可以保留,因为旧分支的SsdFeatureExtractor确实有这个方法;
  • 如果坚持使用新API版本,需要移除这个配置项,改用新版本API支持的方式调整特征提取器超参数(比如直接在base_feature_extractor节点下配置对应参数)。

三、验证解决方案

重新执行你的./train.sh脚本,如果配置正确,应该不会再触发这个属性不存在的报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:25:36