运行TensorFlow Object Detection训练脚本遇ModuleNotFoundError求助
解决TensorFlow Object Detection的ModuleNotFoundError问题
别着急,你遇到的ModuleNotFoundError: No module named 'object_detection'问题,核心是路径配置不全加上可能漏掉了关键的protobuf编译步骤,我给你一步步理清楚:
1. 修正Python路径配置
你之前只把object_detection目录加到了sys.path,但Python需要找到它的父目录research才能识别object_detection作为一个合法模块。另外,还要把research/slim目录也加进去(这是API依赖的子模块)。修改你的导入代码为:
import sys # 注意:这里加的是research目录,不是object_detection sys.path.append('/home/user/Documents/imgmlreport/inception/models/research') sys.path.append('/home/user/Documents/imgmlreport/inception/models/research/slim') from object_detection.builders import dataset_builder
2. 必须执行Protobuf编译步骤
TensorFlow Object Detection API使用Protocol Buffers(protobuf)定义配置文件,你必须先把这些.proto文件编译成Python模块,否则即使路径对了也会报错。
打开终端,切换到research目录下,运行以下命令:
Linux/macOS:
protoc object_detection/protos/*.proto --python_out=.
Windows:
先确保你已经安装了protobuf编译器,然后在命令行中运行:
protoc object_detection/protos/*.proto --python_out=.
3. 验证配置是否生效
打开Python终端,输入以下代码测试:
from object_detection.builders import dataset_builder
如果没有报错,说明路径和编译都没问题了,再去运行train.py就应该能正常识别模块了。
额外优化:永久配置Python路径
如果你不想每次运行脚本都手动添加路径,可以把research和slim目录加入系统的PYTHONPATH环境变量:
Linux/macOS:
在终端运行以下命令(临时生效):
export PYTHONPATH=$PYTHONPATH:/home/user/Documents/imgmlreport/inception/models/research:/home/user/Documents/imgmlreport/inception/models/research/slim
如果想永久生效,把上面的命令添加到~/.bashrc(bash终端)或~/.zshrc(zsh终端)文件末尾,保存后重启终端即可。
Windows:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」里点击「新建」,变量名填
PYTHONPATH,变量值填两个目录的路径,用分号分隔:C:\你的路径\inception\models\research;C:\你的路径\inception\models\research\slim - 点击确定,重启命令行工具生效。
内容的提问来源于stack exchange,提问作者송준석
相关产品推荐
相关产品推荐

