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

本地使用TensorFlow Object Detection API时遭遇Protobuf报错

解决TensorFlow Object Detection API训练时的Protobuf解析错误

我之前也踩过一模一样的坑!从你的报错日志里能一眼揪出问题根源——你的label map(标签映射)文件格式有问题,或者配置文件里指向的路径不对,导致Protobuf解析器读不懂它。咱们一步步来解决:

先看错误根源

最开始的报错已经给了明确提示:

google.protobuf.text_format.ParseError: 3:10 : Expected ":"

这说明你的label map文件(通常是.pbtxt格式)在第3行第10个字符的位置,缺了冒号,或者格式完全不符合Protobuf文本的语法要求。后面的TypeError: unsupported operand type(s) for &: 'str' and 'int'只是连锁反应——程序发现文本解析失败,就尝试把它当成二进制Protobuf来读,结果自然报错了。

具体解决方案

1. 检查并修复label map文件格式

你的label map文件必须严格遵循以下格式,每一项的键值对后面必须加冒号,字符串用单/双引号括起来,括号要配对:

item {
  id: 1
  name: 'cat'
}
item {
  id: 2
  name: 'dog'
}

重点检查报错提到的第3行:是不是漏了:?比如把id: 1写成了id 1?或者把name:拼错了?另外注意id必须从1开始,不能从0起步,否则训练时会出其他问题。

2. 确认pipeline.config里的路径配置正确

打开你用的ssdlite_mobilenet_v2_coco_2018_05_09/pipeline.config,找到train_input_reader和eval_input_reader里的label_map_path项,确保它指向的是你正确的label map文件路径(可以是相对路径,相对于你运行train.py的object_detection/目录,或者绝对路径)。

比如正确的配置应该是这样:

train_input_reader {
  label_map_path: "training/your_label_map.pbtxt"
  tf_record_input_reader {
    input_path: "training/train.record"
  }
}
eval_input_reader {
  label_map_path: "training/your_label_map.pbtxt"
  tf_record_input_reader {
    input_path: "training/test.record"
  }
}

3. 验证label map文件的有效性

在object_detection目录下打开Python交互环境,用官方工具测试你的label map能不能正常加载:

python3

然后输入:

from object_detection.utils import label_map_util
# 替换成你的label map文件路径
label_map = label_map_util.load_labelmap("training/your_label_map.pbtxt")
# max_num_classes改成你自己的类别数
categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=2, use_display_name=True)
print(categories)

如果这一步不报错,能正常输出类别列表,说明你的label map没问题了。

4. 重新运行训练命令

当以上步骤都完成后,再重新执行你的训练命令:

python3 train.py --logtostderr --train_dir=training/ --pipeline_config_path=ssdlite_mobilenet_v2_coco_2018_05_09/pipeline.config

额外提醒

  • 确保label map里的类别名称,和你制作TFRecord数据集时用的类别名称完全一致(大小写、拼写都不能错),否则训练时会出现类别不匹配的问题。
  • 如果还是报错,可以检查一下你的Protobuf版本是否和TensorFlow兼容,不过从你之前的测试脚本运行正常来看,版本应该没问题,重点还是label map的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:09:23