Нет библиотеки cv2 в AzureML

Я пытаюсь изучить SDK AzureML и обучить свою модель в облаке.

Я успешно обучаю демонстрационный проект, расположенный здесь.

Теперь, когда я хочу обучить свою собственную модель, я получаю сообщение об ошибке:

UserError","message":"No module named 'cv2'","target":null,"details":[],"innerErro...

Это означает, что cv2 не установлен на AzureML, и я использую его в своем скрипте обучения...

Как установить библиотеку pip на AzureML или как «скопировать» виртуальную среду в мою рабочую область


person Marko Zadravec    schedule 16.07.2019    source источник


Ответы (2)


Ответ заключается в том, чтобы добавить opencv-python-headless в качестве установки pip следующим образом:

TensorFlow(source_directory=script_folder,
                script_params=script_params,
                compute_target=compute_target,
                entry_script=train_script_name,
                pip_packages=['opencv-python-headless', 'scikit-image', 'mathematics', 'keras', 'scikit-learn'],
                use_gpu=True)
person Marko Zadravec    schedule 31.07.2019
comment
Спасибо. Это сработало для меня, так как я получал следующую ошибку при попытке импортировать cv2 в python: ImportError: libGL.so.1: cannot open shared object file: No such file or directory - person musterschüler; 13.08.2020

Я полагаю, вы имеете в виду, что вы тренируетесь на управляемых вычислениях Azure ML?! Если это так, вам нужно указать все необходимые пакеты в файле зависимостей Conda. Инструкции см. здесь: https://docs.microsoft.com/sl-si/azure/machine-learning/service/how-to-set-up-training-targets#system-managed-environment

Используйте управляемую системой среду, если вы хотите, чтобы Conda управляла средой Python и зависимостями скриптов за вас. Среда, управляемая системой, предполагается по умолчанию и является наиболее распространенным выбором. Это полезно для удаленных целей вычислений, особенно если вы не можете настроить эту цель.

Все, что вам нужно сделать, это указать каждую зависимость пакета с помощью класса CondaDependency. Затем Conda создает файл с именем conda_dependencies.yml в каталоге aml_config в вашей рабочей области со списком зависимостей пакетов и настраивает среду Python при отправке обучающего эксперимента.

В качестве альтернативы, если вы используете оценщики и вам требуется только несколько пакетов, вы также можете указать их напрямую:

estimator = SKLearn(source_directory=project_folder, 
                script_params=script_params,
                compute_target=compute_target,
                entry_script='train_iris.py'
                pip_packages=['joblib']
               )

https://docs.microsoft.com/en-Us/azure/machine-learning/service/how-to-train-scikit-learn#create-a-scikit-learn-estimator

person silent    schedule 16.07.2019
comment
Привет спасибо. Я использую SKLearn. Я добавляю pip_packages=['opencv'] и теперь получаю сообщение об ошибке: Сбор opencv (из -r /azureml-setup/condaenv.p5_1v_zd.requirements.txt (строка 1)) [91m ОШИБКА: не удалось найти версию, которая удовлетворяет требование opencv (из -r /azureml-setup/condaenv.p5_1v_zd.requirements.txt (строка 1)) (из версий: нет) - person Marko Zadravec; 16.07.2019
comment
похоже, что пакет называется opencv-python pypi.org/project/opencv-python - person silent; 16.07.2019
comment
Хорошо, теперь это проходит, но появляется ошибка после: Файл train.py, строка 5, в ‹module› import cv2 File /azureml-envs/azureml_62431a64abe69dd83df2462885045150/lib/python3.6/site-packages/cv2/__init__.py, строка 3, в «модуле» из импорта .cv2 * ImportError: libSM.so.6: невозможно открыть общий объектный файл: нет такого файла или каталога - person Marko Zadravec; 16.07.2019
comment
ваш train.py работает нормально в вашей локальной среде с python 3.6? - person silent; 16.07.2019
comment
Да, это так,... проблема, похоже, связана с импортом cv2,.... хотя установка pip проходит нормально. - person Marko Zadravec; 16.07.2019