С появлением искусственного интеллекта (ИИ) и машинного обучения (МО) клиенты и широкая общественность стали все больше осознавать свою конфиденциальность, а также ценность, которую она имеет в современном мире, управляемом данными. Предприятия активно ищут и продают решения, ориентированные на конфиденциальность, особенно в области компьютерного зрения (CV). Им необходимо заверить своих клиентов в том, что личная информация, такая как лица, анонимизируется и, как правило, хранится в безопасности.
Размытие лица — одна из самых известных практик анонимизации изображений и видео. Обычно это включает в себя сначала обнаружение лица на изображении/видео, а затем применение к нему капли пикселей или других эффектов искажения. Эту рабочую нагрузку можно считать задачей CV. Сначала мы анализируем пиксели изображения/видео до тех пор, пока лицо не будет распознано, затем извлекаем область, где лицо находится в каждом кадре, и, наконец, применяем маску к ранее найденным пикселям. Первая часть этого может быть достигнута с помощью инструментов машинного обучения и глубокого обучения, таких как Апостол, а вторая часть представляет собой стандартную манипуляцию с пикселями.
В этом посте мы демонстрируем, как AWS Step Functions можно использовать для оркестровки AWS Lambda функции, которые вызывают Видео о признании Amazon для обнаружения лиц в видео и использования программной библиотеки CV и ML с открытым исходным кодом под названием OpenCV чтобы размыть их.
Обзор решения
В нашем решении Шаговые функции AWS, сервис визуального рабочего процесса с низким кодом, используемый для оркестровки сервисов AWS, автоматизации бизнес-процессов и создания бессерверных приложений, используется для координации вызовов и управления потоком данных между AWS Lambda функции. Когда объект создается в Amazon Simple Storage Service (S3)) ведро, например, путем загрузки видеофайла, ObjectCreated
Обнаружено событие, и запускается первая функция Lambda. Эта лямбда-функция делает асинхронный вызов Апостол API распознавания лиц на видео и запускает выполнение рабочего процесса AWS Step Functions.
Внутри рабочего процесса мы используем функцию Lambda и состояние ожидания, пока асинхронный анализ Amazon Rekognition Video, запущенный ранее, не завершит выполнение. После этого другая функция Lambda извлекает результат завершенного процесса из Amazon Rekognition и передает его другой функции Lambda, которая использует OpenCV для размытия обнаруженных лиц. Чтобы легко использовать OpenCV с нашей функцией Lambda, мы создали образ Docker, размещенный на Реестр Amazon Elastic Container (ECR), а затем развернуты на AWS Lambda благодаря Поддержка образа контейнера.
Архитектура полностью бессерверная, поэтому нам не нужно выделять, масштабировать или поддерживать нашу инфраструктуру. Мы также используем Amazon Rekognition, высокомасштабируемый и управляемый сервис AWS AI, который не требует глубокого обучения.
Кроме того, мы создали наше приложение с Комплект для разработки облака AWS (AWS CDK), среда разработки программного обеспечения с открытым исходным кодом. Это позволяет нам писать инфраструктуру как код (IaC) с использованием Python, тем самым упрощая развертывание, изменение и обслуживание приложения.
Давайте рассмотрим предлагаемую архитектуру поближе:
- Поток событий начинается в момент загрузки видео в Amazon S3. Amazon Rekognition Video поддерживает форматы файлов MPEG-4 и MOV, закодированные с помощью кодека H.264.
- После сохранения видеофайла в Amazon S3 автоматически запускается событие, запускающее функцию Lambda.
- Функция Lambda использует атрибуты видео (имя и местоположение в Amazon S3) для запуска задания распознавания лиц в Amazon Rekognition посредством вызова API.
- Затем та же функция Lambda запускает конечный автомат Step Functions, пересылая атрибуты видео и идентификатор задания Amazon Rekognition.
- Рабочий процесс Step Functions начинается с функции Lambda, ожидающей завершения задания Amazon Rekognition. После этого другая функция Lambda получает результаты от Amazon Rekognition.
- Наконец, лямбда-функция с Поддержка образа контейнера получает свой образ Docker, который поддерживает OpenCV, из Amazon ECR, размывает лица, обнаруженные Amazon Rekognition, и временно сохраняет выходное видео локально.
- Затем размытое видео помещается в выходную корзину S3 и удаляется из локальных файлов.
Предоставление бессерверного доступа к OpenCV проще, чем когда-либо, с помощью Поддержка образа контейнера. Вместо того, чтобы загружать пакет кода в AWS Lambda, код функции находится в образе Docker, размещенном в Реестр Amazon Elastic Container.
Если вы хотите создать собственное приложение, используя распознавание лиц Amazon Rekognition для видео и OpenCV для обработки видео с помощью Python, рассмотрите следующее:
- Ответы API Amazon Rekognition для видео содержат метки времени обнаружения лиц в миллисекундах.
- OpenCV работает с кадрами и использует частоту кадров видео для объединения кадров в видео.
Поэтому необходимо преобразовать информацию Amazon Rekognition, чтобы ее можно было использовать с OpenCV. Вы можете найти нашу реализацию в apply_faces_to_video
функция, в /rekopoc-apply-faces-to-video-docker/video_processor.py
.
Разверните приложение
Если вы хотите развернуть образец приложения в своей учетной записи, перейдите по ссылке этот репозиторий GitHub. Клонируйте его в свою локальную среду (вы также можете использовать такие инструменты, как Облако AWS9) и разверните его с помощью cdk deploy. Дополнительные сведения см. в следующем разделе «Развертывание приложения AWS CDK». Во-первых, давайте посмотрим на структуру проекта репозитория.
Структура проекта
Этот проект содержит исходный код и вспомогательные файлы для бессерверного приложения, которое можно развернуть с помощью AWS CDK. Он включает в себя следующие файлы и папки.
- rekognition_video_face_blurring_cdk/ – Код CDK Python для развертывания приложения.
- rekopoc-apply-faces-to-video-docker/ – Код для лямбда-функции: использует OpenCV для размытия лиц на кадр в видео, загружает окончательный результат в выходное ведро S3.
- rekopoc-проверить-статус/ – Код для функции Lambda: получает результаты распознавания лиц для анализа видео Amazon Rekognition.
- rekopoc-get-timestamps-faces/ – Код для лямбда-функции: получает ограничивающие рамки обнаруженных лиц и связанные временные метки.
- rekopoc-start-face-detect/ – Код для функции Lambda: запускается событием S3 при загрузке нового видеофайла .mp4 или .mov, запускает асинхронное обнаружение лиц в сохраненном видео и запускает выполнение конечного автомата AWS Step Functions.
- requirements.txt – Необходимые пакеты для развертывания приложения AWS CDK.
Приложение использует несколько ресурсов AWS, в том числе пошаговые функции AWS, функции Lambda и корзины S3. Эти ресурсы определены в rekognition_video_face_blurring_cdk/rekognition_video_face_blurring_cdk_stack.py этого проекта. Обновите код Python, чтобы добавить ресурсы AWS с помощью того же процесса развертывания, который обновляет код вашего приложения. В зависимости от размера видео, которое вы хотите анонимизировать, вам может потребоваться обновить конфигурацию функций Lambda и настроить память и время ожидания. Вы можете выделить максимум 10,240 10 МБ (15 ГБ) памяти и настроить функции AWS Lambda на выполнение до XNUMX минут на выполнение.
Разверните приложение AWS CDK
AWS Cloud Development Kit (AWS CDK) — это среда разработки программного обеспечения с открытым исходным кодом, позволяющая определять ресурсы облачных приложений с помощью знакомых языков программирования. В этом проекте используется AWS CDK на Python.
Чтобы собрать и развернуть приложение в первый раз, необходимо:
Шаг 1: Убедитесь, что у вас запущен Docker.
Вам потребуется запустить Docker для создания образа перед его отправкой в Amazon ECR.
Шаг 2. Настройте свои учетные данные AWS.
Самый простой способ выполнить это требование — выполнить следующую команду в вашей оболочке:
Дополнительные инструкции по настройке установки AWS CLI см. Быстрая настройка с помощью aws configure из руководства пользователя AWS CLI.
Шаг 3. Установите AWS CDK и требования.
Просто запустите в своей оболочке следующее:
- Первая команда глобально установит набор инструментов AWS CDK с помощью Node Package Manager.
- Вторая команда установит все пакеты Python, необходимые для AWS CDK, с помощью диспетчера пакетов pip. Эта команда должна быть выполнена из корневой папки клонированного репозитория GitHub.
Шаг 4. Загрузите среду AWS для CDK и разверните приложение.
- Первая команда предоставит исходные ресурсы, необходимые AWS CDK для выполнения развертывания. Эти ресурсы включают корзину Amazon S3 для хранения файлов и роли IAM, предоставляющие разрешения, необходимые для выполнения развертываний.
- Наконец,
cdk deploy
развернет стек.
Шаг 5: Протестируйте приложение.
Загрузите видео во входную корзину S3 через Консоль управления AWS, интерфейс командной строки AWS или SDK и найдите результат в выходной корзине.
уборка
Чтобы удалить созданный пример приложения, используйте AWS CDK:
Заключение
В этом посте мы показали, как развернуть решение для автоматического размытия видео без выделения каких-либо ресурсов для вашей учетной записи AWS. Мы использовали функцию обнаружения лиц Amazon Rekognition Video, поддержку изображений контейнеров для функций AWS Lambda, чтобы упростить работу с OpenCV, и организовали весь рабочий процесс с помощью AWS Step Functions. Наконец, мы сделали наше решение комплексным и многоразовым с помощью AWS CDK, чтобы упростить его развертывание и адаптацию.
Следующие шаги
Если у вас есть отзывы об этом посте, отправьте их в разделе «Комментарии» ниже. Для получения дополнительной информации посетите следующие ссылки об инструментах и услугах, которые мы использовали, и следуйте коду в GitHub. Мы с нетерпением ждем ваших отзывов и вкладов!
Об авторах
Анастасия Пахни Цитириду является архитектором решений в AWS. Она живет в Амстердаме и поддерживает независимых поставщиков программного обеспечения в странах Бенилюкса в их переходе к облачным технологиям. Она изучала электротехнику и вычислительную технику, прежде чем познакомилась с компьютерным зрением. Сейчас ей больше всего нравится работать на стыке CV и ML.
Оливье Саттер является архитектором решений во Франции. Он базируется в Париже и всегда ставит интересы своих клиентов в качестве своего главного приоритета. Имея большой академический опыт в области прикладной математики, он начал развивать свою страсть к искусственному интеллекту и машинному обучению в университете, и теперь успешно применяет эти знания в реальных сценариях использования со своими клиентами.
Давиде Галлителли является специалистом по разработке решений для AI/ML в регионе EMEA. Он базируется в Брюсселе и тесно сотрудничает с клиентами из стран Бенилюкса. Он был разработчиком с самого раннего возраста, начав программировать в возрасте 7 лет. Он начал изучать AI/ML с последних лет обучения в университете и с тех пор влюбился в него.
Источник: https://aws.amazon.com/blogs/machine-learning/blur-faces-in-videos-automatically-with-amazon-rekognition-video/- '
- 100
- 7
- доступ
- Учетная запись
- дополнительный
- AI
- Все
- Amazon
- Апостол
- Амстердам
- анализ
- API
- приложение
- Применение
- Приложения
- архитектура
- ПЛОЩАДЬ
- искусственный интеллект
- Искусственный интеллект (AI)
- AWS
- AWS Lambda
- ЛУЧШЕЕ
- строить
- бизнес
- деловые процессы
- призывают
- ближе
- облако
- код
- Комментарии
- Компьютерное зрение
- Конфигурация
- Консоли
- Container
- Полномочия
- Клиенты
- данным
- глубокое обучение
- обнаружение
- Застройщик
- Разработка
- Docker
- Проект и
- Окружающая среда
- События
- выполнение
- Лицо
- лица
- Особенность
- в заключение
- First
- Впервые
- поток
- следовать
- вперед
- Рамки
- Франция
- функция
- Общие
- GIF
- GitHub
- ГЛОБАЛЬНО
- предоставлять
- инструкция
- Как
- How To
- HTTPS
- МАК
- IAM
- изображение
- В том числе
- информация
- Инфраструктура
- Интеллекта
- IT
- работа
- комплект
- знания
- Языки
- последний
- изучение
- Библиотека
- локальным
- в местном масштабе
- расположение
- любят
- обучение с помощью машины
- Создание
- управление
- Манипуляция
- Маркетинг
- маска
- математика
- ML
- открытый
- с открытым исходным кодом
- OpenCV
- Другие контрактные услуги
- Париж
- Pixel
- политикой конфиденциальности.
- Программирование
- языки программирования
- Проект
- что такое варган?
- Питон
- Требования
- Полезные ресурсы
- Итоги
- Run
- Бег
- безопасный
- Шкала
- SDK
- поиск
- Serverless
- Услуги
- набор
- Оболочка
- просто
- Размер
- So
- Software
- разработка программного обеспечения
- Решения
- Начало
- и политические лидеры
- Область
- диск
- магазины
- поддержка
- Поддержка
- тестXNUMX
- время
- инструменты
- топ
- Университет
- Обновление ПО
- Updates
- us
- случаи использования
- ценностное
- Видео
- Видео
- видение
- ждать
- Работа
- рабочий
- работает
- Мир
- лет