Windows上的Tensorflow对象检测API - 错误“ModuleNotFoundError:没有名为'utils'的模块”

时间:2018-01-14 08:36:39

标签: python tensorflow object-detection 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'

我怀疑原因是没有正确执行上述安装说明中列出的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版本“protoc-3.4.0-win32.zip”(我尝试了最新的3.5.1并在后续步骤中出错,所以我尝试了3.4 .0每个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笔记本中,选择“object_detection_tutorial.ipynb” - >细胞 - >运行全部,示例应该在笔记本中运行

10)在Jupyter笔记本中,选择“文件” - > “下载为” - > “Python”,并将笔记本的.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的变量和这些值:

enter image description here

13)同样在Environment Variables下,编辑PATH并添加%PYTHONPATH%,如下所示:

enter image description here

14)重新启动以确保这些路径更改生效

15)拉出命令提示符并运行命令“set”,验证PYTHONPATH是否存在,PYTHONPATH和PATH包含前面步骤中的值。

16)现在你可以将“object_detection_tutorial.py”复制到任何其他目录并运行

4 个答案:

答案 0 :(得分:3)

正如评论中所述,utils是一个子模块,因此您实际上需要将object_detection添加到PYTHONPATH,而不是object_detection/utils

我很高兴它对你有用。

答案 1 :(得分:0)

cd Research / Object_Detection

cd ..

研究

  1. export PATH =〜/ anaconda3 / bin:$ PATH
  2. 研究

    1. git clone https://github.com/tensorflow/models.git
    2. 研究

      3.export PYTHONPATH = $ PYTHONPATH:pwdpwd / slim

      4.protoc object_detection / protos / string_int_label_map.proto --python_out =。

      CD OBJECT_DETECTION

      1. protoc protos / string_int_label_map.proto --python_out =。
      2. 6.jupyter notebook

答案 2 :(得分:0)

以下命令在Windows上不起作用:

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

相反,我遵循了这个tutorial的指示,它建议手动设置三个不同目录的路径变量。我只是为utils目录添加了一个路径。到目前为止它一直没有错误。

答案 3 :(得分:0)

确保您的research / object_detection / protos文件夹中有一个__init__.py文件! __init__.py文件为空,但需要存在该文件才能正确创建protos模块。