Tensorflow Object Detection API on Windows - error "ModuleNotFoundError: No module named 'utils'"
Tensorflow Object Detection API on Windows - error "ModuleNotFoundError: No module named 'utils'"
我正在尝试获取 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'
我怀疑原因是没有正确执行 Windows 与上面安装说明中列出的此命令等效的命令:
# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
我正在使用 Windows 10、Python 3.6 和 TensorFlow 1.4.0(如果需要的话)。当然,我已经 Google 解决了这个问题并找到了各种链接,例如:
https://github.com/tensorflow/models/issues/1747
但这并没有解决这个问题。关于如何解决这个问题有什么建议吗?
以下是我到目前为止具体执行的步骤:
编辑:这些步骤在更新后现在可以使用 RecencyEffect 的答案
1) 通过pip3安装TensorFlow及相关工具
2) 在管理命令提示符下,运行 以下内容:
pip3 install pillow
pip3 install lxml
pip3 install jupyter
pip3 install matplotlib
3) 将 TensorFlow "models" 存储库克隆到 Documents 文件夹,在我的例子中
C:\Users\cdahms\Documents\models
4) 下载 Google Protobuf https://github.com/google/protobuf Windows v3.4.0 release "protoc-3.4.0-win32.zip" (I tried the most current 3.5.1 and got errors on the subsequent steps, so I tried 3.4.0 per this vid https://www.youtube.com/watch?v=COlbP62-B-U&list=PLQVvvaa0QuDcNK5GeCQnxYnSSaar2tpku&index=1 并且 protobuf 编译成功)
5) 将 Protobuf 下载提取到 Program Files,特别是
"C:\Program Files\protoc-3.4.0-win32"
6) CD进入models\research目录,具体为
cd C:\Users\cdahms\Documents\models\research
7) 执行了 protobuf 编译,特别是
“C:\Program Files\protoc-3.4.0-win32\bin\protoc.exe” object_detection/protos/*.proto --python_out=.
导航至:
C:\Users\cdahms\Documents\models\research\object_detection\protos
并验证 .py 文件是否作为编译结果成功创建(只有 .proto 文件开始)
8) cd 到 object_detection 目录,例如:
cd C:\Users\cdahms\Documents\models\research\object_detection
然后在命令提示符处输入以下内容以启动 object_detection_tutorial.ipynb Jupyter Notebook
jupyter notebook
9) 在Jupyter Notebook中,选择"object_detection_tutorial.ipynb" -> Cell -> 运行 all,示例应该运行 in the notebook
10) 在Jupyter Notebook中,选择“文件”->“下载为”->“Python”,将notebook的.py版本保存到同一目录,即
C:\Users\cdahms\Documents\models\research\object_detection\object_detection_tutorial.py
您现在可以在您选择的 Python 编辑器(例如 PyCharm)和 运行 中打开脚本。
根据 RecencyEffect 在下面的回答进行编辑,如果您遵循这些额外的步骤,您将能够 运行 来自任何目录的 object_detection_tutorial.py 脚本
11) 将脚本移动到任何其他目录,然后尝试 运行 它,你会发现你会得到错误:
ModuleNotFoundError: No module named 'utils'
因为我们还没有告知Python如何找到这些行使用的utils目录:
from utils import label_map_util
from utils import visualization_utils as vis_util
要解决这个问题。 . .
12) 进入系统 -> 高级系统设置 -> 环境变量。 . . -> 新建,并添加一个名为 PYTHONPATH 和这些值的变量:
13) 同样在环境变量下,编辑 PATH 并添加 %PYTHONPATH%,如下所示:
14) 重新启动以确保这些路径更改生效
15) 打开命令提示符和 运行 命令 "set",确认 PYTHONPATH 存在并且 PYTHONPATH 和 PATH 包含前面步骤的值。
16) 现在您可以将 "object_detection_tutorial.py" 复制到任何其他目录,它将 运行
如评论中所述,utils
是一个子模块,因此您实际上需要将 object_detection
添加到 PYTHONPATH
,而不是 object_detection/utils
。
很高兴它对你有用。
cd Research/Object_Detection
CD ..
研究
- 导出路径=~/anaconda3/bin:$路径
研究
研究
3.export PYTHONPATH=$PYTHONPATH:pwd
:pwd
/slim
4.protoc object_detection/protos/string_int_label_map.proto --python_out=.
CD OBJECT_DETECTION
- protoc protos/string_int_label_map.proto --python_out=.
6.jupyter笔记本
以下命令在 Windows 上不起作用:
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
相反,我遵循了此 tutorial 的说明,它建议手动为三个不同的目录设置路径变量。我也只是为 utils 目录添加了一个路径。到目前为止它一直没有错误。
确保您的 research/object_detection/protos 文件夹中有 __init__.py
文件! __init__.py
文件为空,但需要存在才能正确创建 protos 模块。
我正在尝试获取 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'
我怀疑原因是没有正确执行 Windows 与上面安装说明中列出的此命令等效的命令:
# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
我正在使用 Windows 10、Python 3.6 和 TensorFlow 1.4.0(如果需要的话)。当然,我已经 Google 解决了这个问题并找到了各种链接,例如:
https://github.com/tensorflow/models/issues/1747
但这并没有解决这个问题。关于如何解决这个问题有什么建议吗?
以下是我到目前为止具体执行的步骤:
编辑:这些步骤在更新后现在可以使用 RecencyEffect 的答案
1) 通过pip3安装TensorFlow及相关工具
2) 在管理命令提示符下,运行 以下内容:
pip3 install pillow
pip3 install lxml
pip3 install jupyter
pip3 install matplotlib
3) 将 TensorFlow "models" 存储库克隆到 Documents 文件夹,在我的例子中
C:\Users\cdahms\Documents\models
4) 下载 Google Protobuf https://github.com/google/protobuf Windows v3.4.0 release "protoc-3.4.0-win32.zip" (I tried the most current 3.5.1 and got errors on the subsequent steps, so I tried 3.4.0 per this vid https://www.youtube.com/watch?v=COlbP62-B-U&list=PLQVvvaa0QuDcNK5GeCQnxYnSSaar2tpku&index=1 并且 protobuf 编译成功)
5) 将 Protobuf 下载提取到 Program Files,特别是
"C:\Program Files\protoc-3.4.0-win32"
6) CD进入models\research目录,具体为
cd C:\Users\cdahms\Documents\models\research
7) 执行了 protobuf 编译,特别是
“C:\Program Files\protoc-3.4.0-win32\bin\protoc.exe” object_detection/protos/*.proto --python_out=.
导航至:
C:\Users\cdahms\Documents\models\research\object_detection\protos
并验证 .py 文件是否作为编译结果成功创建(只有 .proto 文件开始)
8) cd 到 object_detection 目录,例如:
cd C:\Users\cdahms\Documents\models\research\object_detection
然后在命令提示符处输入以下内容以启动 object_detection_tutorial.ipynb Jupyter Notebook
jupyter notebook
9) 在Jupyter Notebook中,选择"object_detection_tutorial.ipynb" -> Cell -> 运行 all,示例应该运行 in the notebook
10) 在Jupyter Notebook中,选择“文件”->“下载为”->“Python”,将notebook的.py版本保存到同一目录,即
C:\Users\cdahms\Documents\models\research\object_detection\object_detection_tutorial.py
您现在可以在您选择的 Python 编辑器(例如 PyCharm)和 运行 中打开脚本。
根据 RecencyEffect 在下面的回答进行编辑,如果您遵循这些额外的步骤,您将能够 运行 来自任何目录的 object_detection_tutorial.py 脚本
11) 将脚本移动到任何其他目录,然后尝试 运行 它,你会发现你会得到错误:
ModuleNotFoundError: No module named 'utils'
因为我们还没有告知Python如何找到这些行使用的utils目录:
from utils import label_map_util
from utils import visualization_utils as vis_util
要解决这个问题。 . .
12) 进入系统 -> 高级系统设置 -> 环境变量。 . . -> 新建,并添加一个名为 PYTHONPATH 和这些值的变量:
13) 同样在环境变量下,编辑 PATH 并添加 %PYTHONPATH%,如下所示:
14) 重新启动以确保这些路径更改生效
15) 打开命令提示符和 运行 命令 "set",确认 PYTHONPATH 存在并且 PYTHONPATH 和 PATH 包含前面步骤的值。
16) 现在您可以将 "object_detection_tutorial.py" 复制到任何其他目录,它将 运行
如评论中所述,utils
是一个子模块,因此您实际上需要将 object_detection
添加到 PYTHONPATH
,而不是 object_detection/utils
。
很高兴它对你有用。
cd Research/Object_Detection
CD ..
研究
- 导出路径=~/anaconda3/bin:$路径
研究
研究
3.export PYTHONPATH=$PYTHONPATH:pwd
:pwd
/slim
4.protoc object_detection/protos/string_int_label_map.proto --python_out=.
CD OBJECT_DETECTION
- protoc protos/string_int_label_map.proto --python_out=.
6.jupyter笔记本
以下命令在 Windows 上不起作用:
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
相反,我遵循了此 tutorial 的说明,它建议手动为三个不同的目录设置路径变量。我也只是为 utils 目录添加了一个路径。到目前为止它一直没有错误。
确保您的 research/object_detection/protos 文件夹中有 __init__.py
文件! __init__.py
文件为空,但需要存在才能正确创建 protos 模块。