Выполните сегментацию изображений с помощью Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Запустите сегментацию изображений с помощью Amazon SageMaker JumpStart

В декабре 2020, AWS анонсировал общая доступность Amazon SageMaker JumpStart, способность Создатель мудреца Амазонки который поможет вам быстро и легко начать работу с машинным обучением (ML). JumpStart обеспечивает тонкую настройку одним щелчком мыши и развертывание широкого спектра предварительно обученных моделей для популярных задач машинного обучения, а также набор комплексных решений, решающих типичные бизнес-задачи. Эти функции избавляют от тяжелой работы на каждом этапе процесса машинного обучения, упрощая разработку высококачественных моделей и сокращая время развертывания.

Этот пост является третьим в серии об использовании JumpStart для конкретных задач машинного обучения. в первый пост, мы показали, как вы можете запускать варианты использования классификации изображений в JumpStart. в вторая должность, мы показали, как вы можете запускать варианты использования классификации текста в JumpStart. В этом посте мы представляем пошаговое руководство по точной настройке и развертыванию модели сегментации изображений с использованием обученных моделей из MXNet. Мы исследуем два способа получения одного и того же результата: через графический интерфейс JumpStart на Студия Amazon SageMaker, а программно через API-интерфейсы JumpStart.

Если вы хотите сразу перейти к коду API JumpStart, который мы объясняем в этом посте, вы можете обратиться к следующим образцам блокнотов Jupyter:

Обзор JumpStart

JumpStart поможет вам начать работу с моделями машинного обучения для различных задач без написания единой строки кода. На момент написания JumpStart позволял вам делать следующее:

  • Развертывание предварительно обученных моделей для распространенных задач машинного обучения – JumpStart позволяет решать распространенные задачи машинного обучения без усилий по разработке, обеспечивая простое развертывание моделей, предварительно обученных на больших общедоступных наборах данных. Исследовательское сообщество машинного обучения приложило немало усилий, чтобы сделать большинство недавно разработанных моделей общедоступными для использования. JumpStart содержит коллекцию из более чем 300 моделей, охватывающих 15 самых популярных задач машинного обучения, таких как обнаружение объектов, классификация текста и генерация текста, что упрощает их использование новичками. Эти модели взяты из популярных концентраторов моделей, таких как TensorFlow, PyTorch, Hugging Face и MXNet.
  • Точная настройка предварительно обученных моделей – JumpStart позволяет точно настраивать предварительно обученные модели без необходимости написания собственного алгоритма обучения. В ML способность передавать знания, полученные в одной области, в другую область называется трансферное обучение. Вы можете использовать трансферное обучение для создания точных моделей на небольших наборах данных с гораздо меньшими затратами на обучение, чем затраты на обучение исходной модели. JumpStart также включает в себя популярные обучающие алгоритмы на основе LightGBM, CatBoost, XGBoost и Scikit-learn, которые вы можете обучить с нуля для табличной регрессии и классификации.
  • Используйте готовые решения – JumpStart предоставляет набор из 17 решений для распространенных вариантов использования машинного обучения, таких как прогнозирование спроса, а также промышленные и финансовые приложения, которые можно развернуть всего несколькими щелчками мыши. Решения — это комплексные приложения машинного обучения, которые объединяют различные сервисы AWS для решения конкретных бизнес-задач. Они используют AWS CloudFormation шаблоны и эталонные архитектуры для быстрого развертывания, что означает, что они полностью настраиваемые.
  • См. примеры блокнотов для алгоритмов SageMaker. – SageMaker предоставляет набор встроенных алгоритмов, помогающих специалистам по обработке и анализу данных и специалистам по машинному обучению быстро приступить к обучению и развертыванию моделей машинного обучения. JumpStart предоставляет образцы блокнотов, которые можно использовать для быстрого использования этих алгоритмов.
  • Просмотр обучающих видео и блогов – JumpStart также предоставляет множество сообщений в блогах и видео, которые учат вас, как использовать различные функции в SageMaker.

JumpStart принимает пользовательские настройки VPC и Служба управления ключами AWS (AWS KMS), чтобы вы могли безопасно использовать доступные модели и решения в своей корпоративной среде. Вы можете передать параметры безопасности JumpStart в Studio или с помощью SageMaker Python SDK.

