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

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

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

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

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

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

Алгоритм поддерживает трансферное обучение для предварительно обученных моделей, перечисленных в Модели TensorFlow. Каждая модель идентифицируется уникальным model_id. В следующем коде показано, как точно настроить модель ResNet50 V1 FPN, идентифицированную model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 в пользовательском наборе обучающих данных. Для каждого model_id, чтобы запустить обучающее задание SageMaker через Оценщик класса SageMaker Python SDK, вам необходимо получить 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 к любому заданному набору данных, содержащему изображения, принадлежащие любому количеству классов. Цель состоит в том, чтобы свести к минимуму ошибку предсказания входных данных. Модель, возвращенная тонкой настройкой, может быть дополнительно развернута для логического вывода. Ниже приведены инструкции по форматированию обучающих данных для ввода в модель:

  • вход – Каталог с изображениями подкаталога и файлом 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, которая позволяет обучать и развертывать встроенные алгоритмы и предварительно обученные модели из различных платформ машинного обучения и концентраторов моделей через графический интерфейс. Это также позволяет вам развертывать полноценные решения машинного обучения, которые объединяют модели машинного обучения и различные другие сервисы AWS для решения целевого сценария использования.

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

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

Вот процесс точной настройки той же предварительно обученной модели обнаружения объектов.

Развертывание настроенной модели

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

Заключение

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

Для получения дополнительной информации, посетите документации и пример тетради.


Об авторах

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

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

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