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

运行验证脚本从object_detection.protos导入anchor_generator_pb2报错

cannot import name 'anchor_generator_pb2' from 'object_detection.protos' 排查解决方法

这个报错的核心原因是Python运行时无法在object_detection.protos模块路径下找到对应编译生成的anchor_generator_pb2.py文件,按以下顺序逐一排查即可,覆盖90%以上的同类场景:

  • 先确认protobuf全量编译操作正确执行
    绝大多数该类报错都是proto文件编译步骤出问题导致的。首先进入你本地TensorFlow Object Detection源码的research目录,执行全量编译命令:
    protoc object_detection/protos/*.proto --python_out=.
    注意Windows系统不要在PowerShell中执行该命令,PowerShell对通配符*的解析逻辑存在兼容问题,会导致部分proto文件漏编译,换CMD执行即可。编译完成后直接打开object_detection/protos目录检查,能看到anchor_generator_pb2.py文件才说明这一步执行成功,没有该文件就说明编译未生效。
  • 排查模块导入路径冲突
    如果之前通过pip安装过object_detection相关包,Python会优先读取site-packages目录下的预装版本,而非你本地编译的源码版本。先执行以下代码确认当前Python导入的object_detection实际路径:
    import object_detection
    print(object_detection.__path__)
    
    如果输出路径指向Python环境的site-packages目录,先执行pip uninstall tensorflow-object-detection(部分包名是object-detection,多卸载几次确认pip安装的版本完全清除),再把本地源码的research目录、research/slim目录加入Python路径,再运行脚本。
  • 校验依赖版本兼容性
    protobuf版本过高、object_detection源码和TensorFlow版本不匹配也会导致pb2文件生成异常。先执行pip show protobuf查看当前protobuf版本,如果版本号高于3.20.x,先降级到兼容版本:
    pip install protobuf==3.20.3
    降级完成后回到第一步重新执行全量proto编译操作。
  • 清除异常缓存
    之前编译失败残留的缓存文件也会导致导入异常,进入object_detection/protos目录,删除所有__pycache__文件夹以及后缀为.pyc的缓存文件,再重新运行验证脚本。

修复完成后可以先在Python交互环境执行from object_detection.protos import anchor_generator_pb2做导入测试,执行无报错再跑你的业务脚本即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:30:50