Ответ 1
Решено для Windows, быть в " исследовании " и иметь " протокол " в пути, тогда это будет работать:
for /f %i in ('dir /b object_detection\protos\*.proto') do protoc object_detection\protos\%i --python_out=.
Удачи !
Я следую примеру, найденному здесь. Но всякий раз, когда я ввожу команду "C: /Program Files/protoc/bin/protoc", object_detection/protos/.proto --python_out =. Я получаю сообщение об ошибке: object_detection/protos/.proto: такого файла или каталога нет. Я не могу создать каталог с именем *.proto. Так что мне не хватает фундаментальной информации о том, как это сделать. Поскольку я не могу найти никого, кто бы жаловался на эту проблему, это должно быть довольно просто. Я использую ОС Windows.
Решено для 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, вы должны указать каждый отдельный файл.
Итак, вот как это будет выглядеть:
Перейдите в папку с исследованиями, которую вы скачали (может отличаться):
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=.
Дайте мне знать, если я могу уточнить еще. Я стараюсь быть очень ясным, чтобы идиоты вроде меня могли понять.
измените каталог на модель или мастер модели tenorflow, затем вам нужно скомпилировать .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 версии 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
.
Привет всем, вот как я смог решить эту ошибку, узнав об обнаружении объектов с помощью tenorflow:
ШАГИ:
1- Чтобы загрузить 64-разрядную систему Google Protobuf для 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\tenorflow\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=.
иногда окна Cmd не принимают подстановочный знак '*'. поэтому он показывает ошибку. вы можете использовать цикл для решения этой проблемы. для создания Loop в Cmd checkout эта ссылка. https://ss64.com/nt/for.html ссылка: protoc не может найти файлы в Windows 7
Я столкнулся с проблемой missing output directive
. Решение, которое сработало для меня, состояло в том, что я попробовал полные имена файлов, так как *.proto
не работал.
У меня такая же проблема на Ubuntu 16.04. Измените каталог на исследование, и теперь проблема с отсутствующим файлом решена.
Перейдите на страницу выпусков protoc и загрузите файл protoc-3.4.0-win32.zip, распакуйте его, и вы найдете protoc.exe в каталоге bin. тогда нужно добавить путь к системному пути.
Переместите это в модель/папку исследований.
Далее вы можете использовать команду protoc.
protoc object_detection/protos/*. proto --python_out =.
Небольшой Python-код, который может помочь вам быстрее скомпилировать protoc
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=.)
У меня та же ошибка 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.6.1-win32.zip.. На окнах
Создан командный файл, который скомпилирует все .proto файлы.
для %% v в object_detection\protos *.proto do (D:\bin\protoc %% v --python_out =.)
Запустите этот пакетный файл из папки models\research. Измените путь к протоку. Надеюсь, это поможет другим, и нам не нужно устанавливать старые версии protoc. Спасибо
попробуйте это, просто поместите protoc в нужный файл: https://www.youtube.com/watch?v=LjQuxF4OecI&t=3s