Purina US, дочерняя компания Nestle, уже давно помогает людям легче усыновлять домашних животных посредством поиск домашних животных, цифровая торговая площадка, объединяющая более 11 000 приютов для животных и спасательных групп в США, Канаде и Мексике. Petfinder, ведущая платформа по усыновлению домашних животных, помогла миллионам домашних животных найти свой вечный дом.
Purina постоянно ищет способы сделать платформу Petfinder еще лучше как для приютов, так и для спасательных групп, а также для тех, кто усыновляет домашних животных. Одной из проблем, с которыми они столкнулись, было адекватное отражение конкретной породы животных, подлежащих усыновлению. Поскольку многие животные в приютах относятся к смешанным породам, правильное определение пород и признаков в профиле домашнего животного требовало ручных усилий, что отнимало много времени. Purina использовала искусственный интеллект (ИИ) и машинное обучение (МО) для автоматизации определения пород животных в больших масштабах.
В этом посте подробно рассказывается, как компания Purina использовала пользовательские метки Amazon Rekognition, функции AWS Step и другие сервисы AWS для создания модели машинного обучения, которая определяет породу домашнего животного по загруженному изображению, а затем использует прогноз для автоматического заполнения атрибутов домашнего животного. Решение фокусируется на фундаментальных принципах разработки рабочего процесса приложений AI/ML, включая подготовку данных, обучение модели, оценку модели и мониторинг модели.
Обзор решения
Для прогнозирования пород животных по изображению необходимы специальные модели машинного обучения. Разработка собственной модели для анализа изображений — это серьезная задача, требующая времени, опыта и ресурсов, на выполнение которой часто уходят месяцы. Кроме того, часто требуются тысячи или десятки тысяч изображений, помеченных вручную, чтобы предоставить модели достаточно данных для точного принятия решений. Настройка рабочего процесса для аудита или проверки прогнозов модели для проверки соответствия вашим требованиям может еще больше усложнить задачу.
С помощью Rekognition Custom Labels, основанного на существующих возможностях Amazon Rekognition, вы можете идентифицировать объекты и сцены на изображениях, соответствующие потребностям вашего бизнеса. Он уже обучен на десятках миллионов изображений во многих категориях. Вместо тысяч изображений вы можете загрузить небольшой набор обучающих изображений (обычно несколько сотен изображений или меньше на категорию), которые соответствуют вашему сценарию использования.
Решение использует следующие сервисы:
- Amazon API Gateway — это полностью управляемый сервис, который позволяет разработчикам легко публиковать, поддерживать, отслеживать и защищать API в любом масштабе.
- AWS Cloud Development Kit (AWS CDK) — это платформа разработки программного обеспечения с открытым исходным кодом, позволяющая определить облачную инфраструктуру как код с использованием современных языков программирования и развернуть ее через AWS CloudFormation.
- AWS CodeBuild — это полностью управляемый сервис непрерывной интеграции в облаке. CodeBuild компилирует исходный код, запускает тесты и создает пакеты, готовые к развертыванию.
- Amazon DynamoDB — это быстрый и гибкий сервис нереляционных баз данных любого масштаба.
- AWS Lambda — это управляемый событиями сервис вычислений, который позволяет запускать код практически для любого типа приложения или серверной службы без подготовки серверов или управления ими.
- Amazon Rekognition предлагает предварительно обученные и настраиваемые возможности компьютерного зрения (CV) для извлечения информации и аналитических данных из ваших изображений и видео. С помощью пользовательских меток Amazon Rekognition вы можете идентифицировать объекты и сцены на изображениях, соответствующие потребностям вашего бизнеса.
- AWS Step Functions — это полностью управляемый сервис, который упрощает координацию компонентов распределенных приложений и микросервисов с помощью визуальных рабочих процессов.
- AWS Systems Manager — это безопасное комплексное решение для управления ресурсами на AWS, а также в мультиоблачных и гибридных средах. Хранилище параметров, функция Systems Manager, обеспечивает безопасное иерархическое хранилище для управления данными конфигурации и управления секретами.
Решение Purina развертывается как конечная точка HTTP-шлюза API, которая маршрутизирует запросы для получения атрибутов домашних животных. Он использует пользовательские метки Rekognition для прогнозирования породы домашнего животного. Модель ML обучается на основе профилей домашних животных, взятых из базы данных Purina, при условии, что основная метка породы является истинной. DynamoDB используется для хранения атрибутов домашних животных. Lambda используется для обработки запроса атрибутов домашнего животного путем координации между API Gateway, Amazon Rekognition и DynamoDB.
Архитектура реализована следующим образом:
- Приложение Petfinder направляет запрос на получение атрибутов домашнего животного через шлюз API.
- API Gateway вызывает функцию Lambda для получения атрибутов домашнего животного.
- Функция Lambda вызывает конечную точку вывода Rekognition Custom Label, чтобы предсказать породу домашнего животного.
- Функция Lambda использует прогнозируемую информацию о породе домашнего животного для поиска атрибутов домашнего животного в таблице DynamoDB. Он собирает атрибуты домашних животных и отправляет их обратно в приложение Petfinder.
На следующей диаграмме показан рабочий процесс решения.
Команда Petfinder в Purina хочет автоматизированное решение, которое можно будет развернуть с минимальным обслуживанием. Для этого мы используем Step Functions для создания конечного автомата, который обучает модели с использованием новейших данных, проверяет их производительность на наборе тестов и повторно развертывает модели, если они улучшились. Переобучение модели запускается на основе количества корректировок породы, внесенных пользователями, предоставляющими информацию профиля.
Модельное обучение
Разработка собственной модели для анализа изображений — это серьезная задача, требующая времени, опыта и ресурсов. Кроме того, часто требуются тысячи или десятки тысяч изображений, помеченных вручную, чтобы предоставить модели достаточно данных для точного принятия решений. Сбор этих данных может занять месяцы и требует больших усилий для их маркировки для использования в машинном обучении. Техника под названием трансферное обучение помогает создавать модели более высокого качества, заимствуя параметры предварительно обученной модели, и позволяет обучать модели с меньшим количеством изображений.
Наша проблема заключается в том, что наши данные не идеально размечены: люди, вводящие данные профиля, могут совершать и совершают ошибки. Однако мы обнаружили, что для достаточно больших выборок данных неправильно помеченные изображения составляли достаточно небольшую долю, и точность модели не снижалась более чем на 2%.
Рабочий процесс ML и конечный автомат
Конечный автомат Step Functions разработан для помощи в автоматическом переобучении модели Amazon Rekognition. Обратная связь собирается во время входа в профиль: каждый раз, когда порода, полученная на основе изображения, изменяется пользователем на другую породу, исправление записывается. Этот конечный автомат запускается на основе настраиваемого порогового количества исправлений и дополнительных фрагментов данных.
Для создания решения конечный автомат выполняет несколько шагов:
- Создайте файлы манифеста обучения и тестирования, содержащие список путей к образам Amazon Simple Storage Service (Amazon S3) и их метки для использования Amazon Rekognition.
- Создайте набор данных Amazon Rekognition, используя файлы манифеста.
- Обучите версию модели Amazon Rekognition после создания набора данных.
- Запустите версию модели после завершения обучения.
- Оцените модель и получите показатели производительности.
- Если показатели производительности удовлетворительны, обновите версию модели в хранилище параметров.
- Подождите, пока новая версия модели распространится в функциях Lambda (20 минут), затем остановите предыдущую модель.
Оценка модели
Для проверки нашей модели мы используем случайный 20%-ный набор отклонений, взятый из нашей выборки данных. Поскольку обнаруженные нами породы являются настраиваемыми, мы не используем фиксированный набор данных для проверки во время обучения, но мы используем оценочный набор, помеченный вручную для интеграционного тестирования. Перекрытие помеченного вручную набора и обнаруживаемых пород модели используется для расчета показателей. Если точность определения породы модели превышает указанный порог, мы продвигаем модель для использования в конечной точке.
Ниже приведены несколько снимков экрана рабочего процесса прогнозирования домашних животных из Rekognition Custom Labels.
Развертывание с помощью AWS CDK
Конечный автомат Step Functions и связанная с ним инфраструктура (включая функции Lambda, проекты CodeBuild и параметры Systems Manager) развертываются с помощью AWS CDK с использованием Python. Код AWS CDK синтезирует шаблон CloudFormation, который используется для развертывания всей инфраструктуры решения.
Интеграция с приложением Petfinder.
Приложение Petfinder обращается к конечной точке классификации изображений через конечную точку API-шлюза, используя запрос POST, содержащий полезную нагрузку JSON с полями для пути Amazon S3 к изображению и количества возвращаемых результатов.
KPI, на которые необходимо повлиять
Чтобы оправдать дополнительные затраты на запуск конечной точки вывода изображения, мы провели эксперименты, чтобы определить ценность, которую конечная точка добавляет для Petfinder. Использование конечной точки предлагает два основных типа улучшений:
- Сокращение усилий для приютов для домашних животных, которые создают профили домашних животных.
- Более полные профили домашних животных, которые, как ожидается, улучшат релевантность поиска.
Метрики для измерения усилий и полноты профиля включают количество исправленных автоматически заполненных полей, общее количество заполненных полей и время загрузки профиля домашнего животного. Улучшение релевантности поиска косвенно вытекает из измерения ключевых показателей эффективности, связанных с уровнем внедрения. По словам Purina, после того, как решение было запущено в эксплуатацию, среднее время создания профиля домашнего животного в приложении Petfinder сократилось с 7 минут до 4 минут. Это огромное улучшение и экономия времени, поскольку в 2022 году было загружено 4 миллиона профилей домашних животных.
Безопасность
Данные, проходящие через диаграмму архитектуры, шифруются при передаче и хранении в соответствии с лучшими практиками AWS Well-Architected. Во время всех встреч с AWS эксперт по безопасности проверяет решение, чтобы обеспечить его безопасную реализацию.
Заключение
Благодаря своему решению, основанному на пользовательских этикетках Rekognition, команда Petfinder может ускорить создание профилей домашних животных для приютов для домашних животных, снижая административную нагрузку на персонал приютов. При развертывании на основе AWS CDK используется рабочий процесс Step Functions для автоматизации процесса обучения и развертывания. Чтобы начать использовать пользовательские метки Rekognition, ознакомьтесь с разделом «Начало работы с пользовательскими метками Amazon Rekognition». Вы также можете ознакомиться с некоторыми примерами Step Functions и начать работу с AWS CDK.
Об авторах
Мейсон Кэхилл — старший консультант DevOps в AWS Professional Services. Ему нравится помогать организациям достигать их бизнес-целей, и он увлечен созданием и предоставлением автоматизированных решений в облаке AWS. Вне работы он любит проводить время с семьей, ходить в походы и играть в футбол.
Мэтью Чейсс — консультант по науке о данных в Amazon Web Services, где он помогает клиентам создавать масштабируемые решения машинного обучения. Мэтью имеет докторскую степень по математике, в свободное время увлекается скалолазанием и музыкой.
Рушикеш Джагтап — архитектор решений с более чем 5-летним опытом работы в сфере сервисов AWS Analytics. Он с энтузиазмом помогает клиентам создавать масштабируемые и современные решения для анализа данных, позволяющие получать ценную информацию из данных. Вне работы он любит смотреть Формулу-1, играть в бадминтон и участвовать в картинге.
Тайо Оладжиде — опытный специалист по разработке облачных данных с более чем десятилетним опытом разработки и внедрения решений для обработки данных в облачных средах. Обладая страстью к преобразованию необработанных данных в ценную информацию, Тайо сыграл ключевую роль в проектировании и оптимизации конвейеров данных для различных отраслей, включая финансы, здравоохранение и автомобильную промышленность. Будучи идейным лидером в этой области, Тайо считает, что сила данных заключается в их способности стимулировать принятие обоснованных решений, и стремится помочь предприятиям использовать весь потенциал своих данных в эпоху облачных вычислений. Когда он не занимается созданием конвейеров данных, вы можете обнаружить, что Тайо изучает последние тенденции в технологиях, гуляет на свежем воздухе или возится с гаджетами и программным обеспечением.