TensorFlow 2目标检测出现cannot import name 'anchor_generator_pb2'报错如何解决
解决TensorFlow 2目标检测API ImportError: cannot import name 'anchor_generator_pb2'问题
该报错核心原因是anchor_generator.proto未被正确编译生成对应的Python调用文件,并非完全由protoc版本或pip依赖缺失导致,按以下步骤操作即可解决:
- 确认当前工作目录为目标检测API的
models/research根目录,所有后续操作均在该目录下执行 - 先清除旧的错误编译产物:删除
object_detection/protos目录下所有后缀为_pb2.py的文件,避免旧文件干扰 - 全量编译所有proto文件:
- Linux/Mac环境执行命令:
protoc object_detection/protos/*.proto --python_out=. - Windows PowerShell环境执行命令:
Get-ChildItem object_detection/protos -name *.proto | ForEach-Object { protoc object_detection/protos/$_ --python_out=. }
- Linux/Mac环境执行命令:
- 编译完成后添加临时环境变量,将当前目录和slim目录加入PYTHONPATH:
- Linux/Mac环境执行命令:
export PYTHONPATH=$PYTHONPATH:pwd:pwd/slim - Windows PowerShell环境执行命令:
$env:PYTHONPATH += ";$PWD;$PWD\slim"
- Linux/Mac环境执行命令:
- 重新执行测试命令验证:
python object_detection/builders/model_builder_tf2_test.py
如果操作后仍报错,确认你使用的目标检测API仓库是否为官方未修改版本,若仓库存在文件缺失,重新拉取官方TF2分支的models仓库后重复上述步骤即可。
内容的提问来源于stack exchange,提问作者SergRKrus
相关产品推荐
相关产品推荐

