Передайте навчання для моделей виявлення об’єктів TensorFlow в Amazon SageMaker

Amazon SageMaker надає набір з вбудовані алгоритми, попередньо навчені моделі та попередньо створені шаблони рішень щоб допомогти науковцям з даних і практикам машинного навчання (ML) розпочати навчання та швидко розгорнути моделі машинного навчання. Ви можете використовувати ці алгоритми та моделі як для навчання з наглядом, так і для навчання без нагляду. Вони можуть обробляти різні типи вхідних даних, включаючи табличні, графічні та текстові.

Ця публікація є другою в серії про нові вбудовані алгоритми в SageMaker. В перший пост, ми показали, як SageMaker надає вбудований алгоритм для класифікації зображень. Сьогодні ми повідомляємо, що SageMaker надає новий вбудований алгоритм для виявлення об’єктів за допомогою TensorFlow. Цей контрольований алгоритм навчання підтримує перенесення навчання для багатьох попередньо навчених моделей, доступних у TensorFlow. Він приймає зображення як вхідні дані та виводить об’єкти, присутні на зображенні разом із обмежувальними рамками. Ви можете точно налаштувати ці попередньо навчені моделі за допомогою передавання навчання, навіть якщо велика кількість навчальних зображень недоступна. Він доступний через SageMaker вбудовані алгоритми а також через Інтерфейс SageMaker JumpStart in Студія Amazon SageMaker. Для отримання додаткової інформації див Виявлення об'єктів Tensorflow і зразок зошита Вступ до SageMaker Tensorflow – виявлення об’єктів.

Виявлення об’єктів за допомогою TensorFlow у SageMaker забезпечує перенесення навчання на багатьох попередньо навчених моделях, доступних у TensorFlow Hub. Відповідно до кількості міток класів у навчальних даних нова довільно ініціалізована головка виявлення об’єктів замінює існуючу головку моделі TensorFlow. Або всю мережу, включаючи попередньо навчену модель, або лише верхній рівень (голову виявлення об’єктів) можна точно налаштувати на нових даних навчання. У цьому режимі навчання передачі ви можете досягти навчання навіть із меншим набором даних.

Як використовувати новий алгоритм виявлення об’єктів TensorFlow

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

Алгоритм підтримує перенесення навчання для попередньо підготовлених моделей, перелічених у Моделі TensorFlow. Кожна модель має унікальний ідентифікатор model_id. У наведеному нижче коді показано, як точно налаштувати модель ResNet50 V1 FPN, ідентифіковану за model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 на спеціальному навчальному наборі даних. Для кожного model_id, щоб запустити навчальне завдання SageMaker через Оцінювач класу SDK SageMaker Python, вам потрібно отримати URI зображення Docker, URI навчального сценарію та URI попередньо навченої моделі за допомогою службових функцій, наданих у SageMaker. URI сценарію навчання містить увесь необхідний код для обробки даних, завантаження попередньо навченої моделі, навчання моделі та збереження навченої моделі для висновку. URI попередньо підготовленої моделі містить визначення архітектури попередньо підготовленої моделі та параметри моделі. Зверніть увагу, що URI зображення Docker і URI сценарію навчання однакові для всіх моделей виявлення об’єктів TensorFlow. Попередньо підготовлений URI моделі є специфічним для конкретної моделі. Попередньо навчені архівні файли моделей попередньо завантажено з TensorFlow і збережено з відповідним підписом моделі в Служба простого зберігання Amazon (Amazon S3), так що навчання виконується в ізоляції мережі. Перегляньте наступний код:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# 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 for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-od-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

За допомогою цих специфічних для моделі навчальних артефактів ви можете побудувати об’єкт Оцінювач клас:

# Create SageMaker Estimator instance
tf_od_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,)

Далі, щоб передати навчання на вашому спеціальному наборі даних, вам може знадобитися змінити значення за замовчуванням гіперпараметрів навчання, які перелічені в Гіперпараметри. Ви можете отримати словник Python цих гіперпараметрів із значеннями за замовчуванням за допомогою виклику hyperparameters.retrieve_default, оновіть їх за потреби, а потім передайте їх класу Estimator. Зауважте, що значення за замовчуванням деяких гіперпараметрів відрізняються для різних моделей. Для великих моделей розмір партії за замовчуванням менший і train_only_top_layer гіперпараметр має значення True. Гіперпараметр train_only_top_layer визначає, які параметри моделі змінюються під час процесу тонкого налаштування. Якщо train_only_top_layer is True, параметри шарів класифікації змінюються, а решта параметрів залишаються незмінними під час процесу тонкого налаштування. З іншого боку, якщо train_only_top_layer is False, всі параметри моделі налаштовані. Перегляньте наступний код:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Ми надаємо Набір даних PennFudanPed як стандартний набір даних для точного налаштування моделей. Набір даних містить зображення пішоходів. Наступний код надає стандартний набір навчальних даних, розміщений у сегментах S3:

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_COCO_format/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Нарешті, щоб запустити навчальне завдання SageMaker для точного налаштування моделі, телефонуйте .fit на об’єкті класу Estimator, під час передачі розташування S3 навчального набору даних:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Щоб отримати додаткові відомості про те, як використовувати новий алгоритм виявлення об’єктів SageMaker TensorFlow для передачі навчання на спеціальному наборі даних, розгортання точно налаштованої моделі, виконання висновків на розгорнутій моделі та розгортання попередньо навченої моделі без попереднього тонкого налаштування на настроюваному наборі даних див. такий приклад блокнота: Вступ до SageMaker TensorFlow – виявлення об’єктів.