Семантическая сегментация

Семантическая сегментация выделяет каждый класс объектов, появляющихся на входном изображении. Он помечает (классифицирует) каждый пиксель входного изображения меткой класса из предопределенного набора классов. Несколько объектов одного класса отображаются на одну и ту же маску.

Доступная для тонкой настройки модель строит «голову» полностью сверточной сети (FCN) поверх базовой сети. Шаг тонкой настройки выполняет точную настройку FCNHead, сохраняя при этом параметры остальной части модели замороженными, и возвращает настроенную модель. Цель состоит в том, чтобы свести к минимуму потери перекрестной энтропии softmax для каждого пикселя для обучения FCN. Модель, возвращенная тонкой настройкой, может быть дополнительно развернута для логического вывода.

Входной каталог должен выглядеть следующим образом, если обучающие данные содержат два изображения. Имена файлов .png могут быть любыми.

input_directory
    |--images
        |--abc.png
        |--def.png
    |--masks
        |--abc.png
        |--def.png
    class_label_to_prediction_index.json

Файлы маски должны иметь информацию о метке класса для каждого пикселя.

Сегментация экземпляра

Сегментация экземпляров обнаруживает и выделяет каждый отдельный интересующий объект, появляющийся на изображении. Он помечает каждый пиксель меткой экземпляра. В то время как семантическая сегментация присваивает один и тот же тег пикселям нескольких объектов одного класса, сегментация экземпляров дополнительно помечает пиксели, соответствующие каждому вхождению объекта на изображении, отдельным тегом.

В настоящее время JumpStart предлагает модели только для логического вывода для сегментации экземпляров и не поддерживает тонкую настройку.

Следующие изображения иллюстрируют разницу между выводом в семантической сегментации и сегментацией экземпляра. На исходном изображении два человека. Семантическая сегментация рассматривает несколько людей на изображении как одну сущность: Person. Однако сегментация экземпляра идентифицирует отдельных людей в Person категория.

Обзор решения

В следующих разделах представлена ​​пошаговая демонстрация выполнения семантической сегментации с помощью JumpStart как через пользовательский интерфейс Studio, так и через API JumpStart.

Проходим следующие этапы:

  1. Доступ к JumpStart через пользовательский интерфейс Studio:
    1. Запустите вывод на предварительно обученной модели.
    2. Настройте предварительно обученную модель.
  2. Используйте JumpStart программно с SageMaker Python SDK:
    1. Запустите вывод на предварительно обученной модели.
    2. Настройте предварительно обученную модель.

Мы также обсудим дополнительные расширенные функции JumpStart.

Доступ к JumpStart через пользовательский интерфейс Studio

В этом разделе мы покажем, как обучать и развертывать модели JumpStart с помощью пользовательского интерфейса Studio.

Запустите вывод на предварительно обученной модели

В следующем видео показано, как найти предварительно обученную модель семантической сегментации в JumpStart и развернуть ее. Страница модели содержит ценную информацию о модели, способах ее использования, ожидаемом формате данных и некоторые детали тонкой настройки. Вы можете развернуть любую предварительно обученную модель, доступную в JumpStart. Для вывода мы выбираем тип экземпляра ml.g4dn.xlarge. Он обеспечивает ускорение графического процессора, необходимое для низкой задержки логического вывода, но по более низкой цене. После настройки экземпляра хостинга SageMaker выберите Развертывание. Может пройти 5–10 минут, прежде чем ваша постоянная конечная точка будет запущена.

Через несколько минут ваша конечная точка готова к работе и готова отвечать на запросы логического вывода.

Точно так же вы можете развернуть предварительно обученную модель сегментации экземпляров, выполнив те же действия, что и в предыдущем видео, при поиске сегментации экземпляров вместо семантической сегментации в строке поиска JumpStart.

Точная настройка предварительно обученной модели

В следующем видео показано, как найти и настроить модель семантической сегментации в JumpStart. В видео мы дорабатываем модель с помощью Набор данных PennFudanPed, предоставляемый по умолчанию в JumpStart, который вы можете скачать в разделе Лицензия Apache 2.0.

