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

TensorFlow Object Detection API中google.protobuf runtime_version导入错误求助

解决TensorFlow Object Detection API中google.protobuf的runtime_version导入错误

问题根源

错误ImportError: cannot import name 'runtime_version' from 'google.protobuf'的核心原因是:你克隆的TensorFlow models仓库中,编译生成的anchor_generator_pb2.py等proto文件依赖protobuf 3.21及以上版本的runtime_version模块,但你当前安装的是protobuf 3.20.3(该版本无此模块)。

出现此问题通常是因为:

  • 系统中安装的protoc(proto编译器)版本高于Python环境的protobuf版本,导致编译出的pb2文件调用了高版本API
  • 未重新编译models仓库中的proto文件,直接使用了仓库预生成的、适配高版本protobuf的pb2文件

解决方案

方案1:对齐protoc与Python protobuf版本并重新编译

  1. 检查protoc版本
    执行命令查看当前系统的proto编译器版本:
    protoc --version
    
  2. 对齐版本
    • 如果protoc版本是3.21+:将Python环境的protobuf升级到对应版本(例如protoc是3.21.12,执行pip install protobuf==3.21.12)
    • 如果要保留protobuf 3.20.3:下载对应3.20.3版本的protoc二进制文件,替换系统中的protoc,确保版本一致
  3. 重新编译proto文件
    在models/research目录下执行,重新生成适配当前protobuf版本的pb2文件:
    protoc object_detection/protos/*.proto --python_out=.
    
  4. 重新运行测试脚本
    python object_detection/builders/model_builder_tf2_test.py
    

方案2:切换到TensorFlow 2.11对应的models分支

如果你希望保留protobuf 3.20.3,可以切换到TensorFlow 2.11官方对应的models分支,该分支的proto文件不会依赖高版本API:

cd models
git checkout r2.11
cd research

之后重新执行方案1中的步骤3和4即可。

关键注意事项

  • 编译proto文件是TensorFlow Object Detection API部署的必要步骤,不能跳过
  • 优先遵循TensorFlow官方版本兼容性要求,TensorFlow 2.11.0官方推荐protobuf版本为3.20.0-3.20.3,使用该范围版本时必须确保protoc版本与之匹配

内容的提问来源于stack exchange,提问作者tanny bhai gamerz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:40:53