cda*_*hms 9 python object-detection tensorflow object-detection-api
我正在尝试获取TensorFlow对象检测API
https://github.com/tensorflow/models/tree/master/research/object_detection
按照安装说明在Windows上工作
https://github.com/tensorflow/models/tree/master/research/object_detection
这似乎适用于Linux/Mac.如果我将一个脚本放在我克隆上面的repo的目录中,我只能让它工作.如果我将脚本放在任何其他目录中,我会收到此错误:
ModuleNotFoundError: No module named 'utils'
Run Code Online (Sandbox Code Playgroud)
我怀疑原因是没有正确执行上述安装说明中列出的此命令的Windows等效项:
# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
Run Code Online (Sandbox Code Playgroud)
如果重要的话,我正在使用Windows 10,Python 3.6和TensorFlow 1.4.0.当然,我已经用Google搜索了这个问题并发现了各种链接,例如:
https://github.com/tensorflow/models/issues/1747
但这并没有解决这个问题.有关如何解决此问题的任何建议?
以下是我迄今为止所做的步骤:
1)通过pip3安装TensorFlow和相关工具
2)从管理命令提示符处,运行以下命令:
pip3 install pillow
pip3 install lxml
pip3 install jupyter
pip3 install matplotlib
Run Code Online (Sandbox Code Playgroud)
3)在我的例子中,将TensorFlow"模型"存储库克隆到Documents文件夹
C:\Users\cdahms\Documents\models
Run Code Online (Sandbox Code Playgroud)
4)下载了Google Protobuf https://github.com/google/protobuf Windows v3.4.0发行版"protoc-3.4.0-win32.zip"(我尝试了最新的3.5.1并在后续步骤中出错,所以我尝试了3.4.0每个这个视频https://www.youtube.com/watch?v=COlbP62-BU&list=PLQVvvaa0QuDcNK5GeCQnxYnSSaar2tpku&index=1并且protobuf编译工作)
5)具体来说,将Protobuf下载提取到Program Files
"C:\Program Files\protoc-3.4.0-win32"
Run Code Online (Sandbox Code Playgroud)
6)CD进入模型\研究目录,具体而言
cd C:\Users\cdahms\Documents\models\research
Run Code Online (Sandbox Code Playgroud)
7)具体来说,执行了protobuf编译
“C:\Program Files\protoc-3.4.0-win32\bin\protoc.exe” object_detection/protos/*.proto --python_out=.
Run Code Online (Sandbox Code Playgroud)
导航:
C:\Users\cdahms\Documents\models\research\object_detection\protos
Run Code Online (Sandbox Code Playgroud)
并验证.py文件是否因编译而成功创建(仅开始使用.proto文件)
8)cd到object_detection目录,例如:
cd C:\Users\cdahms\Documents\models\research\object_detection
Run Code Online (Sandbox Code Playgroud)
然后在命令提示符下输入以下内容以启动object_detection_tutorial.ipynb Jupyter Notebook
jupyter notebook
Run Code Online (Sandbox Code Playgroud)
9)在Jupyter Notebook中,选择"object_detection_tutorial.ipynb" - >单元格 - >全部运行,该示例应在笔记本内运行
10)在Jupyter笔记本中,选择"文件" - >"下载为" - >"Python",并将笔记本的.py版本保存到同一目录,即
C:\Users\cdahms\Documents\models\research\object_detection\object_detection_tutorial.py
Run Code Online (Sandbox Code Playgroud)
您现在可以在所选的Python编辑器(例如PyCharm)中打开脚本并运行它.
11)将脚本移动到任何其他目录,然后尝试运行它,你会发现你会收到错误:
ModuleNotFoundError: No module named 'utils'
Run Code Online (Sandbox Code Playgroud)
因为我们还没有通知Python如何找到这些行使用的utils目录:
from utils import label_map_util
from utils import visualization_utils as vis_util
Run Code Online (Sandbox Code Playgroud)
要解决这个问题...
12)进入系统 - >高级系统设置 - >环境变量... - >新建,并添加名为PYTHONPATH的变量和这些值:
13)同样在Environment Variables下,编辑PATH并添加%PYTHONPATH%,如下所示:
14)重新启动以确保这些路径更改生效
15)拉出命令提示符并运行命令"set",验证PYTHONPATH是否存在,PYTHONPATH和PATH包含前面步骤中的值.
16)现在您可以将"object_detection_tutorial.py"复制到任何其他目录,它将运行
正如评论中提到的,utils是一个子模块,因此您实际上需要添加object_detection到PYTHONPATH,而不是object_detection/utils。
我很高兴它对你有用。