Виконайте сегментацію зображень за допомогою Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Запустіть сегментацію зображення за допомогою Amazon SageMaker JumpStart

У грудні 2020, AWS оголосив загальна доступність Amazon SageMaker JumpStart, здатність Amazon SageMaker який допоможе вам швидко та легко розпочати роботу з машинним навчанням (ML). JumpStart забезпечує тонке налаштування одним кліком і розгортання широкого спектру попередньо навчених моделей для популярних завдань ML, а також вибір наскрізних рішень, які вирішують типові бізнес-проблеми. Ці функції знімають важку роботу з кожного кроку процесу ML, полегшуючи розробку високоякісних моделей і скорочуючи час до розгортання.

Ця публікація є третьою в серії про використання JumpStart для конкретних завдань ML. В перший пост, ми показали, як ви можете запускати випадки використання класифікації зображень на JumpStart. В друга посада, ми показали, як ви можете запустити випадки використання класифікації тексту на JumpStart. У цій публікації ми надаємо покрокову інструкцію щодо точного налаштування та розгортання моделі сегментації зображення за допомогою навчених моделей із MXNet. Ми досліджуємо два способи отримання того самого результату: через графічний інтерфейс JumpStart Студія Amazon SageMaker, і програмно через API JumpStart.

Якщо ви хочете відразу перейти до коду JumpStart API, який ми пояснюємо в цій публікації, ви можете звернутися до таких зразків блокнотів Jupyter:

Огляд JumpStart

JumpStart допоможе вам розпочати роботу з моделями ML для різноманітних завдань без написання жодного рядка коду. На момент написання статті JumpStart дозволяє виконувати наступні дії:

  • Розгортайте попередньо навчені моделі для поширених завдань ML – JumpStart дає змогу вирішувати звичайні завдання ML без зусиль розробки, забезпечуючи просте розгортання моделей, попередньо навчених на великих загальнодоступних наборах даних. Дослідницьке співтовариство ML доклало багато зусиль, щоб зробити більшість нещодавно розроблених моделей загальнодоступними для використання. JumpStart містить колекцію з понад 300 моделей, що охоплюють 15 найпопулярніших завдань ML, таких як виявлення об’єктів, класифікація тексту та генерація тексту, що полегшує їх використання для початківців. Ці моделі створено з популярних центрів моделей, таких як TensorFlow, PyTorch, Hugging Face і MXNet.
  • Точна настройка попередньо навчених моделей – JumpStart дозволяє точно налаштувати попередньо навчені моделі без необхідності писати власний алгоритм навчання. У ML називається здатність передавати знання, отримані в одній області, в іншу трансферне навчання. Ви можете використовувати передачу навчання для створення точних моделей на невеликих наборах даних із значно нижчими витратами на навчання, ніж витрати на навчання вихідної моделі. JumpStart також включає популярні навчальні алгоритми на основі LightGBM, CatBoost, XGBoost і Scikit-learn, які можна навчити з нуля для табличної регресії та класифікації.
  • Використовуйте готові рішення – JumpStart надає набір із 17 рішень для типових випадків використання машинного навчання, таких як прогнозування попиту та промислові та фінансові програми, які можна розгорнути лише кількома клацаннями. Рішення — це наскрізні програми ML, які об’єднують різноманітні служби AWS для вирішення конкретного бізнес-випадку використання. Вони використовують AWS CloudFormation шаблони та еталонні архітектури для швидкого розгортання, що означає, що вони повністю настроюються.
  • Зверніться до прикладів блокнотів для алгоритмів SageMaker – SageMaker надає набір вбудованих алгоритмів, щоб допомогти фахівцям із обробки даних і практикам ML розпочати навчання та швидко розгортати моделі ML. 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, так і через JumpStart API.

Ми проходимо наступні кроки:

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

Ми також обговорюємо додаткові розширені функції JumpStart.

Отримайте доступ до JumpStart через інтерфейс користувача Studio

У цьому розділі ми демонструємо, як навчати та розгортати моделі JumpStart за допомогою інтерфейсу користувача Studio.

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

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

Через кілька хвилин ваша кінцева точка працює та готова відповідати на запити висновків.

Подібним чином ви можете розгорнути попередньо навчену модель сегментації екземпляра, виконуючи ті самі кроки в попередньому відео під час пошуку сегментації екземпляра замість семантичної сегментації в панелі пошуку JumpStart.

Налаштуйте попередньо підготовлену модель

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

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

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

Використовуйте JumpStart програмно з SageMaker SDK

У попередніх розділах ми показали, як можна використовувати JumpStart UI для розгортання попередньо навченої моделі та її інтерактивного налаштування за кілька кліків. Однак ви також можете використовувати моделі JumpStart і легке програмне налаштування за допомогою API, інтегрованих у SDK SageMaker. Зараз ми розглянемо короткий приклад того, як ви можете відтворити попередній процес. Усі кроки цієї демонстрації доступні в блокнотах, що додаються Вступ до 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 в ідентифікаторі відповідає сегментації екземпляра.

Далі ми подаємо ресурси в a Модель 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 на власному спеціальному наборі даних за допомогою SDK SageMaker. Ми використовуємо набір даних, який відкрито розміщено на 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 для наших навчальних даних. The entry_point наданий сценарій має назву transfer_learning.py (те саме для інших завдань і моделей), а канал вхідних даних передається до .fit повинен бути названий training.

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

розширені можливості

На додаток до тонкого налаштування та розгортання попередньо навчених моделей, JumpStart пропонує багато розширених функцій.

Перше - це автоматичне налаштування моделі. Це дозволяє автоматично налаштовувати ваші моделі ML, щоб знаходити значення гіперпараметрів з найвищою точністю в межах діапазону, наданого через API SageMaker.

Другий поетапне навчання. Це дозволяє вам навчити модель, яку ви вже налаштували, використовуючи розширений набір даних, який містить базовий шаблон, не врахований у попередніх прогонах точного налаштування, що призвело до низької продуктивності моделі. Поступове навчання економить час і ресурси, оскільки вам не потрібно перенавчати модель з нуля.

Висновок

У цій публікації ми показали, як налаштувати та розгорнути попередньо навчену семантичну модель сегментації та як адаптувати її для сегментації екземплярів за допомогою JumpStart. Ви можете зробити це без необхідності писати код. Спробуйте рішення самостійно та надішліть нам свої коментарі.

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


Про авторів

Виконайте сегментацію зображень за допомогою Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Доктор Вівек Мадан є прикладним науковцем у команді Amazon SageMaker JumpStart. Він отримав ступінь доктора філософії в Університеті Іллінойсу в Урбана-Шампейн і був науковим співробітником у технічному університеті Джорджії. Він є активним дослідником машинного навчання та розробки алгоритмів і публікував статті на конференціях EMNLP, ICLR, COLT, FOCS і SODA.

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

Виконайте сегментацію зображень за допомогою Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Леонардо Бачега є старшим науковим співробітником і менеджером команди Amazon SageMaker JumpStart. Він захоплений створенням служб ШІ для комп’ютерного зору.

Часова мітка:

Більше від AWS Машинне навчання