web-dev-qa-db-fra.com

API de détection d'objets Tensorflow sous Windows - erreur "ModuleNotFoundError: aucun module nommé" utils ""

J'essaie d'obtenir l'API de détection d'objet TensorFlow

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

travaillant sur Windows en suivant les instructions d'installation

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

Ce qui semble être pour Linux/Mac. Je ne peux obtenir que cela fonctionne si je mets un script dans le répertoire dans lequel j'ai cloné le rapport ci-dessus. Si je mets le script dans un autre répertoire, j'obtiens cette erreur:

ModuleNotFoundError: No module named 'utils'

Je soupçonne que la cause ne correspond pas correctement à l'équivalent Windows de cette commande répertoriée dans les instructions d'installation ci-dessus:

# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

J'utilise Windows 10, Python 3.6 et TensorFlow 1.4.0 si cela compte. Bien sûr, j'ai googlé sur ce problème et trouvé divers liens, par exemple:

https://github.com/tensorflow/models/issues/1747

Mais cela n'a pas résolu le problème. Des suggestions sur la façon de résoudre ceci?

Voici les étapes que j'ai déjà réalisées jusqu'à présent:


EDIT: ces étapes fonctionnent maintenant après la mise à jour pour intégrer la réponse de RecencyEffect

1) Installez TensorFlow et les outils associés via pip3

2) À partir d'une invite de commande administrative, exécutez ce qui suit:

pip3 install pillow
pip3 install lxml
pip3 install jupyter
pip3 install matplotlib

3) Cloner le référentiel "modèles" TensorFlow dans le dossier Documents, dans mon cas

C:\Users\cdahms\Documents\models

4) Téléchargé Google Protobuf https://github.com/google/protobuf Windows v3.4.0, version "protoc-3.4.0-win32.Zip" (j'ai essayé la version 3.5.1 la plus récente et des erreurs étapes ultérieures, j'ai donc essayé 3.4.0 par cette vidéo https://www.youtube.com/watch?v=COlbP62-B-U&list=PLQVvvaa0QuDcNK5GeCQnxYnSSaar2tpku&index=1 et la compilation de protobuf a fonctionné)

5) Extraire le téléchargement de Protobuf dans Program Files, en particulier

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

6) CD dans le répertoire models\research, en particulier

cd C:\Users\cdahms\Documents\models\research

7) Exécuté le protobuf compiler, spécifiquement

“C:\Program Files\protoc-3.4.0-win32\bin\protoc.exe” object_detection/protos/*.proto --python_out=.

Aller vers:

C:\Users\cdahms\Documents\models\research\object_detection\protos

et vérifiez que les fichiers .py ont été créés avec succès à la suite de la compilation (seuls les fichiers .proto étaient présents au départ)

8) cd dans le répertoire object_detection, ex:

cd C:\Users\cdahms\Documents\models\research\object_detection

puis entrez ce qui suit dans une invite de commande pour démarrer le bloc-notes object_detection_tutorial.ipynb Jupyter

jupyter notebook

9) Dans le bloc-notes Jupyter, choisissez "object_detection_tutorial.ipynb" -> Cellule -> Tout exécuter, l'exemple doit être exécuté dans le bloc-notes.

10) Dans le Jupyter Notebook, choisissez “Fichier” -> “Télécharger en tant que” -> “Python” et enregistrez la version .py du cahier dans le même répertoire, c.-à-d.

C:\Users\cdahms\Documents\models\research\object_detection\object_detection_tutorial.py

Vous pouvez maintenant ouvrir le script dans l'éditeur Python de votre choix (par exemple, PyCharm) et l'exécuter.


EDIT par la réponse de RecencyEffect ci-dessous, si vous suivez ces étapes supplémentaires, vous pourrez exécuter le script object_detection_tutorial.py à partir de n'importe quel répertoire.

11) Déplacez le script dans n’importe quel autre répertoire, puis essayez de l’exécuter et vous constaterez que vous obtiendrez l’erreur suivante:

ModuleNotFoundError: No module named 'utils'

parce que nous n'avons pas encore informé Python comment trouver le répertoire utils que ces lignes utilisent:

from utils import label_map_util
from utils import visualization_utils as vis_util

Pour résoudre ceci. . .

12) Sélectionnez Système -> Paramètres système avancés -> Variables d’environnement. . . -> Nouveau, et ajoutez une variable avec le nom PYTHONPATH et ces valeurs:

 enter image description here

13) Également sous Variables d’environnement, éditez PATH et ajoutez% PYTHONPATH% comme ceci:

 enter image description here

14) Redémarrez pour vous assurer que ces modifications de chemin prennent effet

15) Ouvrez une invite de commande et exécutez la commande "set", vérifiez que PYTHONPATH est présent et que PYTHONPATH et PATH contenaient les valeurs des étapes précédentes.

16) Maintenant, vous pouvez copier le "object_detection_tutorial.py" dans n’importe quel autre répertoire et il sera exécuté

7
cdahms

Comme mentionné dans le commentaire, utils est un sous-module, vous devez donc ajouter object_detection à PYTHONPATH et non pas object_detection/utils.

Je suis content que cela a fonctionné pour vous.

3
RecencyEffect

La commande suivante ne fonctionne pas sous Windows:

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

Au lieu de cela, j'ai suivi les instructions de ce tutorial , qui recommande de définir manuellement les variables de chemin pour trois répertoires différents. J'ai simplement ajouté un chemin pour le répertoire utils. Jusqu'à présent, cela a fonctionné sans erreur.

0
lmum27

Assurez-vous d'avoir un fichier __init__.py dans votre dossier research/object_detection/protos! Le fichier __init__.py est vide mais doit exister pour que le module protos soit créé correctement.

0
lrumancik

cd Research/Object_Detection

cd ..

Recherche

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

RECHERCHE

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

RECHERCHE

3.export PYTHONPATH = $ PYTHONPATH: pwd: pwd/slim 

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

CD OBJECT_DETECTION

  1. protocole protos/string_int_label_map.proto --python_out =.

Cahier 6.jupyter

0
manoj vasi