Інтерфейс введення/виведення для алгоритму виявлення об’єктів TensorFlow

Ви можете точно налаштувати кожну з попередньо навчених моделей, перелічених у Моделі TensorFlow до будь-якого набору даних, що містить зображення, що належать до будь-якої кількості класів. Мета полягає в тому, щоб мінімізувати помилку передбачення вхідних даних. Модель, отриману за допомогою тонкого налаштування, може бути використана для логічного висновку. Нижче наведено вказівки щодо форматування навчальних даних для введення в модель:

  • вхід – Каталог із підкаталогами images і файлом annotations.json.
  • Вихід – Є два виходи. По-перше, це точно налаштована модель, яку можна розгорнути для висновків або додатково навчити за допомогою поступового навчання. По-друге, це файл, який зіставляє індекси класів з мітками класів; це зберігається разом із моделлю.

Вхідний каталог має виглядати так, як показано нижче:

input_directory
      | -- images
            |--abc.png
            |--def.png
      |--annotations.json

Команда annotations.json файл повинен містити інформацію для bounding_boxes та їхні мітки класів. Він повинен мати словник з ключами "images" та "annotations". Значення для "images" ключ має бути списком записів, по одному для кожного зображення форми {"file_name": image_name, "height": height, "width": width, "id": image_id}. Значення "annotations" ключ має бути списком записів, по одному для кожної обмежувальної рамки форми {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

Висновок за допомогою алгоритму виявлення об’єктів TensorFlow

Згенеровані моделі можна розміщувати для висновків і підтримувати закодовані формати зображень .jpg, .jpeg і .png як application/x-image тип вмісту. Розмір вхідного зображення змінюється автоматично. Вихідні дані містять коробки, передбачені класи та бали для кожного передбачення. Модель виявлення об’єктів TensorFlow обробляє одне зображення на запит і виводить лише один рядок у JSON. Нижче наведено приклад відповіді в JSON:

accept: application/json;verbose

{"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], "classes":[classidx1, class_idx2,...], "scores":[score_1, score_2,...], "labels": [label1, label2, ...], "tensorflow_model_output":}

If accept встановлений в application/json, тоді модель виводить лише передбачені блоки, класи та бали. Щоб отримати докладнішу інформацію про навчання та висновки, перегляньте зразок зошита Вступ до SageMaker TensorFlow – виявлення об’єктів.

Використовуйте вбудовані алгоритми SageMaker через інтерфейс користувача JumpStart

Ви також можете використовувати виявлення об’єктів SageMaker TensorFlow та будь-які інші вбудовані алгоритми кількома клацаннями миші через інтерфейс користувача JumpStart. JumpStart — це функція SageMaker, яка дозволяє навчати та розгортати вбудовані алгоритми та попередньо навчені моделі з різних фреймворків ML і концентраторів моделей через графічний інтерфейс. Це також дозволяє розгортати повноцінні рішення ML, які об’єднують моделі ML та різні інші служби AWS для вирішення цільового сценарію використання.

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

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

Ось процес тонкого налаштування попередньо навченої моделі виявлення об’єктів.

Розгорніть налаштовану модель

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

Висновок

У цій публікації ми оголосили про запуск вбудованого алгоритму виявлення об’єктів SageMaker TensorFlow. Ми надали приклад коду того, як передавати навчання на спеціальному наборі даних за допомогою попередньо навченої моделі від TensorFlow за допомогою цього алгоритму.

Для отримання додаткової інформації ознайомтесь із інформацією документація і приклад блокнота.


Про авторів

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

Передайте навчання для моделей виявлення об’єктів TensorFlow у Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Жоао Моура є архітектором-спеціалістом з рішень AI/ML у Amazon Web Services. Він переважно зосереджений на прикладах використання НЛП і допомагає клієнтам оптимізувати навчання та розгортання моделі глибокого навчання. Він також є активним прихильником рішень ML з низьким кодом і спеціалізованого обладнання для ML.

Передайте навчання для моделей виявлення об’єктів TensorFlow у Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Доктор Ашиш Хетан є старшим вченим-прикладником с Вбудовані алгоритми Amazon SageMaker і допомагає розробляти алгоритми машинного навчання. Він отримав ступінь доктора філософії в Університеті Іллінойсу Урбана Шампейн. Він активно досліджує машинне навчання та статистичні висновки та опублікував багато статей на конференціях NeurIPS, ICML, ICLR, JMLR, ACL та EMNLP.

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

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