ImportError: невозможно импортировать имя 'input_reader_pb2'

работает на win10 64-бит

когда я пытаюсь обучить свою модель E:\projectx\model-master\models-master>python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_mobilenet_v1_pets.config

эта ошибка появляется

Файл "train.py", строка 49, в from object_detection.builders import dataset_builder Файл "C: \ Users \ DELL \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ object_detection-0.1-py3.6. egg \ object_detection \ builders \ dataset_builder.py ", строка 27, в from object_detection.data_decoders import tf_example_decoder File" C: \ Users \ DELL \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ object_detection-0.1- py3.6.egg \ object_detection \ data_decoders \ tf_example_decoder.py ", строка 27, в from object_detection.protos import input_reader_pb2 ImportError: невозможно импортировать имя 'input_reader_pb2'

Я запускаю protoc 3.4 protoc object_detection/protos/*.proto --python_out=., но ошибка все еще существует, я все проверяю, и все должно быть в порядке и работать, это меня сходит с ума !!

пожалуйста, помогите .... спасибо


person Ferado Alberto    schedule 30.07.2018    source источник


Ответы (4)


Поскольку вы уже скомпилировали все файлы .proto в object_detection / protos /. Вы должны увидеть файлы Python с символом _pb2, например eval_pb2. Если вы их видите, перейдите в каталог models / research и запустите этот код один за другим:

python setup.py build
python setup.py install
person Foysal Khandakar Joy    schedule 19.02.2020

Изнутри папки object_detection:

protoc ../object_detection/protos/*.proto --python_out=.

Эта команда сгенерирует *_pb2.py для каждого .proto файла в папке object_detection/protos/.


Примечание: важно указать путь выше object_detection, иначе могут возникнуть ошибки, скорее всего:

object_detection / protos / ssd_anchor_generator.proto: файл не найден.

protos / anchor_generator.proto: 8: 1: Импорт object_detection / protos / ssd_anchor_generator.proto не был найден или имел ошибки.

protos / anchor_generator.proto: 17: 5: FlexibleGridAnchorGenerator не определен.


Если ошибка не устранена, вероятно, вы находитесь в неправильной папке, взгляните на выходное сообщение, чтобы узнать, откуда он пытается импортировать файл, и выполните команду в правильном каталоге.

В крайнем случае: загрузите модуль object_detection со страницы https://github.com/tensorflow/models/tree/master/research поместите его в свой рабочий каталог, введите его и повторите команду выше. Это обязательно будет работать, поскольку локальные модули имеют приоритет импорта над sys.path.

В противном случае сообщение об ошибке, вероятно, будет отличаться от сообщенного, и проблема заключается в установке tensorflow или компиляторе protobuf; как здесь, где проблема была вызвана версией protoc.

другие полезные ссылки: https://github.com/tensorflow/models/issues/5264

person Marco D.G.    schedule 19.03.2020

Возможно, вы не добавили модуль slim в PYTHONPATH. Это можно сделать, запустив приведенный ниже код в каталоге models / research.

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
person naman Gupta    schedule 02.11.2020

Похоже, вы не компилировали protobuf. Для ее решения:

  1. Загрузите последнюю версию protoc exe здесь: https://github.com/google/protobuf/releases (в вашем случае должно быть win32)
  2. Переименуйте эту папку в «протокол».
  3. Поместите эту папку в модели / исследования
  4. в моделях / исследованиях через консоль запустить:

    protoc/bin/protoc object_detection/protos/*.proto --python_out=.
    

Я не знаю точно, будет ли эта команда работать в Windows, но вы должны быть уверены, что используете компилятор protoc, который вы скачали (v.3.6), вместо protoc в вашей среде.

person Perona    schedule 01.08.2018
comment
эта команда не работает в Windows, и даже если вы скомпилируете файлы один за другим с помощью командных файлов, вы все равно получите сообщение об ошибке - person Stepan Yakovenko; 13.04.2019