Con la llegada de la inteligencia artificial (IA) y el aprendizaje automático (ML), los clientes y el público en general se han vuelto cada vez más conscientes de su privacidad, así como del valor que tiene en el mundo actual basado en datos. Las empresas están buscando y comercializando activamente soluciones que priorizan la privacidad, especialmente en el dominio Computer Vision (CV). Necesitan asegurar a sus clientes que la información personal, como las caras, se anonimiza y, en general, se mantiene segura.
El desenfoque facial es una de las prácticas más conocidas a la hora de anonimizar tanto imágenes como vídeos. Por lo general, implica primero detectar la cara en una imagen/video y luego aplicarle una mancha de píxeles u otros efectos de distorsión. Esta carga de trabajo puede considerarse una tarea de CV. Primero analizamos los píxeles de la imagen/video hasta reconocer un rostro, luego extraemos el área donde se encuentra el rostro en cada cuadro y finalmente aplicamos una máscara sobre los píxeles encontrados anteriormente. La primera parte de esto se puede lograr con herramientas ML y Deep Learning, como Reconocimiento de amazonas, mientras que la segunda parte es la manipulación estándar de píxeles.
En esta publicación, demostramos cómo se pueden utilizar AWS Step Functions para orquestar AWS Lambda funciones que llaman Vídeo de reconocimiento de Amazon para detectar rostros en videos, y use una biblioteca de software CV y ML de código abierto llamada OpenCV para difuminarlos.
Resumen de la solución
En nuestra solución, Funciones de paso de AWS, un servicio de flujo de trabajo visual de código bajo que se utiliza para organizar los servicios de AWS, automatizar los procesos comerciales y crear aplicaciones sin servidor, se utiliza para organizar las llamadas y administrar el flujo de datos entre AWS Lambda funciones Cuando se crea un objeto en un Servicio de almacenamiento simple de Amazon (S3) cubo, por ejemplo, mediante la carga de un archivo de video, un ObjectCreated
se detecta un evento y se activa una primera función Lambda. Esta función de Lambda realiza una llamada asíncrona al Reconocimiento de amazonas API de detección de rostros en video e inicia la ejecución del flujo de trabajo de AWS Step Functions.
Dentro del flujo de trabajo, usamos una función Lambda y un estado de espera hasta que el análisis asincrónico de Amazon Rekognition Video comenzó antes y finaliza la ejecución. Posteriormente, otra función de Lambda recupera el resultado del proceso completado de Amazon Rekognition y lo pasa a otra función de Lambda que usa OpenCV para desenfocar las caras detectadas. Para usar fácilmente OpenCV con nuestra función Lambda, creamos una imagen de Docker alojada en Registro de contenedores elásticos de Amazon (ECR)y luego implementado en AWS Lambda gracias a Soporte de imagen de contenedor.
La arquitectura es completamente sin servidor, por lo que no necesitamos aprovisionar, escalar ni mantener nuestra infraestructura. También utilizamos Amazon Rekognition, un servicio de IA de AWS altamente escalable y administrado que no requiere experiencia en aprendizaje profundo.
Además, hemos construido nuestra aplicación con el Kit de desarrollo en la nube de AWS (AWS CDK), un marco de desarrollo de software de código abierto. Esto nos permite escribir Infraestructura como código (IaC) usando Python, lo que hace que la aplicación sea fácil de implementar, modificar y mantener.
Veamos más de cerca la arquitectura sugerida:
- El flujo de eventos comienza en el momento de la ingesta de video en Amazon S3. Amazon Rekognition Video es compatible con los formatos de archivo MPEG-4 y MOV, codificados con el códec H.264.
- Una vez que el archivo de video se ha almacenado en Amazon S3, inicia automáticamente un evento que activa una función Lambda.
- La función Lambda utiliza los atributos del video (nombre y ubicación en Amazon S3) para iniciar el trabajo de detección de rostros en Amazon Rekognition a través de una llamada a la API.
- Luego, la misma función de Lambda inicia la máquina de estado de Step Functions, reenviando los atributos del video y el ID de trabajo de Amazon Rekognition.
- El flujo de trabajo de Step Functions comienza con una función Lambda en espera de que finalice el trabajo de Amazon Rekognition. Una vez hecho esto, otra función de Lambda obtiene los resultados de Amazon Rekognition.
- Finalmente, una función Lambda con Soporte de imagen de contenedor obtiene su imagen de Docker, que admite OpenCV de Amazon ECR, desenfoca los rostros detectados por Amazon Rekognition y almacena temporalmente el video de salida localmente.
- Luego, el video borroso se coloca en el depósito S3 de salida y se elimina de los archivos locales.
Proporcionar un acceso de función sin servidor a OpenCV es más fácil que nunca con Soporte de imagen de contenedor. En lugar de cargar un paquete de código en AWS Lambda, el código de la función reside en una imagen de Docker alojada en Registro de contenedores elásticos de Amazon.
Si desea crear su propia aplicación utilizando la detección de rostros para videos de Amazon Rekognition y OpenCV para procesar videos con Python, considere lo siguiente:
- Las respuestas de la API de Amazon Rekognition para videos contienen marcas de tiempo detectadas por rostros en milisegundos
- OpenCV funciona con fotogramas y utiliza la velocidad de fotogramas del vídeo para combinar fotogramas en un vídeo
Por lo tanto, debe convertir la información de Amazon Rekognition para que pueda utilizarse con OpenCV. Puede encontrar nuestra implementación en el apply_faces_to_video
función, en /rekopoc-apply-faces-to-video-docker/video_processor.py
.
Implementar la aplicación
Si desea implementar la aplicación de muestra en su propia cuenta, vaya a este repositorio de GitHub. Clónelo en su entorno local (también puede usar herramientas como Nube de AWS9) e implementarlo a través de cdk deployment. Encuentre más detalles en la sección posterior "Implementar la aplicación AWS CDK". Primero, veamos la estructura del proyecto del repositorio.
Estructura del proyecto
Este proyecto contiene código fuente y archivos de soporte para una aplicación sin servidor que puede implementar con el CDK de AWS. Incluye los siguientes archivos y carpetas.
- rekognition_video_face_blurring_cdk/ – Código CDK Python para el despliegue de la aplicación.
- rekopoc-aplicar-caras-a-vídeo-docker/ – Código para la función Lambda: usa OpenCV para desenfocar caras por cuadro en video, carga el resultado final para generar el depósito S3.
- rekopoc-chequear-estado/ – Código para la función Lambda: obtiene resultados de detección de rostros para el análisis de video de Amazon Rekognition.
- rekopoc-obtener-marcas-de-tiempo-caras/ – Código para la función Lambda: obtiene cuadros delimitadores de rostros detectados y marcas de tiempo asociadas.
- rekopoc-inicio-detección-de-caras/ – Código para la función Lambda: se activa mediante un evento S3 cuando se carga un nuevo archivo de video .mp4 o .mov, inicia la detección asincrónica de rostros en un video almacenado e inicia la ejecución de la máquina de estado de AWS Step Functions.
- requerimientos.txt – Paquetes necesarios para implementar la aplicación AWS CDK.
La aplicación utiliza varios recursos de AWS, incluidas AWS Step Functions, funciones de Lambda y depósitos de S3. Estos recursos están definidos en el rekognition_video_face_blurring_cdk/rekognition_video_face_blurring_cdk_stack.py de este proyecto Actualice el código de Python para agregar recursos de AWS a través del mismo proceso de implementación que actualiza el código de su aplicación. Dependiendo del tamaño del video que desee anonimizar, es posible que deba actualizar la configuración de las funciones de Lambda y ajustar la memoria y el tiempo de espera. Puede aprovisionar un máximo de 10,240 10 MB (15 GB) de memoria y configurar sus funciones de AWS Lambda para que se ejecuten hasta XNUMX minutos por ejecución.
Implemente la aplicación AWS CDK
El kit de desarrollo de la nube de AWS (AWS CDK) es un marco de desarrollo de software de código abierto para definir los recursos de su aplicación en la nube utilizando lenguajes de programación familiares. Este proyecto utiliza AWS CDK en Python.
Para compilar e implementar su aplicación por primera vez, debe:
Paso 1: asegúrese de tener Docker en ejecución.
Necesitará ejecutar Docker para crear la imagen antes de enviarla a Amazon ECR.
Paso 2: Configure sus credenciales de AWS.
La forma más sencilla de satisfacer este requisito es ejecutar el siguiente comando en su shell:
Para obtener orientación adicional sobre cómo configurar su instalación de AWS CLI, siga las Configuración rápida con aws configure de la guía del usuario de la CLI de AWS.
Paso 3: Instale el CDK de AWS y los requisitos.
Simplemente ejecute lo siguiente en su shell:
- El primer comando instalará AWS CDK Toolkit globalmente mediante Node Package Manager.
- El segundo comando instalará todos los paquetes de Python que necesita el CDK de AWS mediante el administrador de paquetes pip. Este comando debe ejecutarse desde la carpeta raíz del repositorio de GitHub clonado.
Paso 4: inicie su entorno de AWS para el CDK e implemente la aplicación.
- El primer comando aprovisionará los recursos iniciales que AWS CDK necesita para realizar la implementación. Estos recursos incluyen un depósito de Amazon S3 para almacenar archivos y roles de IAM que otorgan los permisos necesarios para realizar implementaciones.
- Finalmente,
cdk deploy
desplegará la pila.
Paso 5: Pruebe la aplicación.
Cargue un video en el depósito S3 de entrada a través de la Consola de administración de AWS, la CLI de AWS o el SDK y encuentre el resultado en el depósito de salida.
Limpiar
Para eliminar la aplicación de muestra que creó, use el CDK de AWS:
Conclusión
En esta publicación, le mostramos cómo implementar una solución para desenfocar videos automáticamente sin aprovisionar ningún recurso a su cuenta de AWS. Usamos la característica de detección de rostros de Amazon Rekognition Video, Container Image Support para las funciones de AWS Lambda para trabajar fácilmente con OpenCV, y orquestamos todo el flujo de trabajo con AWS Step Functions. Finalmente, hicimos que nuestra solución fuera integral y reutilizable con AWS CDK para facilitar su implementación y adaptación.
Siguientes Pasos
Si tiene comentarios sobre esta publicación, envíelos en la sección Comentarios a continuación. Para obtener más información, visite los siguientes enlaces sobre las herramientas y servicios que utilizamos y siga el código en GitHub. ¡Esperamos sus comentarios y contribuciones!
Acerca de los autores
Anastasia Pachni Tsitiridou es arquitecto de soluciones en AWS. Tiene su sede en Ámsterdam y apoya a los ISV en todo el Benelux en su viaje a la nube. Estudió Ingeniería Eléctrica e Informática antes de conocer la Visión por Computador. Lo que más disfruta hoy en día es trabajar en la intersección de CV y ML.
olivier sutter es Arquitecto de Soluciones en Francia. Tiene su sede en París y siempre establece los mejores intereses de sus clientes como su máxima prioridad. Con una sólida formación académica en matemáticas aplicadas, comenzó a desarrollar su pasión por la IA/ML en la universidad y ahora prospera aplicando este conocimiento en casos de uso del mundo real con sus clientes.
david gallitelli es Arquitecto de Soluciones Especializado en IA/ML en la región EMEA. Tiene su sede en Bruselas y trabaja en estrecha colaboración con los clientes en todo el Benelux. Ha sido desarrollador desde muy joven, comenzó a programar a la edad de 7 años. Comenzó a aprender AI/ML desde los últimos años de la universidad y se ha enamorado de él desde entonces.
Fuente: https://aws.amazon.com/blogs/machine-learning/blur-faces-in-videos-automatically-with-amazon-rekognition-video/- '
- 100
- 7
- de la máquina
- Mi Cuenta
- Adicionales
- AI
- Todos
- Amazon
- Reconocimiento de amazonas
- Ámsterdam
- análisis
- abejas
- applicación
- Aplicación
- aplicaciones
- arquitectura
- Reservada
- inteligencia artificial
- Inteligencia Artificial (AI)
- AWS
- AWS Lambda
- MEJOR
- build
- Procesos de negocios
- llamar al
- más cerca
- Soluciones
- código
- comentarios
- Visión por computador
- Configuración
- Consola
- Envase
- Referencias
- Clientes
- datos
- deep learning
- Detección
- Developer
- Desarrollo
- Docker
- Ingeniería
- Entorno
- Evento
- ejecución
- Cara
- caras
- Feature
- Finalmente
- Nombre
- primer vez
- de tus señales
- seguir
- adelante
- Marco conceptual
- Francia
- función
- General
- gif
- GitHub
- En todo el mundo
- conceder
- guía
- Cómo
- Como Hacer
- HTTPS
- IAC
- AMI
- imagen
- Incluye
- información
- EN LA MINA
- Intelligence
- IT
- Trabajos
- kit
- especialistas
- Idiomas
- más reciente
- aprendizaje
- Biblioteca
- local
- localmente
- Ubicación
- amar
- máquina de aprendizaje
- Realizar
- Management
- Manipulación
- Marketing
- máscara
- matemáticas
- ML
- habiertos
- de código abierto
- OpenCV
- Otro
- París
- pixel
- política de privacidad
- Programación
- lenguajes de programación
- proyecto
- público
- Python
- Requisitos
- Recursos
- Resultados
- Ejecutar
- correr
- ambiente seguro
- Escala
- Sdk
- la búsqueda de
- Sin servidor
- Servicios
- set
- Cáscara
- sencillos
- Tamaño
- So
- Software
- Desarrollo de software ad-hoc
- Soluciones
- comienzo
- fundó
- Estado
- STORAGE
- tiendas
- SOPORTE
- soportes
- test
- equipo
- parte superior
- universidad
- Actualizar
- Actualizaciones
- us
- casos de uso
- propuesta de
- Video
- Videos
- visión
- esperar
- Actividades:
- flujo de trabajo
- funciona
- mundo
- años