Тонкая настройка вашего собственного набора данных включает в себя правильное форматирование данных (как объяснено на странице модели) и загрузку их в Простой сервис хранения Amazon (Amazon S3) и указать его расположение в конфигурации источника данных. Мы используем те же значения гиперпараметров, которые установлены по умолчанию (количество эпох, скорость обучения и размер пакета). Мы также используем поддерживаемый графическим процессором файл ml.p3.2xlarge в качестве учебного экземпляра SageMaker.

Вы можете следить за своим заданием по обучению, выполняемым непосредственно на консоли Studio, и получать уведомления о его завершении. После завершения обучения вы можете развернуть настроенную модель с той же страницы, которая содержит сведения о задании на обучение. Рабочий процесс развертывания аналогичен развертыванию предварительно обученной модели.

Программное использование JumpStart с SageMaker SDK

В предыдущих разделах мы показали, как можно использовать пользовательский интерфейс JumpStart для развертывания предварительно обученной модели и интерактивной тонкой настройки всего за несколько щелчков мышью. Тем не менее, вы также можете использовать модели JumpStart и выполнять программную тонкую настройку с помощью API, интегрированных в SageMaker SDK. Теперь мы рассмотрим быстрый пример того, как вы можете воспроизвести предыдущий процесс. Все шаги в этой демонстрации доступны в прилагаемых блокнотах. Введение в JumpStart — сегментация экземпляров и Введение в JumpStart — Семантическая сегментация.

Запустите вывод на предварительно обученной модели

В этом разделе мы выбираем подходящую предварительно обученную модель в JumpStart, развертываем эту модель на конечной точке SageMaker и выполняем вывод на развернутой конечной точке.

SageMaker — это платформа, основанная на контейнерах Docker. JumpStart использует доступный фреймворк Контейнеры глубокого обучения SageMaker (DLC). Мы получаем любые дополнительные пакеты, а также скрипты для обучения и логического вывода для выбранной задачи. Наконец, предварительно обученные артефакты модели извлекаются отдельно с помощью model_uris, что обеспечивает гибкость платформы. Вы можете использовать любое количество моделей, предварительно обученных для одной и той же задачи, с помощью одного сценария обучения или логического вывода. См. следующий код:

model_id, model_version = "mxnet-semseg-fcn-resnet50-ade", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

Например, сегментация, мы можем установить model_id в mxnet-semseg-fcn-resnet50-ade. is в идентификаторе соответствует сегментации экземпляра.

Далее мы загружаем ресурсы в Модель SageMaker экземпляр и разверните конечную точку:

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

Через несколько минут наша модель развернута, и мы можем получать от нее прогнозы в режиме реального времени!

Следующий фрагмент кода дает представление о том, как выглядит семантическая сегментация. Прогнозируемая маска для каждого пикселя визуализируется. Чтобы получить выводы из развернутой модели, входное изображение необходимо предоставить в двоичном формате. Ответ конечной точки — это прогнозируемая метка для каждого пикселя изображения. Мы используем query_endpoint и parse_response вспомогательные функции, которые определены в сопроводительная записная книжка:

query_response = query(base_model_predictor, pedestrian_img)
predictions, labels, image_labels = parse_response(query_response)
print("Objects present in the picture:", image_labels)

Точная настройка предварительно обученной модели

Чтобы точно настроить выбранную модель, нам нужно получить URI этой модели, а также URI обучающего сценария и образа контейнера, используемого для обучения. К счастью, эти три входа зависят исключительно от названия модели, версии (список доступных моделей см. Таблица доступных моделей JumpStart)и тип экземпляра, на котором вы хотите тренироваться. Это демонстрируется в следующем фрагменте кода:

from sagemaker import image_uris, model_uris, script_uris

model_id, model_version = "mxnet-semseg-fcn-resnet50-ade", "*"
training_instance_type = "ml.p3.2xlarge"
train_image_uri = image_uris.retrieve(
    region=None,
    framework=None,
    model_id=model_id,
    model_version=model_version,
    image_scope="training",
    instance_type=training_instance_type,)# Retrieve the training script

