API обнаружения объектов Tensorflow в Windows - ошибка "ModuleNotFoundError: нет модуля с именем" utils ""
Я пытаюсь получить API обнаружения объектов TensorFlow
https://github.com/tensorflow/models/tree/master/research/object_detection
работая в Windows, следуя инструкциям по установке
https://github.com/tensorflow/models/tree/master/research/object_detection
Который, кажется, для Linux/Mac. Я могу заставить это работать, только если я помещу скрипт в каталог, в который я клонировал вышеуказанное хранилище. Если я помещаю скрипт в любой другой каталог, я получаю эту ошибку:
ModuleNotFoundError: No module named 'utils'
Я подозреваю, что причина заключается не в том, что Windows-эквивалент этой команды указан в инструкциях по установке выше:
# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
Я использую Windows 10, Python 3.6 и TensorFlow 1.4.0, если это имеет значение. Конечно, я гуглил по этому поводу и нашел разные ссылки, например, так:
https://github.com/tensorflow/models/issues/1747
Но это не решило проблему. Любые предложения о том, как решить эту проблему?
Вот шаги, которые я сделал до сих пор конкретно:
РЕДАКТИРОВАТЬ: эти шаги работают теперь после обновления, чтобы включить ответ RecencyEffect
1) Установите TensorFlow и связанные инструменты через pip3
2) В командной строке администратора выполните следующее:
pip3 install pillow
pip3 install lxml
pip3 install jupyter
pip3 install matplotlib
3) В моем случае клонируйте репозиторий TensorFlow "models" в папку Documents.
C:\Users\cdahms\Documents\models
4) Загрузил Google Protobuf https://github.com/google/protobuf Windows v3.4.0, выпуск "protoc-3.4.0-win32.zip" (я пробовал самый последний 3.5.1 и получил ошибки на последующих шагах, поэтому Я попробовал 3.4.0 для этого видео https://www.youtube.com/watch?v=COlbP62-B-U&list=PLQVvvaa0QuDcNK5GeCQnxYnSSaar2tpku&index=1 и компиляция protobuf сработала)
5) Распакуйте загрузку Protobuf в Program Files, в частности
"C:\Program Files\protoc-3.4.0-win32"
6) CD в каталог моделей \ исследований, в частности
cd C:\Users\cdahms\Documents\models\research
7) Выполнен сборщик protobuf, в частности
“C:\Program Files\protoc-3.4.0-win32\bin\protoc.exe” object_detection/protos/*.proto --python_out=.
Перейдите к:
C:\Users\cdahms\Documents\models\research\object_detection\protos
и убедитесь, что файлы.py были успешно созданы в результате компиляции (для начала были только файлы.proto)
8) перейдите в каталог object_detection, например:
cd C:\Users\cdahms\Documents\models\research\object_detection
затем введите следующую команду в командной строке, чтобы запустить object_detection_tutorial.ipynb Jupyter Notebook
jupyter notebook
9) В блокноте Jupyter выберите "object_detection_tutorial.ipynb" -> Cell -> Run all, пример должен работать в блокноте
10) В блокноте Jupyter выберите "Файл" -> "Загрузить как" -> "Python" и сохраните версию.py блокнота в тот же каталог, т.е.
C:\Users\cdahms\Documents\models\research\object_detection\object_detection_tutorial.py
Теперь вы можете открыть скрипт в выбранном вами редакторе Python (например, PyCharm) и запустить его.
РЕДАКТИРОВАТЬ в соответствии с ответом RecencyEffect ниже, если вы выполните эти дополнительные шаги, вы сможете запустить сценарий object_detection_tutorial.py из любого каталога
11) Переместите скрипт в любой другой каталог, затем попытайтесь запустить его, и вы обнаружите, что получите ошибку:
ModuleNotFoundError: No module named 'utils'
потому что мы еще не сообщили Python, как найти каталог utils, который используют эти строки:
from utils import label_map_util
from utils import visualization_utils as vis_util
Чтобы решить это.,,
12) Перейдите в Система -> Расширенные настройки системы -> Переменные среды.,, -> Создать и добавить переменную с именем PYTHONPATH и следующими значениями:
13) Также в разделе Переменные среды отредактируйте PATH и добавьте%PYTHONPATH% следующим образом:
14) Перезагрузитесь, чтобы изменения вступили в силу
15) Откройте командную строку и выполните команду "set", убедитесь, что PYTHONPATH есть, а PYTHONPATH и PATH содержали значения из предыдущих шагов.
16) Теперь вы можете скопировать "object_detection_tutorial.py" в любой другой каталог, и он будет работать
4 ответа
Как уже упоминалось в комментарии, utils
это подмодуль, так что вам действительно нужно добавить object_detection
в PYTHONPATH
не object_detection/utils
,
Я рад, что это сработало для вас.
Убедитесь, что у вас есть __init__.py
файл в папке исследований /object_detection/protos! __init__.py
Файл пуст, но должен существовать для правильного создания модуля protos.
CD Research / Object_Detection
CD..
Исследование
- экспорт PATH=~/anaconda3/bin:$PATH
ИССЛЕДОВАНИЕ
- git clone https://github.com/tensorflow/models.git
ИССЛЕДОВАНИЕ
3. Экспорт PYTHONPATH = $ PYTHONPATH:pwd
:pwd
/тонкий
4.protoc object_detection / protos/string_int_label_map.proto --python_out=.
CD OBJECT_DETECTION
- протокол protos/string_int_label_map.proto --python_out=.
Ноутбук 6.jupyter
Следующая команда не работает в Windows:
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
Вместо этого я следовал указаниям этого урока, который рекомендует устанавливать переменные пути для трех разных каталогов вручную. Я просто добавил путь для каталога utils. Пока что это сработало без ошибок.