Передайте навчання для моделей класифікації зображень TensorFlow в Amazon SageMaker

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

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

Класифікація зображень за допомогою TensorFlow у SageMaker забезпечує перенесення навчання на багатьох попередньо навчених моделях, доступних у TensorFlow Hub. Відповідно до кількості міток класів у навчальних даних рівень класифікації додається до попередньо навченої моделі TensorFlow Hub. Рівень класифікації складається з шару відсіву та щільного шару, який є повністю зв’язаним шаром із регуляризатором 2 норм, який ініціалізується випадковими вагами. Навчання моделі має гіперпараметри для швидкості випадання шару випадання та коефіцієнт регуляризації L2 для щільного шару. Тоді або всю мережу, включаючи попередньо навчену модель, або лише верхній класифікаційний рівень можна точно налаштувати на нових навчальних даних. У цьому режимі навчання передачі ви можете досягти навчання навіть із меншим набором даних.

Як використовувати новий алгоритм класифікації зображень TensorFlow

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

Алгоритм підтримує перенесення навчання для попередньо підготовлених моделей, перелічених у Моделі концентратора TensorFlow. Кожна модель має унікальний ідентифікатор model_id. У наступному коді показано, як точно налаштувати MobileNet V2 1.00 224, ідентифікований за model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 на спеціальному навчальному наборі даних. Для кожного model_id, щоб запустити навчальне завдання SageMaker через Оцінювач класу SDK SageMaker Python, вам потрібно отримати URI зображення Docker, URI навчального сценарію та URI попередньо навченої моделі за допомогою службових функцій, наданих у SageMaker. URI сценарію навчання містить увесь необхідний код для обробки даних, завантаження попередньо навченої моделі, навчання моделі та збереження навченої моделі для висновку. URI попередньо підготовленої моделі містить визначення архітектури попередньо підготовленої моделі та параметри моделі. Зверніть увагу, що URI зображення Docker і URI сценарію навчання однакові для всіх моделей класифікації зображень TensorFlow. Попередньо підготовлений URI моделі є специфічним для конкретної моделі. Попередньо навчені архівні файли моделей попередньо завантажено з TensorFlow Hub і збережено з відповідним підписом моделі в Служба простого зберігання Amazon (Amazon S3), так що навчання виконується в ізоляції мережі. Перегляньте наступний код:

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

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
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-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

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

# Create SageMaker Estimator instance
tf_ic_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"

Наступний код надає набір навчальних даних за умовчанням, розміщений у сегментах S3. Ми надаємо tf_flowers набір даних як набір даних за замовчуванням для точного налаштування моделей. Набір даних містить зображення п’яти видів квітів. Набір даних завантажено з TensorFlow під Ліцензія Apache 2.0.

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

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_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

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

Інтерфейс введення/виведення для алгоритму класифікації зображень TensorFlow

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

  • вхід – Каталог із такою кількістю підкаталогів, скільки класів. Кожен підкаталог має містити зображення, що належать до цього класу, у форматі .jpg, .jpeg або .png.
  • Вихід – Тонко налаштована модель, яку можна розгорнути для висновків або можна додатково навчити за допомогою поступового навчання. Сигнатури попередньої та постобробки додаються до точно налаштованої моделі таким чином, що вона приймає необроблене зображення .jpg як вхідні дані та повертає ймовірності класу. Файл зіставлення індексів класів з мітками класів зберігається разом із моделями.

Вхідний каталог має виглядати як наведений нижче приклад, якщо навчальні дані містять зображення з двох класів: roses та dandelion. Шлях S3 має виглядати так s3://bucket_name/input_directory/. Зверніть увагу на закінчення / необхідно. Назви папок і roses, dandelion, а імена файлів .jpg можуть бути будь-якими. Файл зіставлення міток, який зберігається разом із навченою моделлю у сегменті S3, зіставляє назви папок троянди та кульбаба з індексами в списку ймовірностей класів, які видає модель. Відображення відповідає алфавітному порядку назв папок. У наступному прикладі індекс 0 у списку вихідних даних моделі відповідає dandelion, а індекс 1 відповідає roses.

input_directory
    |--roses
        |--abc.jpg
        |--def.jpg
    |--dandelion
        |--ghi.jpg
        |--jkl.jpg

Висновок за допомогою алгоритму класифікації зображень TensorFlow

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

accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}

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

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

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

Висновок

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


Про авторів

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

Передайте навчання для моделей класифікації зображень 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.Раджу Пенматча є старшим архітектором рішень зі штучного інтелекту/ML в AWS. Він працює з освітніми, урядовими та некомерційними клієнтами над проектами, пов’язаними з машинним навчанням і штучним інтелектом, допомагаючи їм створювати рішення за допомогою AWS. Коли не допомагає клієнтам, він любить подорожувати в нові місця.

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

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