train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball to further fine-tune

train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

Мы извлекаем model_id соответствует той же модели, которую мы использовали ранее. Теперь вы можете точно настроить эту модель JumpStart для своего собственного пользовательского набора данных с помощью SageMaker SDK. Мы используем набор данных, публично размещенный на Amazon S3, удобно ориентированный на семантическую сегментацию. Набор данных должен быть структурирован для тонкой настройки, как описано в предыдущем разделе. См. следующий пример кода:

# URI of your training dataset
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_SemSeg/"
training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning")# Create SageMaker Estimator instance
semseg_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)# Launch a SageMaker Training job by passing s3 path of the training data
semseg_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Мы получаем те же гиперпараметры по умолчанию для нашей выбранной модели, что и те, которые мы видели в предыдущем разделе, используя sagemaker.hyperparameters.retrieve_default(). Затем мы создаем экземпляр оценщика SageMaker и вызываем .fit чтобы начать тонкую настройку нашей модели, передав ей URI Amazon S3 для наших обучающих данных. entry_point предоставленный сценарий называется transfer_learning.py (то же самое для других задач и моделей), а канал входных данных передается в .fit должен быть назван training.

Пока алгоритм обучается, вы можете следить за его ходом либо в блокноте SageMaker, где вы запускаете сам код, либо на Amazon CloudWatch. По завершении обучения артефакты точной настройки модели загружаются в выходное расположение Amazon S3, указанное в конфигурации обучения. Теперь вы можете развернуть модель так же, как предварительно обученную модель.

Расширенные возможности

В дополнение к тонкой настройке и развертыванию предварительно обученных моделей JumpStart предлагает множество дополнительных функций.

Первый автоматическая настройка модели. Это позволяет автоматически настраивать модели машинного обучения, чтобы находить значения гиперпараметров с максимальной точностью в пределах диапазона, предоставляемого через SageMaker API.

Второй дополнительное обучение. Это позволяет вам обучать модель, которую вы уже точно настроили, используя расширенный набор данных, который содержит базовый шаблон, не учтенный в предыдущих прогонах тонкой настройки, что привело к снижению производительности модели. Дополнительное обучение экономит время и ресурсы, поскольку вам не нужно заново обучать модель с нуля.

Заключение

В этом посте мы показали, как настроить и развернуть предварительно обученную модель семантической сегментации, а также как адаптировать ее для сегментации экземпляров с помощью JumpStart. Вы можете сделать это без необходимости писать код. Попробуйте решение самостоятельно и пришлите нам свои комментарии.

Чтобы узнать больше о JumpStart и о том, как вы можете использовать предварительно обученные модели с открытым исходным кодом для множества других задач машинного обучения, ознакомьтесь со следующими материалами. Видео AWS re:Invent 2020.


Об авторах

Выполните сегментацию изображений с помощью Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Доктор Вивек Мадан — ученый-прикладник в команде Amazon SageMaker JumpStart. Он получил докторскую степень в Университете Иллинойса в Урбана-Шампейн и был постдокторантом в Технологическом институте Джорджии. Он является активным исследователем в области машинного обучения и разработки алгоритмов и публиковал статьи на конференциях EMNLP, ICLR, COLT, FOCS и SODA.

Выполните сегментацию изображений с помощью Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Сантош Кулкарни является архитектором корпоративных решений в Amazon Web Services и работает со спортивными клиентами в Австралии. Он увлечен созданием крупномасштабных распределенных приложений для решения бизнес-задач, используя свои знания в области искусственного интеллекта/машинного обучения, больших данных и разработки программного обеспечения.

Выполните сегментацию изображений с помощью Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Леонардо Бачега — старший научный сотрудник и менеджер команды Amazon SageMaker JumpStart. Он увлечен созданием сервисов искусственного интеллекта для компьютерного зрения.

Отметка времени:

Больше от Машинное обучение AWS

Предоставьте своим бизнес-пользователям возможность извлекать ценную информацию из документов компании с помощью генеративного искусственного интеллекта Amazon SageMaker Canvas | Веб-сервисы Amazon

Исходный узел: 1906631
Отметка времени: 26 октября, 2023