Je suis l'exemple trouvé ici . Mais chaque fois que j'entre la commande "C:/Programmes/protocole/bin/protocole" object_detection/protos/.proto --python_out =. Je reçois une erreur indiquant object_detection/protos/ .proto: Aucun fichier ni répertoire de ce type . Je ne peux pas créer de répertoire nommé *. Il me manque donc des informations fondamentales sur la manière de procéder. Étant donné que je ne trouve personne se plaindre de ce problème, cela doit être assez simple… .. J'utilise un système d’exploitation Windows.
Résolu pour Windows, être dans ' research ' et avoir le chemin ' protoc ', alors cela fonctionnera
for /f %i in ('dir /b object_detection\protos\*.proto') do protoc object_detection\protos\%i --python_out=.
Bonne chance !
Assurez-vous de changer le répertoire en "modèles\research \" et essayez de suivre les étapes du tutoriel à l'aide du protocole version 3.4.0, tout comme le tutoriel. Je n'ai travaillé que pour moi en utilisant 3.4.0.
ma ligne de commande qui a fonctionné:
C:\Users\...\protoc-3.4.0-win32\bin\protoc object_detection/protos/*.proto --python_out=.
Je vais poster ceci sur toutes ces questions que je peux trouver pour que les gens sachent. De toute façon, je dois écrire ces instructions pour moi-même et les autres plus tard.
Ce qui suit fonctionne et ne fonctionne pas en quelque sorte:
protoc object_detection/protos/*.proto --python_out=.
Le * .proto désignant tous les fichiers ne fonctionne pas pour le compilateur. Si vous utilisezversion 3.5, vous devez spécifier chaque fichier individuel.
Alors voici ce à quoi cela ressemblerait:
remplacez votre répertoire par le dossier de recherche que vous avez téléchargé (peut différer):
cd /d C:\Users\yourusername\Desktop\TensorFlow\models-master\models-master\research
Obtenir l'emplacement du fichier protroc.exe que vous avez téléchargé
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc
Allez dans le dossier protos pour savoir quels fichiers vous devez faire individuellement
C:\Users\yourusername\Desktop\TensorFlow\models-master\models-master\research\object_detection\protos
Maintenant, commencez à spammer chaque élément .proto individuel de ce dossier dans Cmd:
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/anchor_generator.proto --python_out=.
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/argmax_matcher.proto --python_out=.
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/bipartite_matcher.proto --python_out=.
....and so on until you finish all items in the protos folder
Ou vous pouvez l'appeler un jour et obtenir 3.4 et exécuter:
C:\Users\yourusername\Projects\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/*.proto --python_out=.
Faites-moi savoir si je peux clarifier un peu plus. J'essaie d'être très clair pour que des idiots comme moi puissent comprendre.
changez le répertoire en modèles ou maître de modèle de tensorflow Ensuite, vous devez compiler les fichiers .proto de protobuff à l'aide des commandes suivantes, exécutées une par une
protoc --python_out=. .\object_detection\protos\anchor_generator.proto
protoc --python_out=. .\object_detection\protos\argmax_matcher.proto
protoc --python_out=. .\object_detection\protos\bipartite_matcher.proto
protoc --python_out=. .\object_detection\protos\box_coder.proto
protoc --python_out=. .\object_detection\protos\box_predictor.proto
protoc --python_out=. .\object_detection\protos\eval.proto
protoc --python_out=. .\object_detection\protos\faster_rcnn.proto
protoc --python_out=. .\object_detection\protos\faster_rcnn_box_coder.proto
protoc --python_out=. .\object_detection\protos\grid_anchor_generator.proto
protoc --python_out=. .\object_detection\protos\hyperparams.proto
protoc --python_out=. .\object_detection\protos\image_resizer.proto
protoc --python_out=. .\object_detection\protos\input_reader.proto
protoc --python_out=. .\object_detection\protos\losses.proto
protoc --python_out=. .\object_detection\protos\matcher.proto
protoc --python_out=. .\object_detection\protos\mean_stddev_box_coder.proto
protoc --python_out=. .\object_detection\protos\model.proto
protoc --python_out=. .\object_detection\protos\optimizer.proto
protoc --python_out=. .\object_detection\protos\pipeline.proto
protoc --python_out=. .\object_detection\protos\post_processing.proto
protoc --python_out=. .\object_detection\protos\preprocessor.proto
protoc --python_out=. .\object_detection\protos\region_similarity_calculator.proto
protoc --python_out=. .\object_detection\protos\square_box_coder.proto
protoc --python_out=. .\object_detection\protos\ssd.proto
protoc --python_out=. .\object_detection\protos\ssd_anchor_generator.proto
protoc --python_out=. .\object_detection\protos\string_int_label_map.proto
protoc --python_out=. .\object_detection\protos\train.proto
protoc --python_out=. .\object_detection\protos\keypoint_box_coder.proto
protoc --python_out=. .\object_detection\protos\multiscale_anchor_generator.proto
bien dans mon cas a cassé la tête longLong time ... le problème était dans le protocole version 3.5 ... il n'accepte pas ces arguments sur WINDOWS ... cela fonctionnera complètement bien si vous allez télécharger 3.4. 0 version qui peut être utilisée avec vos arguments exacts:! Protoc object_detection/protos/*. Proto --python_out =.
S'il s'avère que vous manquez tout le sous-arbre models/research/object_detection/protos
comme moi, vous pouvez le télécharger séparément à partir de https://github.com/tensorflow/models . Ne pas avoir ces fichiers donnera la même erreur, à savoir No such file or directory
.
Accédez à la page protoc releases et téléchargez le fichier protoc-3.4.0-win32.Zip, extrayez-le et localisez protoc.exe dans le répertoire bin. il faut ensuite ajouter chemin d'accès au chemin d'accès système.
Déplacez ceci vers le modèle/dossier de recherche projet de modèle tensorflow
Ensuite, vous pouvez utiliser la commande protoc.
protoc object_detection/protos/*. proto --python_out =.
Un peu de code python qui peut vous aider à compiler le protocole plus rapidement
import os
#folder where protos are located
os.chdir('C:\\Users\\ ~ \\models-master\\research\\object_detection\\protos')
#list protos
fs=os.listdir()
#back to where your protoc.exe is located
os.chdir('C:\\Users\\ ~ \\models-master\\research')
for f in fs:
if f.find(".proto")>-1:
print(f)
s='protoc object_detection/protos/'+f+' --python_out=.'
print(s)
os.system(s)
J'ai fait face au problème de missing output directive
. La solution qui a fonctionné pour moi a été d'essayer les noms de fichiers complets car *.proto
ne fonctionnait pas.
J'ai le même problème sur Ubuntu 16.04. Changer de répertoire pour rechercher et maintenant ce problème de fichier manquant résolu.
Les fichiers .proto
doivent être en tensorflow-models/research/object_detection/protos/
.
Donc, vous devriez d'abord
cd C:\path\to\tensorflow-models\research
comme selon les instructions d'installation . Ce qui précède est un chemin imaginaire et utilise la structure de chemin Windows. Vous devriez le remplacer par le chemin réel sur votre ordinateur. Et lorsque vous êtes dans ce répertoire, vous pouvez exécuter votre commande:
C:\Program Files\protoc-<version>\bin\protoc object_detection/protos/.proto --python_out=.
Encore une fois, ce qui précède n’est qu’un exemple général. Vous devrez remplacer <version>
par votre version protoc
.
Ne PAS copiez-collez ce qui précède, car cela ne fonctionnera pas directement sur votre ordinateur. Au lieu de cela, vous devez rechercher le chemin du binaire protoc
binaire sur votre ordinateur} _ et utiliser celui-ci comme commande avant object_detection/protos/.proto --python_out=.
parfois, Windows Cmd n'accepte pas le caractère générique '*'. c'est pourquoi il montre une erreur. vous pouvez utiliser boucle pour résoudre ce problème . pour créer une boucle dans Cmd checkout ce lien. https://ss64.com/nt/for.html ref: protoc ne peut pas trouver les fichiers dans Windows 7
J'ai la même erreur Object_detection/protos/.proto: No such file or directory.
Ceci est résolu lorsque j'utilise Protocol Buffers v3.4.0 .
Assurez-vous d'être à l'intérieur de models-master\research
, puis utilisez la commande comme suit:
FullPathToProtoc/protoc-3.4.0-win32/bin/protoc object_detection/protos/*.proto --python_out=.
C’est ce que j’ai fait et je pourrais compiler avec les versions 3.4 et 3.6 sous Windows 7 Professional.
C:\tensorflow1\models\research>for /F %i in
('dir /b
.\object_detection\protos\*
.proto') do ( c:\tensorflow1\models\research\bin/protoc
.\object_detection\protos\%i --python_out=.)
J'utilise protoc-3.6.1-win32.Zip .. Sous Windows
Création d'un fichier de commandes qui compilera tous les fichiers .proto.
pour %% v dans object_detection\protos * .proto do (D:\bin\protoc %% v --python_out =.)
Exécutez ce fichier de commandes à partir du dossier models\research. Ne changez pas le chemin du protocole . J'espère que cela aidera les autres et nous n’aurons pas besoin d’installer les anciennes versions de protocole . Merci.
Bonjour à tous, voici comment j'ai pu résoudre cette erreur en apprenant la détection d'objets à l'aide de tensorflow:
PAS:
1- Pour télécharger le système Google Protobuf pour Windows 10 64 bits, allez sur ce lien. https://github.com/protocolbuffers/protobuf/releases/tag/v3.4.0 et installez «protoc-3.4.0-win32.Zip». (Conseil - n'installez pas le protocole 3.6.0)
2- Téléchargez le fichier de modèles à partir de ce lien. https://github.com/tensorflow/models
3.Vous devez maintenant exécuter la compilation de protobuf dans la commande Invite à l'aide du répertoire de recherche:
4-Premier accès au répertoire de recherche: cd C:\Users\Ankit\tensorflow\models\research et appuyez sur Entrée // juste un exemple
5-Ensuite, faites cette étape immédiatement après l'étape ci-dessus:
"C:\Users\Ankit\Desktop\Tensorflow\protbuf\bin\protoc.exe" détection_objet/protos/*. Proto --python_out =. et appuyez sur Entrée (il y a un espace entre objet et "et le signe est écrit sur une seule ligne)
6-Note: Allez dans le dossier object_detection/protos, et s’il existe des fichiers .py, vous avez terminé la compilation de vos fichiers .proto.
JE VOUS REMERCIE