web-dev-qa-db-ja.com

Windows上のTensorflowオブジェクト検出API-エラー「ModuleNotFoundError: 'utils'という名前のモジュールがありません」

TensorFlow Object Detection APIを取得しようとしています

https://github.com/tensorflow/models/tree/master/research/object_detection

インストール手順に従ってWindowsで作業する

https://github.com/tensorflow/models/tree/master/research/object_detection

Linux/Mac用のようです。上記のレポジトリをクローンしたディレクトリにスクリプトを配置した場合にのみ、これを機能させることができます。スクリプトを他のディレクトリに配置すると、次のエラーが表示されます。

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"(最新の3.5.1を試してみて、後続のステップでエラーが発生したので、このvidごとに3.4.0を試しました https://www.youtube.com/watch?v=COlbP62-B-U&list=PLQVvvaa0QuDcNK5GeCQnxYnSSaar2tpku&index=1

5)Protobufダウンロードをプログラムファイルに抽出します。具体的には

"C:\Program Files\protoc-3.4.0-win32"

6)models\researchディレクトリへのCD、具体的には

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)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-> Run allを選択します。サンプルはノートブック内で実行する必要があります

10)Jupyter Notebookで[ファイル]-> [名前を付けてダウンロード]-> [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)また、環境変数の下で、PATHを編集し、%PYTHONPATH%を次のように追加します。

enter image description here

14)再起動して、これらのパスの変更を有効にします

15)コマンドプロンプトをプルアップしてコマンド「set」を実行し、PYTHONPATHが存在し、PYTHONPATHとPATHに前の手順の値が含まれていることを確認します。

16)「object_detection_tutorial.py」を他のディレクトリにコピーして実行できます

9
cdahms

コメントで述べたように、utilsはサブモジュールなので、実際にはobject_detectionではなく、object_detection/utilsPYTHONPATHに追加する必要があります。

私はそれがあなたのために働いてうれしいです。

3
RecencyEffect

次のコマンドはWindowsでは機能しません。

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

代わりに、この tutorial の指示に従いました。3つの異なるディレクトリのパス変数を手動で設定することをお勧めします。 utilsディレクトリのパスも追加しました。これまでのところ、エラーなしで機能しています。

0
lmum27

Research/object_detection/protosフォルダーに__init__.pyファイルがあることを確認してください! __init__.pyファイルは空ですが、protosモジュールを正しく作成するために存在する必要があります。

0
lrumancik

cd Research/Object_Detection

cd ..

研究

  1. export PATH =〜/ anaconda3/bin:$ PATH

研究

  1. git clone https://github.com/tensorflow/models.git

研究

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 =。

6.jupyterノート

0
manoj vasi