Avec l'avènement de l'intelligence artificielle (IA) et de l'apprentissage automatique (ML), les clients et le grand public sont de plus en plus conscients de leur vie privée, ainsi que de la valeur qu'elle revêt dans le monde actuel axé sur les données. Les entreprises recherchent et commercialisent activement des solutions axées sur la confidentialité, en particulier dans le domaine de la vision par ordinateur (CV). Ils doivent rassurer leurs clients sur le fait que les informations personnelles telles que les visages sont anonymisées et généralement conservées en toute sécurité.
Le floutage des visages est l'une des pratiques les plus connues lors de l'anonymisation des images et des vidéos. Cela implique généralement de détecter d'abord le visage dans une image/vidéo, puis d'y appliquer une goutte de pixels ou d'autres effets de distorsion. Cette charge de travail peut être considérée comme une tâche CV. Premièrement, nous analysons les pixels de l'image/vidéo jusqu'à ce qu'un visage soit reconnu, puis nous extrayons la zone où se trouve le visage dans chaque image, et enfin nous appliquons un masque sur les pixels précédemment trouvés. La première partie de cela peut être réalisée avec des outils de ML et d'apprentissage en profondeur, tels que Amazon Reconnaissance, tandis que la deuxième partie est une manipulation de pixels standard.
Dans cet article, nous montrons comment AWS Step Functions peut être utilisé pour orchestrer AWS Lambda fonctions qui appellent Vidéo de reconnaissance d'Amazon pour détecter les visages dans les vidéos et utiliser une bibliothèque de logiciels open source CV et ML appelée OpenCV pour les brouiller.
Vue d'ensemble de la solution
Dans notre solution, Fonctions d'étape AWS, un service de flux de travail visuel low-code utilisé pour orchestrer les services AWS, automatiser les processus métier et créer des applications sans serveur, est utilisé pour orchestrer les appels et gérer le flux de données entre AWS Lambda les fonctions. Lorsqu'un objet est créé dans un Service de stockage simple d'Amazon (S3) bucket, par exemple par un téléchargement de fichier vidéo, un ObjectCreated
événement est détecté et une première fonction Lambda est déclenchée. Cette fonction Lambda effectue un appel asynchrone au Amazon Reconnaissance API de détection de visage vidéo et démarre l'exécution du flux de travail AWS Step Functions.
Dans le flux de travail, nous utilisons une fonction Lambda et un état d'attente jusqu'à ce que l'analyse asynchrone Amazon Rekognition Video commencée plus tôt se termine. Ensuite, une autre fonction Lambda récupère le résultat du processus terminé à partir d'Amazon Rekognition et le transmet à une autre fonction Lambda qui utilise OpenCV pour flouter les visages détectés. Pour utiliser facilement OpenCV avec notre fonction Lambda, nous avons construit une image Docker hébergée sur Registre des conteneurs élastiques Amazon (ECR), puis déployé sur AWS Lambda grâce à Prise en charge des images de conteneurs.
L'architecture est entièrement sans serveur, nous n'avons donc pas besoin de provisionner, de faire évoluer ou de maintenir notre infrastructure. Nous utilisons également Amazon Rekognition, un service AWS AI hautement évolutif et géré qui ne nécessite aucune expertise en apprentissage approfondi.
De plus, nous avons construit notre application avec le Kit de développement cloud AWS (AWS CDK), un cadre de développement de logiciels open source. Cela nous permet d'écrire Infrastructure as Code (IaC) à l'aide de Python, ce qui facilite le déploiement, la modification et la maintenance de l'application.
Regardons de plus près l'architecture suggérée :
- Le flux d'événements démarre au moment de l'ingestion de la vidéo dans Amazon S3. Amazon Rekognition Video prend en charge les formats de fichiers MPEG-4 et MOV, encodés à l'aide du codec H.264.
- Une fois le fichier vidéo stocké dans Amazon S3, il déclenche automatiquement un événement déclenchant une fonction Lambda.
- La fonction Lambda utilise les attributs de la vidéo (nom et emplacement sur Amazon S3) pour démarrer la tâche de détection de visage sur Amazon Rekognition via un appel d'API.
- La même fonction Lambda démarre ensuite la machine d'état Step Functions, en transmettant les attributs de la vidéo et l'ID de tâche Amazon Rekognition.
- Le flux de travail Step Functions démarre avec une fonction Lambda attendant la fin de la tâche Amazon Rekognition. Une fois que c'est fait, une autre fonction Lambda obtient les résultats d'Amazon Rekognition.
- Enfin, une fonction Lambda avec Prise en charge des images de conteneurs récupère son image Docker, qui prend en charge OpenCV d'Amazon ECR, brouille les visages détectés par Amazon Rekognition et stocke temporairement la vidéo de sortie localement.
- Ensuite, la vidéo floue est placée dans le compartiment S3 de sortie et supprimée des fichiers locaux.
Fournir un accès à une fonction sans serveur à OpenCV est plus facile que jamais avec Prise en charge des images de conteneurs. Au lieu de charger un package de code sur AWS Lambda, le code de la fonction réside dans une image Docker hébergée dans Registre des conteneurs élastiques Amazon.
Si vous souhaitez créer votre propre application en utilisant la détection de visage Amazon Rekognition pour les vidéos et OpenCV pour traiter les vidéos avec Python, considérez ce qui suit :
- Les réponses de l'API Amazon Rekognition pour les vidéos contiennent des horodatages de visages détectés en millisecondes
- OpenCV fonctionne sur les images et utilise la fréquence d'images de la vidéo pour combiner les images dans une vidéo
Par conséquent, vous devez convertir les informations d'Amazon Rekognition pour les rendre utilisables avec OpenCV. Vous pouvez trouver notre implémentation dans le apply_faces_to_video
fonction, dans /rekopoc-apply-faces-to-video-docker/video_processor.py
.
Déployer l'application
Si vous souhaitez déployer l'exemple d'application sur votre propre compte, accédez à ce dépôt GitHub. Clonez-le dans votre environnement local (vous pouvez également utiliser des outils tels que AWSCloud9) et déployez-le via cdk deploy. Trouvez plus de détails dans la section ultérieure « Déployer l'application AWS CDK ». Examinons d'abord la structure du projet de référentiel.
Structure du projet
Ce projet contient le code source et les fichiers de prise en charge d'une application sans serveur que vous pouvez déployer avec AWS CDK. Il comprend les fichiers et dossiers suivants.
- rekognition_video_face_blurring_cdk/ – Code CDK Python pour le déploiement de l'application.
- rekopoc-appliquer-des-visages-à-video-docker/ - Code pour la fonction Lambda : utilise OpenCV pour flouter les visages par image dans la vidéo, télécharge le résultat final dans le compartiment S3 de sortie.
- rekopoc-vérifier-état/ – Code pour la fonction Lambda : Obtient les résultats de détection de visage pour l'analyse Amazon Rekognition Video.
- rekopoc-get-timestamps-faces/ – Code pour la fonction Lambda : obtient les cadres de délimitation des visages détectés et les horodatages associés.
- rekopoc-start-face-detect/ – Code pour la fonction Lambda : est déclenché par un événement S3 lorsqu'un nouveau fichier vidéo .mp4 ou .mov est téléchargé, démarre la détection asynchrone des visages dans une vidéo stockée et démarre l'exécution de la machine d'état d'AWS Step Functions.
- conditions.txt – Packages requis pour le déploiement de l'application AWS CDK.
L'application utilise plusieurs ressources AWS, notamment AWS Step Functions, les fonctions Lambda et les compartiments S3. Ces ressources sont définies dans le rekognition_video_face_blurring_cdk/rekognition_video_face_blurring_cdk_stack.py de ce projet. Mettez à jour le code Python pour ajouter des ressources AWS via le même processus de déploiement qui met à jour votre code d'application. Selon la taille de la vidéo que vous souhaitez anonymiser, vous devrez peut-être mettre à jour la configuration des fonctions Lambda et ajuster la mémoire et le délai d'expiration. Vous pouvez provisionner un maximum de 10,240 10 Mo (15 Go) de mémoire et configurer vos fonctions AWS Lambda pour qu'elles s'exécutent jusqu'à XNUMX minutes par exécution.
Déployer l'application AWS CDK
AWS Cloud Development Kit (AWS CDK) est une infrastructure de développement logiciel open source permettant de définir les ressources de votre application cloud à l'aide de langages de programmation familiers. Ce projet utilise le CDK AWS en Python.
Pour créer et déployer votre application pour la première fois, vous devez :
Étape 1 : Assurez-vous que Docker est en cours d'exécution.
Vous aurez besoin de Docker en cours d'exécution pour créer l'image avant de la transmettre à Amazon ECR.
Étape 2 : Configurez vos informations d'identification AWS.
Le moyen le plus simple de répondre à cette exigence consiste à exécuter la commande suivante dans votre shell :
Pour obtenir des conseils supplémentaires sur la configuration de votre installation de l'AWS CLI, suivez les Configuration rapide avec aws configure à partir du guide de l'utilisateur de l'AWS CLI.
Étape 3 : installez AWS CDK et les exigences.
Exécutez simplement ce qui suit dans votre shell :
- La première commande installera le kit d'outils AWS CDK globalement à l'aide de Node Package Manager.
- La deuxième commande installera tous les packages Python nécessaires à AWS CDK à l'aide du gestionnaire de packages pip. Cette commande doit être émise à partir du dossier racine du référentiel GitHub cloné.
Étape 4 : Démarrez votre environnement AWS pour le CDK et déployez l'application.
- La première commande provisionne les ressources initiales dont AWS CDK a besoin pour effectuer le déploiement. Ces ressources incluent un compartiment Amazon S3 pour le stockage des fichiers et des rôles IAM qui accordent les autorisations nécessaires pour effectuer les déploiements.
- Enfin,
cdk deploy
déploiera la pile.
Étape 5 : testez l'application.
Chargez une vidéo dans le compartiment S3 d'entrée via l'AWS Management Console, l'AWS CLI ou le SDK, et recherchez le résultat dans le compartiment de sortie.
Nettoyer
Pour supprimer l'exemple d'application que vous avez créé, utilisez le CDK AWS :
Conclusion
Dans cet article, nous vous avons montré comment déployer une solution pour flouter automatiquement les vidéos sans provisionner de ressources sur votre compte AWS. Nous avons utilisé la fonction de détection de visage d'Amazon Rekognition Video, la prise en charge des images de conteneur pour les fonctions AWS Lambda pour travailler facilement avec OpenCV, et nous avons orchestré l'ensemble du flux de travail avec AWS Step Functions. Enfin, nous avons rendu notre solution complète et réutilisable avec AWS CDK pour faciliter son déploiement et son adaptation.
Prochaines étapes
Si vous avez des commentaires sur ce message, soumettez-les dans la section Commentaires ci-dessous. Pour plus d'informations, visitez les liens suivants sur les outils et services que nous avons utilisés et suivez le code dans GitHub. Nous attendons vos commentaires et contributions avec impatience !
À propos des auteurs
Anastasia Pachni Tsitiridou est architecte de solutions chez AWS. Elle est basée à Amsterdam et soutient les ISV à travers le Benelux dans leur transition vers le cloud. Elle a étudié le génie électrique et informatique avant d'être initiée à la vision par ordinateur. Ce qu'elle apprécie le plus aujourd'hui, c'est de travailler à l'intersection du CV et du ML.
Olivier Sutter est un architecte de solutions en France. Il est basé à Paris et fait toujours de l'intérêt de ses clients sa priorité absolue. Avec une solide formation académique en mathématiques appliquées, il a commencé à développer sa passion pour l'IA/ML à l'université, et s'épanouit maintenant en appliquant ces connaissances sur des cas d'utilisation réels avec ses clients.
David Gallitelli est un architecte de solutions spécialisé pour l'IA/ML dans la région EMEA. Il est basé à Bruxelles et travaille en étroite collaboration avec les clients dans tout le Benelux. Il est développeur depuis très jeune, commençant à coder à l'âge de 7 ans. Il a commencé à apprendre l'IA/ML depuis les dernières années de l'université, et en est tombé amoureux depuis.
Source : https://aws.amazon.com/blogs/machine-learning/blur-faces-in-videos-automatically-with-amazon-rekognition-video/- '
- 100
- 7
- accès
- Compte
- Supplémentaire
- AI
- Tous
- Amazon
- Amazon Reconnaissance
- amsterdam
- selon une analyse de l’Université de Princeton
- api
- appli
- Application
- applications
- architecture
- Réservé
- intelligence artificielle
- Intelligence artificielle (AI)
- AWS
- AWS Lambda
- LES MEILLEURS
- construire
- la performance des entreprises
- processus d'affaires
- Appelez-nous
- plus
- le cloud
- code
- commentaires
- Vision par ordinateur
- configuration
- Console
- Contenant
- Lettres de créance
- Clients
- données
- l'apprentissage en profondeur
- Détection
- Développeur
- Développement
- Docker
- ENGINEERING
- Environment
- événement
- exécution
- Visage
- visages
- Fonctionnalité
- finalement
- Prénom
- première fois
- flux
- suivre
- Avant
- Framework
- France
- fonction
- Général
- gif
- GitHub
- À l'échelle mondiale
- subvention
- guide
- Comment
- How To
- HTTPS
- IAC
- IAM
- image
- Y compris
- d'information
- Infrastructure
- Intelligence
- IT
- Emploi
- kit
- spécialisées
- Langues
- Nouveautés
- apprentissage
- Bibliothèque
- locales
- localement
- emplacement
- love
- machine learning
- Fabrication
- gestion
- Manipulation
- Stratégie
- masque
- mathématiques
- ML
- ouvert
- open source
- OpenCV
- Autre
- Paris
- pixel
- la confidentialité
- Programmation
- langages de programmation
- Projet
- public
- Python
- Exigences
- Ressources
- Résultats
- Courir
- pour le running
- des
- Escaliers intérieurs
- Sdk
- recherche
- Sans serveur
- Services
- set
- coquillage
- étapes
- Taille
- So
- Logiciels
- développement de logiciels
- Solutions
- Commencer
- j'ai commencé
- Région
- storage
- STORES
- Support
- Les soutiens
- tester
- fiable
- les outils
- top
- université
- Mises à jour
- Actualités
- us
- cas d'utilisation
- Plus-value
- Vidéo
- Vidéos
- vision
- attendez
- Activités:
- workflow
- vos contrats
- world
- années