Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Расширение машинного обучения Azure CLI версии 2 (current)
Python SDK azure-ai-ml версии 2 (current)
В этом руководстве вы узнаете, как обучить модель обнаружения объектов с помощью автоматизированного машинного обучения Azure с расширением ИНТЕРФЕЙСА командной строки Машинного обучения Azure версии 2 или пакетом SDK Python для Машинного обучения Azure версии 2. Эта модель обнаружения объектов определяет, содержит ли изображение объекты, такие как канавка, картон, бутылка молока или бутылка воды.
Автоматизированное машинное обучение принимает обучающие данные и параметры конфигурации и автоматически выполняет итерацию с помощью сочетаний различных методов нормализации и стандартизации функций, моделей и параметров гиперпараметра, чтобы получить лучшую модель.
Вы напишете код с помощью пакета SDK для Python в этом руководстве и изучите следующие задачи:
- Скачивание и преобразование данных.
- Обучение модели обнаружения объектов автоматизированного машинного обучения.
- Определение значений гиперпараметров для модели.
- Выполнение очистки гиперпараметров.
- Развертывание модели
- Визуализация обнаружений.
Необходимые компоненты
-
Чтобы использовать Машинное обучение Azure, вам нужна рабочая область. Если у вас нет ресурсов, выполните инструкции по созданию рабочей области и узнайте больше об использовании.
Внимание
Если в рабочей области Машинное обучение Azure настроена управляемая виртуальная сеть, может потребоваться добавить правила для исходящего трафика, чтобы разрешить доступ к общедоступным репозиториям пакетов Python. Дополнительные сведения см. в статье "Сценарий: доступ к общедоступным пакетам машинного обучения".
Используйте Python 3.10 или более поздней версии.
Скачайте и распакуйте файл данных odFridgeObjects.zip . Набор данных аннотирован в формате VOC Pascal, где каждое изображение соответствует XML-файлу. Каждый XML-файл содержит сведения о расположении соответствующего файла образа, а также содержит сведения о ограничивающих полях и метках объектов. Чтобы использовать эти данные, сначала необходимо преобразовать их в требуемый формат JSONL, как показано в секции "Преобразование загруженных данных в JSONL" записной книжки automl-image-object-detection-task-fridge-items.ipynb.
Используйте вычислительный экземпляр для выполнения этого руководства без дополнительной установки. (См. раздел "Создание вычислительного экземпляра".) Или установите интерфейс командной строки или пакет SDK для использования собственной локальной среды.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)Этот же учебник доступен в репозитории azureml-examples на сайте GitHub. Если вы хотите запустить его в локальной среде, установите и настройте ИНТЕРФЕЙС командной строки (версии 2) и убедитесь, что установите
mlрасширение.
Настройка целевых объектов вычисления
Примечание.
Чтобы попробовать бессерверные вычисления, пропустите этот шаг и перейдите к настройке эксперимента.
Сначала необходимо настроить целевой объект вычислений, который будет использоваться для обучения модели автоматизированного машинного обучения. Для моделей автоматизированного машинного обучения требуются номера SKU GPU для выполнения задач с изображениями.
В этом руководстве используется серия NCsv3 (с gpu V100), так как этот тип целевого объекта вычислений использует несколько GPU для ускорения обучения. Кроме того, можно настроить несколько узлов, чтобы воспользоваться преимуществами параллелизма при настройке гиперпараметров модели.
Следующий код создает вычислительные ресурсы GPU размером Standard_NC64as_T4_v3 с четырьмя узлами.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
Создайте YML-файл со следующей конфигурацией.
$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json
name: gpu-cluster
type: amlcompute
size: Standard_NC64as_T4_v3
min_instances: 0
max_instances: 4
idle_time_before_scale_down: 120
Чтобы создать ресурс вычислений, выполните следующую команду CLI версии 2, указав путь к вашему файлу .yml, имя рабочей области, группу ресурсов и идентификатор подписки.
az ml compute create -f [PATH_TO_YML_FILE] --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Настройка эксперимента
Вы можете использовать эксперимент для отслеживания заданий обучения модели.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
Имя эксперимента можно указать с помощью experiment_name ключа:
experiment_name: dpv2-cli-automl-image-object-detection-experiment
Визуализация входных данных
После подготовки входных данных изображения в формате JSON Lines можно визуализировать ограничивающие прямоугольники для данного изображения. Для этого установите matplotlib.
%pip install --upgrade matplotlib
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.patches as patches
from PIL import Image as pil_image
import numpy as np
import json
import os
def plot_ground_truth_boxes(image_file, ground_truth_boxes):
# Display the image
plt.figure()
img_np = mpimg.imread(image_file)
img = pil_image.fromarray(img_np.astype("uint8"), "RGB")
img_w, img_h = img.size
fig,ax = plt.subplots(figsize=(12, 16))
ax.imshow(img_np)
ax.axis("off")
label_to_color_mapping = {}
for gt in ground_truth_boxes:
label = gt["label"]
xmin, ymin, xmax, ymax = gt["topX"], gt["topY"], gt["bottomX"], gt["bottomY"]
topleft_x, topleft_y = img_w * xmin, img_h * ymin
width, height = img_w * (xmax - xmin), img_h * (ymax - ymin)
if label in label_to_color_mapping:
color = label_to_color_mapping[label]
else:
# Generate a random color. If you want to use a specific color, you can use something like "red."
color = np.random.rand(3)
label_to_color_mapping[label] = color
# Display bounding box
rect = patches.Rectangle((topleft_x, topleft_y), width, height,
linewidth=2, edgecolor=color, facecolor="none")
ax.add_patch(rect)
# Display label
ax.text(topleft_x, topleft_y - 10, label, color=color, fontsize=20)
plt.show()
def plot_ground_truth_boxes_jsonl(image_file, jsonl_file):
image_base_name = os.path.basename(image_file)
ground_truth_data_found = False
with open(jsonl_file) as fp:
for line in fp.readlines():
line_json = json.loads(line)
filename = line_json["image_url"]
if image_base_name in filename:
ground_truth_data_found = True
plot_ground_truth_boxes(image_file, line_json["label"])
break
if not ground_truth_data_found:
print("Unable to find ground truth information for image: {}".format(image_file))
Используя приведенные выше вспомогательные функции для любого заданного изображения, можно запустить следующий код для отображения ограничивающих прямоугольников.
image_file = "./odFridgeObjects/images/31.jpg"
jsonl_file = "./odFridgeObjects/train_annotations.jsonl"
plot_ground_truth_boxes_jsonl(image_file, jsonl_file)
Отправка данных и создание MLTable
Чтобы использовать данные для обучения, загрузите их в объектное хранилище по умолчанию рабочей области Azure Machine Learning и зарегистрируйте как ресурс. Регистрация данных дает несколько преимуществ:
- Легко поделиться с другими членами команды.
- Управление версиями метаданных (расположение, описание и т. д.).
- Отслеживание родословной.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
Создайте YML-файл со следующей конфигурацией.
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: fridge-items-images-object-detection
description: Fridge-items images Object detection
path: ./data/odFridgeObjects
type: uri_folder
Чтобы отправить изображения в качестве ресурса данных, используйте следующую команду CLI версии 2, указав путь к вашему файлу .yml, имя рабочей области, группу ресурсов и идентификатор подписки.
az ml data create -f [PATH_TO_YML_FILE] --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Следующим шагом является создание MLTable из данных в формате JSONL, как показано в следующем примере. MLTable упаковывает ваши данные в используемый объект для обучения.
paths:
- file: ./train_annotations.jsonl
transformations:
- read_json_lines:
encoding: utf8
invalid_lines: error
include_path_column: false
- convert_column_types:
- columns: image_url
column_type: stream_info
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
Следующая конфигурация создает обучающие и проверочные данные на основе MLTable.
target_column_name: label
training_data:
path: data/training-mltable-folder
type: mltable
validation_data:
path: data/validation-mltable-folder
type: mltable
Настройка эксперимента по обнаружению объектов
Чтобы настроить автоматизированные задания машинного обучения для задач, связанных с изображениями, создайте задание AutoML для конкретной задачи.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
Примечание.
Чтобы использовать бессерверные вычисления, замените строку compute: azureml:gpu-cluster следующим кодом:
resources:
instance_type: Standard_NC64as_T4_v3
instance_count: 4
task: image_object_detection
primary_metric: mean_average_precision
compute: azureml:gpu-cluster
Автоматическое масштабирование гиперпараметров для задач изображения (AutoMode)
В задании AutoML можно выполнить автоматическую очистку гиперпараметров, чтобы найти оптимальную модель. (Эта функция называется AutoMode. Вы указываете только количество пробных версий. Пространство поиска гиперпараметров, метод выборки и политика раннего завершения не требуются. Система автоматически определяет область пространства гиперпараметров для перебора на основе количества проб. Значение от 10 до 20, вероятно, хорошо работает на многих наборах данных.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
limits:
max_trials: 10
max_concurrent_trials: 2
Затем можно отправить задание для обучения модели изображений.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
Чтобы отправить задание AutoML, выполните следующую команду CLI версии 2 с указанием пути к файлу .yml, имени рабочей области, ресурса группы и идентификатора подписки.
az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Очистка гиперпараметров вручную для задач изображения
В задании AutoML вы можете указать архитектуры модели с помощью параметра model_name и настроить параметры для выполнения гиперпараметрического поиска в заранее определенном пространстве поиска, чтобы найти оптимальную модель.
В этом примере вы обучаете модель обнаружения объектов с помощью YOLOv5 и FasterRCNN ResNet50 FPN, которые предварительно обучены на COCO — крупномасштабном наборе данных для обнаружения объектов, сегментации и подписей, который содержит тысячи изображений с более чем 80 категориями меток.
Чтобы найти оптимальную модель, можно выполнить очистку гиперпараметра для определенного пространства поиска.
Ограничения заданий
Вы можете управлять ресурсами, потраченными на задание обучения изображений AutoML, указав timeout_minutes, max_trials, и max_concurrent_trials в настройках ограничения. Дополнительные сведения см. в описании параметров ограничений заданий.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
limits:
timeout_minutes: 60
max_trials: 10
max_concurrent_trials: 2
Следующий код определяет пространство поиска в процессе подготовки к перебору гиперпараметров для каждой из определённых архитектур, YOLOv5 и FasterRCNN ResNet50 FPN. В пространстве поиска укажите диапазон значений для learning_rate, optimizerlr_schedulerи т. д. для AutoML для выбора по мере попытки создать модель с оптимальной первичной метрикой. Если значения гиперпараметров не указаны, значения по умолчанию используются для каждой архитектуры.
Для параметров настройки используйте случайную выборку, чтобы выбрать образцы из этого пространства параметров с помощью алгоритма random выборки. Ограничения заданий, указанные в предыдущем коде, настраивают автоматизированное машинное обучение, чтобы попробовать в общей сложности 10 проб с этими различными примерами, выполняя две пробные версии одновременно на целевом объекте вычислений, который настраивается с помощью четырех узлов. Чем больше параметров содержит пространство поиска, тем больше попыток потребуется для поиска оптимальных моделей.
Кроме того, используется политика преждевременного завершения Bandit. Эта политика останавливает неэффективные испытания. То есть, испытания, результаты которых отклоняются более чем на 20% от лучших результатов. Завершение операции существенно экономит вычислительные ресурсы.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
sweep:
sampling_algorithm: random
early_termination:
type: bandit
evaluation_interval: 2
slack_factor: 0.2
delay_evaluation: 6
search_space:
- model_name:
type: choice
values: [yolov5]
learning_rate:
type: uniform
min_value: 0.0001
max_value: 0.01
model_size:
type: choice
values: [small, medium]
- model_name:
type: choice
values: [fasterrcnn_resnet50_fpn]
learning_rate:
type: uniform
min_value: 0.0001
max_value: 0.001
optimizer:
type: choice
values: [sgd, adam, adamw]
min_size:
type: choice
values: [600, 800]
После определения пространства поиска и параметров очистки можно отправить задание для обучения модели изображений с помощью набора данных обучения.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
Чтобы отправить задание AutoML, выполните следующую команду CLI версии 2 с путем к файлу .yml, имени рабочей области, группе ресурсов и идентификатору подписки.
az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
При выполнении обследования гиперпараметров может быть полезно визуализировать различные эксперименты, которые были проведены с помощью интерфейса Hyperdrive. Чтобы попасть в этот пользовательский интерфейс, откройте вкладку "Дочерние задания" в интерфейсе основного задания AutoML, связанного с изображением, которое упоминалось ранее как родительское задание Hyperdrive. Затем вы можете перейти на вкладку "Дочерние задания" этого задания.
Кроме того, здесь вы можете непосредственно увидеть родительское задание Hyperdrive и перейти на вкладку " Дочерние задания ".
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
CLI example not available. Use the the Python SDK.
Регистрация и развертывание модели
После завершения задания можно зарегистрировать модель, созданную из лучшей пробной версии (конфигурация, которая привела к лучшей первичной метрике). Вы можете зарегистрировать модель после скачивания или указать azureml путь с соответствующим jobid.
Получите лучшую пробную версию
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
CLI example not available. Use the Python SDK.
Регистрация модели.
Зарегистрируйте модель по пути azureml или локально загруженного пути.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
az ml model create --name od-fridge-items-mlflow-model --version 1 --path azureml://jobs/$best_run/outputs/artifacts/outputs/mlflow-model/ --type mlflow_model --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
После регистрации модели, которую вы хотите использовать, ее можно развернуть с помощью управляемой сетевой конечной точки.
Настройка сетевой конечной точки
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: od-fridge-items-endpoint
auth_mode: key
Создание конечной точки
Используя созданную ранее конечную точку MLClient, вы создадите её в рабочей области. Эта команда запускает процесс создания конечной точки и возвращает ответ-подтверждение, пока создание конечной точки продолжается.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
az ml online-endpoint create --file .\create_endpoint.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Кроме того, можно создать конечную точку для пакетной обработки для пакетного предсказания на больших объемах данных в течение некоторого периода времени. В записной книжке пакетной обработки обнаружения объектов см. пример пакетного вычисления с помощью пакетной конечной точки.
Настройка сетевого развертывания
Развертывание представляет собой набор ресурсов, необходимых для размещения модели, которая выполняет процесс вывода. Следующий код создает деплоймент для конечной точки. Для кластера развертывания можно использовать номера SKU для виртуальных машин GPU или процессора.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
name: od-fridge-items-mlflow-deploy
endpoint_name: od-fridge-items-endpoint
model: azureml:od-fridge-items-mlflow-model@latest
instance_type: Standard_DS3_v2
instance_count: 1
liveness_probe:
failure_threshold: 30
success_threshold: 1
timeout: 2
period: 10
initial_delay: 2000
readiness_probe:
failure_threshold: 10
success_threshold: 1
timeout: 10
period: 10
initial_delay: 2000
Создание развертывания
Используя ранее созданный MLClient, вы создадите развертывание в рабочей области. Эта команда запускает создание развертывания и отправляет подтвердительный ответ, пока продолжает создаваться развертывание.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
az ml online-deployment create --file .\create_deployment.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Обновление трафика
По умолчанию текущее развертывание настроено на получение 0% трафика. Вы можете задать процент трафика, который должен получать текущее развертывание. Сумма процента трафика всех развертываний с одной конечной точкой не должна превышать 100%.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
az ml online-endpoint update --name 'od-fridge-items-endpoint' --traffic 'od-fridge-items-mlflow-deploy=100' --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Тестирование развертывания
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
CLI example not available. Use the Python SDK.
Визуализация обнаружений.
Теперь, когда вы выполнили оценку тестового изображения, вы можете визуализировать ограничивающие рамки для изображения. Для этого необходимо установить Matplotlib.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
CLI example not available. Use the Python SDK.
Очистка ресурсов
Если вы планируете выполнить другие учебники по машинному обучению Azure, не завершите работу с этим разделом.
Если вы не планируете использовать созданные ресурсы, удалите их таким образом, чтобы плата не взимается.
- На портале Azure выберите группы ресурсов в левой области.
- В списке групп ресурсов выберите созданную группу ресурсов.
- Выберите команду Удалить группу ресурсов.
- Введите имя группы ресурсов. Затем выберите Удалить.
Вы также можете сохранить группу ресурсов, но удалить одну рабочую область. Перейдите на страницу рабочей области и нажмите кнопку "Удалить".
Следующие шаги
В этом учебнике по автоматизированному машинному обучению вы выполнили следующие задачи:
- Настройка рабочей области и подготовка данных для эксперимента
- Обучение модели автоматизированного обнаружения объектов.
- Определение значения гиперпараметров для модели.
- Очистка гиперпараметров.
- Развертывание модели.
- Визуализация обнаружений.
Узнайте больше о компьютерном зрения в автоматизированном машинном обучении.
Узнайте, как настроить AutoML для обучения моделей компьютерного зрения с помощью Python.
Узнайте, как настроить добавочное обучение на моделях компьютерного зрения.
Узнайте, какие гиперпараметры доступны для задач компьютерного зрения.
Просмотрите примеры кода:
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)- Изучите подробные примеры кода и варианты использования в репозитории azureml-examples для примеров автоматизированного машинного обучения. См. папки с префиксом cli-automl-image- для примеров, относящихся к созданию моделей компьютерного зрения.
Примечание.
Использование набора данных объектов "Холодильник" доступно через лицензирование в рамках лицензии MIT.