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:
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.
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:
13) Également sous Variables d’environnement, éditez PATH et ajoutez% PYTHONPATH% comme ceci:
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é
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.
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.
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.
cd Research/Object_Detection
cd ..
Recherche
RECHERCHE
RECHERCHE
3.export PYTHONPATH = $ PYTHONPATH: pwd
: pwd
/slim
4.protoc object_detection/protos/string_int_label_map.proto --python_out =.
CD OBJECT_DETECTION
Cahier 6.jupyter