Сквозной пример использования пользовательских меток Rekognition для классификации изображений

Помимо Amazon SageMaker, AWS содержит набор сервисов AI/ML, адаптированных для AutoML. В тех случаях, когда вам нужно внедрить ML в свои приложения и у вас нет теоретического опыта или времени для создания собственных моделей, этот набор услуг оказывается чрезвычайно удобным. Под капотом за вас позаботятся о построении модели Machine/Deep Learning. В частности, Amazon Rekognition — это сервис AutoML для Computer Vision.

Ранее я показывал, как можно использовать простые вызовы API через AWS SDK для взаимодействия с Rekognition. Тем не менее, даже с большим объемом данных, на которых эти модели были обучены, для пользовательских вариантов использования вам все равно нужно иметь возможность предоставить набор данных, с которым вы можете точно настроить модель.

В этой статье мы рассмотрим пример классификации изображений с использованием Пользовательских меток Rekognition. С помощью этой функции Rekognition вы можете определить пользовательский набор данных и предоставить его Rekognition для тонкой настройки соответствующих моделей. Затем вы можете использовать эту точно настроенную модель для вывода по своему усмотрению.

ПРИМЕЧАНИЕ. Для тех из вас, кто не знаком с AWS, убедитесь, что вы создали учетную запись по следующей ссылке, если хотите продолжить. Процесс обучения и развертывания потребует затрат, особенно если вы оставите свою модель в рабочем состоянии. В этой статье также предполагается базовое знакомство с Python, AWS и использованием AWS SDK.

Настраивать

Набор данных, который мы будем использовать, — это популярная задача классификации изображений собак и кошек. Мы получим набор данных по ссылке Kaggle, прикрепленной здесь, вы можете найти официальную информацию о цитировании и лицензировании набора данных с Asirra по этой ссылке.

Прежде чем мы сможем приступить к работе с Rekognition, нам нужно представить данные в соответствующем формате. S3 — это основное хранилище данных, с которым взаимодействует Rekognition, и мы перенесем обучающий набор данных из Kaggle в корзину S3. Для этого мы воспользуемся нашим хорошим другом Boto3, Python SDK для взаимодействия с S3.

После того, как мы создали экземпляр нашего клиента Boto3, мы можем проанализировать набор данных и отправить данные в корзину в S3. Я уже заранее создал тестовую корзину под названием «rekog-sample-mars», вы можете сделать это с помощью SDK, CLI или просто использовать консоль S3.

Ключевая часть здесь заключается в том, что внутри ведра мы создаем две подпапки, по одной для каждого класса. После запуска функции структура корзины/каталога должна выглядеть следующим образом (Примечание: я просто скопировал дополнительное изображение из корзины для вывода позже).

Если мы откроем каждый подкаталог, вы должны увидеть заполненные изображения поездов.

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

Обучение

Все в Rekognition управляется через сущность проекта. Версия вашей модели, набор данных для обучения, набор тестовых данных и многое другое сопоставляются с объектом вашего проекта. Вы также можете создать проект через SDK, используя следующие вызовы API, но в этой части мы рассмотрим консоль.

После того, как вы создали свой проект, вы можете создать набор данных.

Для нашего набора данных мы можем указать на нашу корзину S3, содержащую наши обучающие данные, Rekognition также позаботится об автоматическом назначении меток вашим изображениям на основе предоставленной вами подпапки/ключа (например, кошка, собака).

После того, как вы создали свой набор данных, вы можете начать обучение модели в консоли, эта часть займет около 60–120 минут с размером нашего набора данных. По завершении вы должны увидеть успешное завершение обучения с оценочными показателями.

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

Вывод модели

Rekognition делает за нас тяжелую работу, предоставляя автоматически сгенерированный код для вывода модели. Если вы нажмете вкладку «Использовать модель», вы заметите, что код AWS CLI и Boto3 был предварительно сгенерирован для запуска модели Rekognition, а также для последующего выполнения логического вывода. Вы можете изменить этот код по мере необходимости для вашего конкретного варианта использования, но мы оставим его как есть для этого случая.

Наш первый шаг — запустить нашу модель, это откроет эту сущность для вывода. Мы можем сделать это с помощью первого блока кода, предоставленного Rekognition.

Вы должны увидеть начальный статус модели, отраженный в консоли через несколько минут.

Для вывода вы можете экстраполировать количество Inference Units, которое вы хотите для своей модели, исходя из ваших требований к пропускной способности. Обратите внимание, что единицы Inference Units оплачиваются и будут частью вашей структуры ценообразования для Inference with Rekognition, в этом примере мы просто ограничимся одной единицей.

Мы можем взять функцию анализа изображения, предоставленную Rekognition, и настроить ее, включив в нее наше ведро и образец объекта для вывода.

В этом случае я передал образец изображения кошки в наше ведро, и мы видим, что логический вывод в этом случае выполняется успешно.

Чтобы остановить модель, запустите последний блок кода, предоставленный Rekognition, с вашим ресурсом модели.

Заключение и дополнительные ресурсы



Полный код примера доступен по ссылке выше. Rekognition — это мощный инструмент, который можно легко использовать в ваших комплексных приложениях. Настраиваемые метки специально помогают добавить некоторый пользовательский контроль к аспекту службы AutoML. Если вас еще интересует Rekognition, ознакомьтесь с официальными образцами кода в репозитории. Еще один сервис AutoML, предлагаемый AWS, — Amazon Comprehend. Чтобы настроить рабочие нагрузки NLP с помощью Comprehend, ознакомьтесь с этой статьей.

Я надеюсь, что эта статья была хорошим введением в одну из основных услуг AI/ML, предлагаемых AWS. Оставайтесь с нами, чтобы узнать больше об ML и AWS!

Если вам понравилась эта статья, не стесняйтесь связаться со мной в LinkedIn и подписаться на мою Информационную рассылку. Если вы новичок в Medium, зарегистрируйтесь с помощью моего Реферала для участников.