Я следую примеру, найденному здесь. Но всякий раз, когда я ввожу команду «C: / Program Files / protoc / bin / protoc» object_detection / protos / .proto --python_out =. Я получаю сообщение об ошибке object_detection / protos / .proto: нет такого файла или каталога. Я не могу создать каталог с именем * .proto. Так что мне не хватает фундаментальной информации о том, как это сделать. Поскольку я не могу найти никого, кто жаловался бы на эту проблему, это должно быть довольно просто. Я использую ОС Windows.
protoc object_detection / protos / *. proto: нет такого файла или каталога
Ответы (16)
Решено для Windows, перейдите в исследование и укажите протокол в пути, тогда это будет работать:
for /f %i in ('dir /b object_detection\protos\*.proto') do protoc object_detection\protos\%i --python_out=.
Удачи !
Обязательно смените каталог на «models \ research \» и попробуйте выполнить шаги из руководства, используя protoc версии 3.4.0, как и в руководстве. Я работал у меня только с 3.4.0.
моя строка cmd, которая работала:
C:\Users\...\protoc-3.4.0-win32\bin\protoc object_detection/protos/*.proto --python_out=.
Я собираюсь опубликовать это по всем тем вопросам, которые найду, чтобы люди знали. В любом случае я должен написать эти инструкции для себя и других позже.
Следующее работает и не работает:
protoc object_detection/protos/*.proto --python_out=.
* .Proto, обозначающий все файлы, не работает для компилятора. Если вы используете версию 3.5, вам необходимо указать каждый отдельный файл.
Итак, вот как это будет выглядеть:
- Запустить cmd
измените свой каталог на папку с исследованиями, которую вы скачали (может отличаться):
cd /d C:\Users\yourusername\Desktop\TensorFlow\models-master\models-master\research
Узнайте расположение загруженного файла protroc.exe.
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc
Перейдите в папку protos, чтобы знать, какие файлы нужно делать индивидуально
C:\Users\yourusername\Desktop\TensorFlow\models-master\models-master\research\object_detection\protos
Теперь начните спамить каждый отдельный элемент .proto в этой папке в 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
Или вы могли бы закончить день, получить 3,4 и запустить:
C:\Users\yourusername\Projects\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/*.proto --python_out=.
Дайте мне знать, если я могу уточнить еще кое-что. Я стараюсь говорить предельно ясно, чтобы идиоты вроде меня могли меня понять.
измените каталог на модели или мастер модели тензорного потока, тогда вам нужно скомпилировать файлы .proto protobuff, используя следующие команды, выполняемые одну за другой
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
protoc --python_out=. .\object_detection\protos\graph_rewriter.proto
У меня такая же ошибка Object_detection/protos/.proto: No such file or directory.
Это решается, когда я использую Protocol Buffers v3.4.0.
Убедитесь, что вы находитесь внутри models-master\research
, а затем используйте команду как:
FullPathToProtoc/protoc-3.4.0-win32/bin/protoc object_detection/protos/*.proto --python_out=.
ну в моем случае долго сломал голову ... проблема была в protoc версии 3.5 ... он не принимает эти аргументы в WINDOWS ... он будет работать полностью нормально, если вы загрузите версию 3.4.0, которую можно использовать с вашими точными аргументами :! protoc object_detection / protos / *. proto --python_out =.
Если окажется, что вам не хватает всего models/research/object_detection/protos
поддерева, как у меня, вы можете загрузить его отдельно с https://github.com/tensorflow/models. Отсутствие этих файлов приведет к той же ошибке, т.е. No such file or directory
.
Привет всем, вот как я смог решить эту ошибку, узнав об обнаружении объектов с помощью тензорного потока:
ШАГИ:
1- Чтобы загрузить Google Protobuf для 64-разрядной системы Windows 10, перейдите по этой ссылке. https://github.com/protocolbuffers/protobuf/releases/tag/v3.4.0 и установите «protoc-3.4.0-win32.zip». (Совет - не устанавливайте protoc-3.6.0).
2- Загрузите файл моделей по этой ссылке. https://github.com/tensorflow/models
3.Теперь вам нужно выполнить компиляцию protobuf в командной строке с помощью каталога исследований:
4-Сначала войдите в каталог исследований: cd C: \ Users \ Ankit \ tensorflow \ models \ research и нажмите Enter // просто пример.
5-Затем выполните этот шаг сразу после предыдущего шага:
"C: \ Users \ Ankit \ Desktop \ Tensorflow \ protbuf \ bin \ protoc.exe" object_detection / protos / *. Proto --python_out =. и нажмите Enter (между объектом и знаком "есть пробел", это написано в одну строку)
6-Примечание: перейдите в папку object_detection / protos, и если там есть файлы .py, вы успешно завершили компиляцию ваших файлов .proto.
СПАСИБО
Файлы .proto
должны находиться в tensorflow-models/research/object_detection/protos/
.
Итак, вы должны сначала
cd C:\path\to\tensorflow-models\research
как согласно инструкциям по установке. Вышеупомянутый путь является воображаемым и использует структуру пути Windows. Вы должны заменить его фактическим путем на вашем компьютере. И когда вы находитесь в этом каталоге, вы можете запустить свою команду:
C:\Program Files\protoc-<version>\bin\protoc object_detection/protos/.proto --python_out=.
Опять же, это всего лишь общий пример. Вам нужно будет заменить <version>
своей версией protoc
.
НЕ копируйте и вставляйте вышесказанное, так как это не будет работать непосредственно на вашем компьютере. Вместо этого вы должны найти путь к protoc
двоичному файлу на своем компьютере и использовать его в качестве команды перед object_detection/protos/.proto --python_out=.
иногда Windows Cmd не принимает подстановочный знак '*'. вот почему он показывает ошибку. вы можете использовать цикл для решения этой проблемы. Чтобы создать цикл в Cmd, просмотрите эту ссылку. https://ss64.com/nt/for.html ref: protoc не может найти файлы в Windows 7
Я столкнулся с проблемой missing output directive
. Решение, которое сработало для меня, заключалось в том, что я пробовал использовать полные имена файлов, поскольку *.proto
не работал.
У меня такая же проблема с ubuntu 16.04. Измените каталог на поиск, и теперь проблема с отсутствующим файлом решена.
Перейдите на страницу протокольных выпусков и загрузите протокол протоколов 3.4.0-win32.zip, распакуйте его, и вы найдете protoc.exe в каталоге bin. тогда к системному пути нужно добавить путь.
Переместите это в папку моделей / исследований. Проект модели тензорного потока.
Затем вы можете использовать команду protoc.
protoc object_detection / protos / *. proto --python_out =.
Небольшой код на Python, который может помочь вам быстрее скомпилировать протокол
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)
Это то, что я сделал, и я мог скомпилировать с версией 3.4 и 3.6 в 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=.)
Я использую protoc-3.6.1-win32.zip .. В windows
Создал командный файл, который скомпилирует все файлы .proto.
для %% v в object_detection \ protos * .proto do (D: \ bin \ protoc %% v --python_out =.)
Запустите этот командный файл из папки models \ research. Измените путь протокола. Надеюсь, это поможет другим, и нам не нужно устанавливать более старые версии протокола. Спасибо