Обнаружение лиц, объектов и сцен с помощью Amazon Web Services

Машинное обучение, от распознавания рукописных цифр до распознавания лиц и анализа речи, оказывается бесценным во многих областях. С ростом сообщества, присоединяющегося к Amazon Web Services, спрос на алгоритмы классификации в облаке продолжает расти. Итак, что предлагает AWS, что мы можем применить к нашим приложениям?

Запущенный в 2016 году сервис Amazon Rekognition позволяет нам обнаруживать объекты, сравнивать лица и модерировать изображения и видео на предмет любого небезопасного контента. Это лишь некоторые из множества функций, которые он предоставляет. Rekognition не требует данных обучения или каких-либо знаний о базовых методах машинного обучения, поэтому легко подключается к приложениям AWS для проведения подробного анализа.

Используя функцию AWS Lambda под управлением Python 3.8, давайте исследуем возможности Rekognition, чтобы сразу продемонстрировать его впечатляющую функциональность. По пути мы увидим фотографию моей родной страны, дадим Rekognition возможность угадать мой возраст (как вы думаете?) И проанализируем кадры, на которых изображен единственный в Великобритании самец Гигантской Панды!

Обнаружение объектов и сцен

Rekognition может идентифицировать объекты и сцены на ваших изображениях, возвращая показатель достоверности от 0 до 100% для каждой возвращенной метки (или тега). Работая с Python-клиентом AWS Boto 3, мы запускаем detect_labels операцию для этого. Предоставляя изображение, ограничение на количество возвращаемых меток и порог достоверности для фильтрации неопределенных результатов, Rekognition выполняет этот анализ синхронно. Изображения могут быть предоставлены напрямую в байтах или ссылаться на них из корзины Amazon S3, как мы видим ниже.

Взяв старый фаворит из моей собственной фотоколлекции, мы видим фантастический вид на реку Тай в Шотландии. Снимок сделан с вершины Kinnoull Hill, он расположен недалеко от моего родного города, Perth. Запустив функцию обнаружения этикеток Rekognition против этого, давайте посмотрим, что она дает с достоверностью 70% или более.

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

При снижении порога до 50% метки дороги и башни появляются среди других меток с меньшей степенью достоверности.

Для создания этих этикеток с нашей стороны не требовалось никакого обучения. Rekognition выполняет этот анализ, используя собственные данные обучения, которые включают данные предыдущих пользователей. Это разрешено действующей политикой конфиденциальности данных - политикой, от которой вы можете отказаться, обратившись в AWS Support.

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

Распознавание лиц

Как и ярлыки, Rekognition поддерживает анализ лица с помощью detect_faces операции Boto 3. Предоставляя изображение в байтах или из S3, как и раньше, Rekognition можно настроить так, чтобы он возвращал все поддерживаемые атрибуты или только свойства по умолчанию, выбранные AWS.

Давайте воспользуемся двумя фотографиями моего профиля - одним, сделанным два года назад (слева), а другим, сделанным ранее в этом году (справа). Сосредоточившись в первую очередь исключительно на последнем, давайте посмотрим, что вернет detect_faces.

Урезав ответ для облегчения чтения, мы видим, что Rekognition пытается угадать мой возраст, в результате чего мне от 24 до 38 лет. На самом деле, мне было 24 года, когда это было сделано, но это большая ошибка. Это меня несколько оскорбляет, ведь мне кажется, что мне уже за тридцать!

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

Теперь позвольте Rekognition развязать оба изображения. Помимо анализа отдельных лиц, Rekognition может сравнивать лица на двух изображениях и с некоторой уверенностью устанавливать сходство между ними. Используя compare_faces метод Boto 3, мы предоставляем исходное и целевое изображения для анализа.

Получив показатель сходства 99,85%, Rekognition уверен, что эти два лица - одно и то же! В самом деле, это правильно. В этом нет ничего удивительного - выразительный подбородок всегда является признаком подарка. Теперь мне хочется проверить его достоверность на серии изображений животных. Идея для следующего сообщения в блоге…

Отходя от моих собственных изображений, Rekognition может также определять знаменитостей, обнаруживать небезопасный контент и анализировать изображения на предмет текста. Фантастический набор функций для статического контента, но этот сервис также продает себя за свой анализ видео.

Видеоанализ

Используя другой подход к видео, Rekognition поддерживает асинхронный анализ. Когда с помощью клиента AWS выполняется успешный запрос, возвращается идентификатор задания для использования в будущем. По завершении анализа Rekognition уведомляет тему Simple Notification Service (SNS) о результате.

Мы можем настроить тему SNS для передачи результатов по электронной почте, SMS или любым другим поддерживаемым протоколам SNS. В качестве альтернативы мы можем настроить этот раздел для запуска лямбда-функции, что позволит нам автоматически обрабатывать результаты.

Чтобы применить метку объектов и сцен к видео, мы выполняем start_label_detection запрос Boto 3. В отличие от изображений, мы должны размещать это видео в корзине S3, ограничивая размер нашего видео до 5 ТБ или меньше. Нам также необходимо предоставить порог достоверности, тему SNS для результата и роль управления доступом к удостоверениям (IAM), чтобы предоставить Rekognition необходимые разрешения для уведомления этой темы.

Давайте рассмотрим этот анализ на примере моего старого фильма с изображением гигантской панды по имени Ян Гуан (Солнечный свет), которая попала в заголовки газет, когда он прибыл сюда в Эдинбург вместе с Тиан Тиан (Милая) в декабре. 2011. Пара взята в аренду в Эдинбургский зоопарк из Китая до 2021 года, и я не мог удержаться от визита, чтобы увидеть их обоих вскоре после их прибытия!

При настройке той же функции Lambda для обработки ответа между отправкой запроса start_label_detection и повторным выполнением Lambda был интервал 35 секунд. За это время Rekognition проанализировала видео за кадром.

Как всегда, нам возвращается огромный объем информации, включая метки в разные моменты времени на видео. Разбив ответ так, чтобы мы сосредоточились только на кадре на 15-й секунде, у нас есть несколько меток для обработки.

Только четыре верхних ярлыка делают просмотр интересным: Rekognition уверен, что видит гигантскую панду, и это здорово, но также кажется, что в кадре есть птица. Ничего подобного! Если бы мы полностью изучили результаты, мы бы смогли закрепить в кадре, где, по его мнению, он видит эту птицу.

Заключение

Относительно зрелый сервис от AWS, Rekognition легко интегрируется с другими сервисами, такими как Lambda. Предоставляя огромные объемы подробностей в своем анализе, я впечатлен тем, насколько он полезен из представленного здесь материала.

Безусловно, есть возможности для улучшения: не удалось с достаточной уверенностью обнаружить некоторые ключевые свойства на моем снимке River Tay, а также обнаружить призрачных птиц на моем снимке с гигантской пандой! Тем не менее, он отлично справился с классификацией большинства объектов и черт лица.

Я по-прежнему немного огорчен оценкой возраста, но это был замечательный инструмент, с которым можно было поиграть. Я уверен, что со временем Rekognition продолжит совершенствоваться по мере того, как все больше пользователей будут применять его в своих приложениях. Если вы хотите попробовать эту услугу, добро пожаловать в форк моего репозитория GitLab, где я поделился функцией Lambda и другой инфраструктурой, используемой для демонстрации этих функций.

👋 Присоединяйтесь к нам сегодня !!

️ Подписывайтесь на нас в LinkedIn, Twitter, Facebook и Instagram

Если этот пост был полезен, пожалуйста, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить свою поддержку! ⬇