求助解决:无法从object_detection.protos导入string_int_label_map_pb2的ImportError
解决
cannot import name 'string_int_label_map_pb2' from 'object_detection.protos' 导入错误 出错根源
这个问题本质是TensorFlow Object Detection API的protos目录里的.proto定义文件没编译成Python能识别的.py文件,或者Python路径配置不对,导致找不到对应模块。
解决步骤
1. 确保安装protobuf工具
打开终端执行以下命令,检查是否已安装protobuf编译器:
protoc --version
如果没有输出版本号,用pip安装:
pip install protobuf
2. 编译所有proto文件
进入本地models/research文件夹(即object_detection所在的上级目录),执行以下命令,将所有.proto文件编译为Python可导入的.py文件:
protoc object_detection/protos/*.proto --python_out=.
执行完成后,去object_detection/protos目录查看,会发现生成了一堆*_pb2.py文件,其中就包含需要的string_int_label_map_pb2.py。
3. 修正Python路径配置
不要只给代码添加object_detection目录路径,需要把上级的research和slim目录也加入Python路径:
在你的代码中修改路径配置:
sys.path.append('models/research') sys.path.append('models/research/slim')
或者在终端临时设置环境变量(根据系统选择):
- Linux/macOS:
export PYTHONPATH=$PYTHONPATH:/你的本地路径/models/research:/你的本地路径/models/research/slim - Windows:
set PYTHONPATH=C:\你的本地路径\models\research;C:\你的本地路径\models\research\slim
4. 验证编译结果
确认object_detection/protos目录下存在string_int_label_map_pb2.py文件后,重新运行代码,导入错误即可解决。
内容的提问来源于stack exchange,提问作者Rajkot Khodiyar
相关产品推荐
相关产品推荐

