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

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

С сегодняшнего дня SageMaker предоставляет новый встроенный алгоритм классификации изображений: Классификация изображений — TensorFlow. Это алгоритм обучения с учителем, который поддерживает передачу обучения для многих предварительно обученных моделей, доступных в Концентратор TensorFlow. Он принимает изображение в качестве входных данных и выводит вероятность для каждой из меток класса. Вы можете точно настроить эти предварительно обученные модели с помощью трансферного обучения, даже если большое количество обучающих изображений недоступно. Он доступен через SageMaker встроенные алгоритмы а также через Пользовательский интерфейс SageMaker JumpStart внутри Студия Amazon SageMaker. Для получения дополнительной информации обратитесь к его документации Классификация изображений — TensorFlow и блокнот для примера Введение в SageMaker TensorFlow — классификация изображений.

Классификация изображений с помощью TensorFlow в SageMaker обеспечивает перенос обучения на многих предварительно обученных моделях, доступных в TensorFlow Hub. В соответствии с количеством меток классов в обучающих данных к предварительно обученной модели TensorFlow Hub присоединяется классификационный слой. Слой классификации состоит из выпадающего слоя и плотного слоя, который представляет собой полносвязный слой с регуляризатором 2 норм, который инициализируется случайными весами. Обучение модели имеет гиперпараметры для скорости отсева слоя отсева и коэффициента регуляризации L2 для плотного слоя. Затем либо вся сеть, включая предварительно обученную модель, либо только верхний слой классификации могут быть точно настроены на новых обучающих данных. В этом режиме трансферного обучения вы можете проводить обучение даже с меньшим набором данных.

Как использовать новый алгоритм классификации изображений TensorFlow

В этом разделе описывается, как использовать алгоритм классификации изображений TensorFlow с SDK для SageMaker Python. Для получения информации о том, как использовать его из пользовательского интерфейса Studio, см. SageMaker JumpStart.

Алгоритм поддерживает трансферное обучение для предварительно обученных моделей, перечисленных в Модели TensorFlow Hub. Каждая модель идентифицируется уникальным model_id. В следующем коде показано, как точно настроить MobileNet V2 1.00 224, идентифицированный model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 в пользовательском наборе обучающих данных. Для каждого model_id, чтобы запустить обучающее задание SageMaker через Оценщик класса SageMaker Python SDK, вам необходимо получить 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 Hub к любому заданному набору данных, содержащему изображения, принадлежащие любому количеству классов. Цель состоит в том, чтобы свести к минимуму ошибку предсказания входных данных. Модель, возвращенная тонкой настройкой, может быть дополнительно развернута для логического вывода. Ниже приведены инструкции по форматированию обучающих данных для ввода в модель:

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

Входной каталог должен выглядеть как в следующем примере, если обучающие данные содержат изображения из двух классов: roses и dandelion. Путь S3 должен выглядеть так s3://bucket_name/input_directory/. Обратите внимание на конечный / требуется для. Имена папок и roses, dandelion, а имена файлов .jpg могут быть любыми. Файл сопоставления меток, который сохраняется вместе с обученной моделью в корзине S3, сопоставляет имена папок roses и dandelion с индексами в списке вероятностей классов, выводимых моделью. Отображение следует алфавитному порядку имен папок. В следующем примере индекс 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, которая позволяет обучать и развертывать встроенные алгоритмы и предварительно обученные модели из различных платформ машинного обучения и концентраторов моделей через графический интерфейс. Он также позволяет развертывать полноценные решения машинного обучения, которые объединяют модели машинного обучения и различные другие сервисы AWS для решения целевого варианта использования. Проверить Запустите классификацию текста с помощью Amazon SageMaker JumpStart, используя модели TensorFlow Hub и Hugging Face. чтобы узнать, как использовать JumpStart для обучения алгоритма или предварительно обученной модели за несколько кликов.

Заключение

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


Об авторах

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

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

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

Передача обучения для моделей классификации изображений TensorFlow в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Раджу Пенматча является старшим специалистом по разработке решений AI / ML в AWS. Он работает с образовательными, государственными и некоммерческими организациями над проектами, связанными с машинным обучением и искусственным интеллектом, помогая им создавать решения с использованием AWS. Когда он не помогает клиентам, он любит путешествовать по новым местам.

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

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