

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Recherche de visages dans une collection
<a name="collections"></a>

Amazon Rekognition vous permet d’utiliser un visage en entrée pour rechercher des correspondances dans une collection de visages enregistrés. Vous commencez par stocker des informations sur les visages détectés dans des conteneurs côté serveur appelés « collections ». Les collections stockent à la fois les visages individuels et les utilisateurs (plusieurs visages d'une même personne). Les visages individuels sont stockés sous forme de vecteurs de visage, une représentation mathématique du visage (et non une image réelle du visage). Différentes images d'une même personne peuvent être utilisées pour créer et stocker plusieurs vecteurs de visage dans la même collection. Vous pouvez ensuite agréger plusieurs vecteurs de visage de la même personne pour créer un vecteur utilisateur. Les vecteurs utilisateur peuvent offrir une plus grande précision de recherche faciale grâce à des représentations plus robustes, contenant différents degrés d’éclairage, de netteté, de pose, d’apparence, etc.

Une fois que vous avez créé une collection, vous pouvez utiliser un visage en entrée pour rechercher des vecteurs utilisateur ou des vecteurs de visage correspondants dans une collection. La recherche par rapport aux vecteurs utilisateur peut améliorer considérablement la précision comparée à la recherche par rapport à des vecteurs faciaux individuels. Vous pouvez utiliser des visages détectés dans des images, des vidéos stockées et des vidéos en streaming pour rechercher des vecteurs de visage stockés. Vous pouvez utiliser les visages détectés dans les images pour effectuer une recherche par rapport aux vecteurs utilisateur enregistrés.

Pour stocker les informations faciales, vous devez procéder comme suit :

1. Créer une collection - Pour stocker des informations faciales, vous devez d'abord créer ([CreateCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateCollection.html)) une collection faciale dans l'une des AWS régions de votre compte. Vous spécifiez cette collection de visages lorsque vous appelez l’opération `IndexFaces`.

1. Index des visages : l'[IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html)opération détecte le ou les visages dans une image, extrait et stocke le ou les vecteurs de visage dans la collection. Cette opération vous permet de détecter les visages dans une image et de conserver les informations sur les caractéristiques faciales détectées dans une collection. Voici un exemple d’opération d’API *basée sur le stockage*, car le service conserve sur le serveur les informations relatives au vecteur de visage.

Pour créer un utilisateur et associer plusieurs vecteurs de visage à un utilisateur, vous devez effectuer les opérations suivantes :

1. Créer un utilisateur - Vous devez d'abord créer un utilisateur avec [CreateUser](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateUser.html). Vous pouvez améliorer la précision de la correspondance faciale en agrégeant plusieurs vecteurs de visage d’une même personne dans un vecteur utilisateur. Vous pouvez associer jusqu’à 100 vecteurs de visage à un vecteur utilisateur. 

1. Associer des visages : après avoir créé l'utilisateur, vous pouvez ajouter des vecteurs de visage existants à cet utilisateur par le biais de l'[AssociateFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_AssociateFaces.html)opération. Les vecteurs de visage doivent résider dans la même collection qu’un vecteur utilisateur pour être associés à ce vecteur utilisateur. 

Après avoir créé une collection et enregistré les vecteurs de visages et d’utilisateurs, vous pouvez utiliser les opérations suivantes pour rechercher des correspondances de visages :
+ [SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html)- Pour effectuer une recherche dans des visages individuels enregistrés à l'aide d'un visage issu d'une image.
+ [SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html)- Pour effectuer une recherche parmi des visages individuels enregistrés à l'aide d'un identifiant facial fourni.
+ [SearchUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsers.html)- Pour effectuer une recherche auprès d'utilisateurs enregistrés à l'aide d'un identifiant facial ou d'un identifiant utilisateur fourni.
+ [SearchUsersByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsersByImage.html)- Pour effectuer une recherche parmi les utilisateurs enregistrés avec un visage à partir d'une image.
+ [StartFaceSearch](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartFaceSearch.html)- Pour rechercher des visages dans une vidéo enregistrée.
+ [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html)- Pour rechercher des visages dans une vidéo en streaming.

**Note**  
Les collections stockent des vecteurs de visages, qui sont des représentations mathématiques de visages. Les collections ne stockent pas d'images de visages.

Les diagrammes suivants montrent l'ordre des opérations d'appel, en fonction de vos objectifs en matière d'utilisation des collections :

**Pour une correspondance avec une précision maximale avec les vecteurs utilisateur :**

![\[Schéma illustrant le stockage et la recherche de vecteurs faciaux d'utilisateurs dans une collection CreateCollection, répertorie les opérations telles que IndexFaces CreateUser, AssociateFaces, SearchUsersByImage,, et SearchUsers.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/dg/images/uservectorsCollection.png)


**Pour une correspondance de haute précision avec des vecteurs faciaux individuels :**

![\[Le diagramme illustrant le stockage et la recherche de visages dans une collection répertorie les opérations telles que CreateCollection IndexFaces StartFaceSearch, CreateStreamProcessor, SearchFacesByImage,, et SearchFaces.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/dg/images/facevectorsCollection.png)


Vous pouvez utiliser les collections dans différents scénarios. Par exemple, vous pouvez créer une collection de visages qui stocke les visages détectés à partir d'images de badges d'employés numérisées et de documents émis IDs par le gouvernement à l'aide `AssociateFaces` des opérations `IndexFaces` et. Lorsqu’un employé entre dans le bâtiment, une image du visage est capturée et envoyée à l’opération `SearchUsersByImage`. Si la correspondance des visages offre un score de similarité suffisamment élevé (par exemple, 99 %), vous pouvez authentifier l’employé. 

# Gestion des collections de visages, des visages et des utilisateurs
<a name="managing-face-collections"></a>

 La collection de visages est la ressource utilisée par Amazon Rekognition pour contenir des informations relatives aux visages et aux utilisateurs. Vous utilisez différentes opérations de l'API Rekognition pour gérer la collection elle-même, ainsi que tous les visages ou vecteurs de visages stockés dans la collection. 

## Gérer une collection
<a name="managing-collections"></a>

La collection de visages est la principale ressource Amazon Rekognition, et chaque collection de visages que vous créez possède un Amazon Resource Name (ARN) unique. Vous créez chaque collection de visages dans une AWS région spécifique dans votre compte. Au moment d’être créée, une collection est associée à la version la plus récente du modèle de détection de visages. Pour de plus amples informations, veuillez consulter [Comprendre le versionnement des modèles](face-detection-model.md). 

Vous pouvez effectuer les opérations de gestion suivantes dans une collection :
+ Créer une collection avec [CreateCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateCollection.html). Pour de plus amples informations, veuillez consulter [Création d’une collection](create-collection-procedure.md).
+ Répertorier les collections disponibles avec [ListCollections](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListCollections.html). Pour de plus amples informations, veuillez consulter [Créer une liste de collections](list-collection-procedure.md).
+ Décrire une collection avec [DescribeCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeCollection.html). Pour de plus amples informations, veuillez consulter [Description d’une collection](describe-collection-procedure.md).
+ Supprimer une collection avec [DeleteCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteCollection.html). Pour de plus amples informations, veuillez consulter [Suppression d’une collection](delete-collection-procedure.md).

## Gestion des visages dans une collection
<a name="collections-index-faces"></a>

Une fois que vous avez créé une collection de visages, vous pouvez y stocker des visages. Amazon Rekognition propose les opérations suivantes pour gérer les visages d’une collection :
+  L'opération [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html) détecte les visages dans l'image d'entrée (JPEG ou PNG) et les ajoute à la collection de visages spécifiée. Un ID de visage unique est renvoyé pour chaque visage détecté dans l’image. Une fois que vous avez conservé les visages, vous pouvez explorer la collection pour y rechercher des correspondances de visages. Pour de plus amples informations, veuillez consulter [Ajout de visages à une collection](add-faces-to-collection-procedure.md).
+ L'opération [ListFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListFaces.html) dresse la liste des visages présents dans une collection. Pour de plus amples informations, veuillez consulter [Ajout de visages à une collection](add-faces-to-collection-procedure.md).
+ L'opération [DeleteFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteFaces.html) permet de supprimer des visages d'une collection. Pour de plus amples informations, veuillez consulter [Suppression de visages d’une collection](delete-faces-procedure.md).

## Gérer les utilisateurs dans une collection
<a name="collections-manage-users"></a>

Après avoir enregistré plusieurs vecteurs de visage d’une même personne, vous pouvez améliorer la précision en associant tous ces vecteurs de visage dans un vecteur utilisateur unique. Vous pouvez utiliser les opérations suivantes pour gérer vos utilisateurs :
+ [CreateUser](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateUser.html)- L'opération crée un nouvel utilisateur dans une collection avec un ID utilisateur unique fourni.
+ [AssociateUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_AssociateUsers.html)- Ajoutez 1 à 100 visages uniques IDs à un ID utilisateur. Après avoir associé au moins un identifiant facial à un utilisateur, vous pouvez rechercher des correspondances avec cet utilisateur dans votre collection.
+ [ListUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListUsers.html)- Répertorie les utilisateurs d'une collection.
+ [DeleteUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteUsers.html)- Supprime un utilisateur d'une collection avec l'ID utilisateur fourni.
+ [DisassociateFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DisassociateFaces.html)- Supprime un ou plusieurs visages IDs d'un utilisateur.

# Utilisation de seuils de similarité pour associer et faire correspondre des visages
<a name="thresholds-collections"></a>

Les seuils de similarité sont utilisés à la fois pour associer et faire correspondre des visages. Ce qui suit est un guide d'utilisation des seuils de similarité pour les deux cas d'utilisation.

## Utilisation de seuils de similarité pour associer des visages
<a name="thresholds-collections-associating-faces"></a>

Lorsque vous associez des visages à l'aide de cette [AssociateFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_AssociateFaces.html)opération, il est important de vous assurer que les visages associés à un utilisateur proviennent tous de la même personne. Pour vous aider, le paramètre `UserMatchThreshold` indique le niveau de confiance minimal requis pour que le nouveau visage soit associé à un visage `UserID` qui contient déjà un `FaceID`. Cela permet de s’assurer que les `FaceIds` sont associés au `UserID` correct. La valeur est comprise entre 0 et 100 et la valeur par défaut est 75. 

## Utilisation des seuils de similarité pour faire correspondre les visages
<a name="thresholds-face-match-similarity"></a>

Nous vous permettons de contrôler les résultats de toutes les opérations de recherche ([CompareFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CompareFaces.html), [SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html), [SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html), [SearchUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsers.html), [SearchUsersByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsersByImage.html)) en fournissant un seuil de similarité comme paramètre d'entrée.

`FaceMatchThreshold`, est l’attribut en entrée de seuil de similarité pour `SearchFaces` et `SearchFacesByImage`. Il contrôle le nombre de résultats renvoyés en fonction de la ressemblance avec le visage mis en correspondance. L’attribut de seuil de similarité pour `SearchUsers` et `SearchUsersByImage` est `UserMatchThreshold`. Il contrôle le nombre de résultats renvoyés en fonction de la ressemblance avec le visage mis en correspondance. L’attribut de seuil est `SimilarityThreshold` pour `CompareFaces`. 

Les réponses dont la valeur d’attribut de réponse `Similarity` est inférieure au seuil ne sont pas renvoyées. Ce seuil est important pour calibrer votre cas d’utilisation, car il peut déterminer le nombre de faux positifs inclus dans vos résultats de correspondance. Ce seuil contrôle la sensibilité de vos résultats de recherche ; plus le seuil est bas, plus la sensibilité est élevée. 

Tous les systèmes d’apprentissage automatique (Machine Learning) sont probabilistes. Vous devez faire preuve de discernement dans la configuration du seuil de similarité approprié, en fonction de votre cas d’utilisation. Par exemple, si vous cherchez à développer une application photo pour identifier les membres de famille qui se ressemblent, vous pouvez choisir un seuil plus bas (par exemple, 80 %). En revanche, pour de nombreux cas d’utilisation d’application des lois, nous vous recommandons d’utiliser une valeur de seuil élevée de 99 % ou plus pour réduire le risque d’erreur d’identification. 

En plus de `FaceMatchThreshold` et `UserMatchThreshold`, vous pouvez utiliser l’attribut de réponse `Similarity` comme moyen pour réduire risque d’erreur d’identification. Par exemple, vous pouvez choisir d’utiliser un seuil bas (tel que 80 %) pour renvoyer plus de résultats. Ensuite, vous pouvez utiliser l’attribut de réponse Similarité (pourcentage de similarité) pour affiner le choix et filtrer les bonnes réponses dans votre application. Là encore, l’utilisation d’une similarité plus élevée (par exemple, 99 % et plus) réduit le risque d’erreur d’identification. 

# Conseils pour l'indexation des visages dans les scénarios courants
<a name="guidance-index-faces"></a>

Les conseils ci-dessous vous permettront d’utiliser `IndexFaces` dans des scénarios courants.

## Applications de sécurité publique ou critique
<a name="guidance-index-faces-critical"></a>
+ Appelez [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html) avec des images ne contenant qu'un seul visage par image et associez l'ID de visage renvoyé à l'identifiant de la personne dans l'image.
+ Vous pouvez utiliser [DetectFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectFaces.html) avant l'indexation pour vérifier que l'image ne contient qu'un seul visage. Si plusieurs visages sont détectés, soumettez à nouveau l’image après avoir vérifié qu’elle ne contient qu’un seul visage. Cela évite d’indexer plusieurs visages par inadvertance et de les associer à la même personne.

## Applications de partage de photos et de réseaux sociaux
<a name="guidance-index-faces-social"></a>
+ Pour les cas d’utilisation tels que les albums de photos de famille, vous devez appeler `IndexFaces` sans appliquer de restrictions sur les images qui contiennent plusieurs visages. Dans ce cas, vous devez identifier chaque personne dans chaque photo et utiliser ces informations pour trier les photos par les personnes qu’elles contiennent. 

## Utilisation générale
<a name="guidance-index-faces-general"></a>
+ Pour améliorer la qualité de la mise en correspondance, indexez plusieurs images différentes de la même personne, notamment avec des attributs faciaux différents (position du visage, pilosité faciale, etc.), créez un utilisateur et associez les différents visages à cet utilisateur.
+ Intégrez un processus de vérification pour que les mises en correspondance ayant échoué puissent être indexées avec l’identifiant de visage approprié afin d’améliorer les mises en correspondance de visages suivantes.
+ Pour plus d’informations sur la qualité des images, consultez [Recommandations pour les images d’entrée de comparaison faciale](recommendations-facial-input-images.md). 

# Recherche de visages et d’utilisateurs dans une collection
<a name="collections-search-faces"></a>

Après avoir créé une collection de visages et enregistré des vecteurs de visages sous forme de vecteurs and/or utilisateur, vous pouvez rechercher des correspondances de visages dans une collection de visages. Avec Amazon Rekognition vous pouvez rechercher des visages dans une collection qui correspondent à l’un des éléments suivants :
+ Un ID de visage fourni ([SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html)). Pour de plus amples informations, veuillez consulter [Recherche d’un visage avec un ID de visage](search-face-with-id-procedure.md).
+ Le visage le plus grand dans une image fournie ([SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html)). Pour de plus amples informations, veuillez consulter [Recherche d’un visage à l’aide d’une image](search-face-with-image-procedure.md).
+ Des visages dans une vidéo stockée. Pour de plus amples informations, veuillez consulter [Recherche de visages dans des vidéos stockées](procedure-person-search-videos.md).
+ Des visages dans une vidéo en streaming. Pour de plus amples informations, veuillez consulter [Utilisation des vidéos streaming](streaming-video.md).

Vous pouvez utiliser l’opération `CompareFaces` pour comparer un visage d’une image source avec les visages de l’image cible. La portée de cette comparaison se limite aux visages détectés dans l’image cible. Pour de plus amples informations, veuillez consulter [Comparaison de visages dans des images](https://docs.aws.amazon.com/rekognition/latest/dg/faces-comparefaces.html).

Les différentes opérations de recherche présentées dans la liste suivante comparent un visage (identifié par un `FaceId` ou une image d’entrée) à tous les visages stockés dans une collection de visages donnée : 
+ [SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html)
+ [SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html)
+ [SearchUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsers.html)
+ [SearchUsersByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsersByImage.html)

# Cas d’utilisation impliquant la sécurité publique
<a name="considerations-public-safety-use-cases"></a>

 Outre les recommandations répertoriées dans les [Bonnes pratiques pour les capteurs, images d’entrée et vidéos](best-practices.md) et les [Conseils pour l'indexation des visages dans les scénarios courants](guidance-index-faces.md), vous devez utiliser les bonnes pratiques suivantes lors du déploiement des systèmes de détection et de comparaison faciale dans les cas d’utilisation qui impliquent la sécurité publique. Tout d’abord, vous devez utiliser des seuils de confiance de 99 % ou plus pour réduire les erreurs et les faux positifs. Ensuite, vous devez faire appel à des personnes pour vérifier les résultats envoyés par un système de détection ou de comparaison des visages, et vous ne devez pas prendre de décisions basées sur les résultats du système sans passer par une étape de vérification humaine. Les systèmes de détection et de comparaison des visages doivent servir d’outil pour aider à restreindre le champ et permettre aux personnes de procéder à une vérification rapide et d’étudier les options. Enfin, nous vous recommandons d’être transparent sur l’utilisation des systèmes de détection et de comparaison faciale dans ces cas d’utilisation, et, dans la mesure du possible, d’informer les utilisateurs finaux et les personnes concernées de l’utilisation de ces systèmes, d’obtenir les autorisations d’utilisation associées, et de fournir un mécanisme par lequel les utilisateurs finaux et les personnes concernées peuvent laisser des commentaires pour améliorer le système.

 Si vous êtes un organisme chargé de l’application de la loi qui utilise la fonction de comparaison des visages Amazon Rekognition dans le cadre d’enquêtes criminelles, vous devez respecter les exigences énoncées dans les [Conditions de service AWS](https://aws.amazon.com/service-terms/). Cela inclut les éléments suivants :
+ Disposer d’un personnel dûment formé pour examiner toutes les décisions d’agir susceptibles d’affecter les libertés civiles ou les droits de l’homme équivalents d’une personne.
+ Former le personnel à l’utilisation responsable des systèmes de reconnaissance faciale.
+ Rendre publique votre utilisation des systèmes de reconnaissance faciale.
+ Ne pas utiliser Amazon Rekognition à des fins de surveillance soutenue d’une personne sans étude indépendante ou circonstances urgentes.

Dans tous les cas, les correspondances de la comparaison faciale doivent être étudiées dans le contexte d’autres preuves irréfutables, et ne doivent pas être utilisées comme élément déterminant unique pour prendre une décision. Toutefois, si la comparaison faciale est utilisée pour des non-law-enforcement scénarios (par exemple, pour déverrouiller un téléphone ou authentifier l'identité d'un employé afin d'accéder à un immeuble de bureaux privé sécurisé), ces décisions ne nécessiteraient pas d'audit manuel car elles n'auraient aucune incidence sur les libertés civiles d'une personne ou sur les droits humains équivalents. 

Si vous envisagez d’utiliser un système de détection ou de comparaison faciale pour les cas d’utilisation qui impliquent la sécurité publique, vous devez respecter les bonnes pratiques mentionnées précédemment. Vous devez également consulter les ressources publiées relatives à l’utilisation de la comparaison faciale. Ces ressources incluent le document [Face Recognition Policy Development Template For Use In Criminal Intelligence and Investigative Activities](https://www.bja.gov/Publications/Face-Recognition-Policy-Development-Template-508-compliant.pdf) fourni par le Bureau of Justice Assistance du Département de la Justice des États-Unis. Le modèle fournit plusieurs ressources relatives à la biométrie et à la comparaison faciale. Il est conçu pour fournir aux organismes chargés de l’application de la loi et aux organismes de sécurité publique un cadre pour développer des stratégies de comparaison faciale qui sont conformes aux lois applicables, réduisent les risques de confidentialité et établissent la responsabilité et la surveillance des entités. Le document [ Best Privacy Practices for Commercial Use of Facial Recognition](https://www.ntia.doc.gov/files/ntia/publications/privacy_best_practices_recommendations_for_commercial_use_of_facial_recogntion.pdf) rédigé par la National Telecommunications and Information Administration et le document [ Best Practices for Common Uses of Facial Recognition](https://www.ftc.gov/sites/default/files/documents/reports/facing-facts-best-practices-common-uses-facial-recognition-technologies/121022facialtechrpt.pdf) rédigé par le personnel de la Federal Trade Commission figurent parmi les autres ressources disponibles. Il est possible que d’autres ressources soient élaborées et publiées dans le futur. Vous devez vous informer en continu sur ce sujet important.

Pour rappel, vous devez respecter l’ensemble des lois applicables quant à leur utilisation des services AWS, et vous ne pouvez pas utiliser un service AWS d’une manière qui enfreint les droits d’autrui ou qui peut porter préjudice à autrui. Cela signifie que vous ne pouvez pas utiliser les services AWS pour les cas d’utilisation de sécurité publique d’une manière qui fait preuve de discrimination illégale à l’égard d’une personne ou qui viole la procédure officielle, la vie privée ou les libertés individuelles d’une personne. Vous devez, si nécessaire, obtenir des conseils juridiques appropriés pour passer en revue les exigences légales ou les questions relatives à votre cas d’utilisation. 

## Utiliser Amazon Rekognition pour renforcer la sécurité publique
<a name="public-safety"></a>

Amazon Rekognition peut aider dans les scénarios de sécurité publique et d’application de la loi, tels que la recherche d’enfants perdus, la lutte contre le trafic d’êtres humains ou la prévention des crimes. Dans les scénarios de sécurité publique et d’application de la loi, selon les cas, prenez en considération les éléments suivants :
+ Utilisez Amazon Rekognition comme première étape pour trouver des correspondances possibles. Les réponses fournies par les opérations de détection des visages de Amazon Rekognition vous permettent d’obtenir rapidement un ensemble de correspondances potentielles à prendre en compte.
+ N’utilisez pas les réponses Amazon Rekognition pour prendre des décisions autonomes pour les scénarios qui nécessitent d’être analysés par une personne. Si vous êtes un organisme chargé de l’application de la loi qui utilise Amazon Rekognition pour identifier une personne dans le cadre d’une enquête criminelle, et que des mesures seront prises en fonction de l’identification susceptibles d’affecter les libertés civiles de cette personne ou ses droits de l’homme équivalents, la décision d’agir doit être prise par un une personne dûment formée sur la base de son examen indépendant de la preuve d’identification.
+ Utilisez un seuil de similarité de 99 % pour les scénarios dans lesquels des correspondances de similarité de visages très précises sont nécessaires. Par exemple pour l’authentification de l’accès à un bâtiment.
+ Lorsque le respect des droits civiques est en jeu, par exemple dans les cas d’utilisation impliquant l’application de la loi, utilisez des seuils de confiance de 99 % ou plus, et faites vérifier les prédictions de la comparaison faciale par un intervenant humain afin de garantir que les droits civiques sont respectés.
+ Utilisez un seuil de similarité inférieur à 99 % pour les scénarios qui tirent avantage d’un ensemble plus important de correspondances potentielles. Par exemple pour la recherche de personnes disparues. Si nécessaire, vous pouvez utiliser l’attribut de réponse Similarité afin de déterminer le niveau de similarité des correspondances potentielles par rapport à la personne que vous voulez reconnaître. 
+ Élaborez un plan pour gérer les correspondances de visage de type faux positif renvoyées par Amazon Rekognition. Par exemple, améliorez la correspondance en utilisant plusieurs images de la même personne lorsque vous créez l'index avec l'opération [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html). Pour de plus amples informations, veuillez consulter [Conseils pour l'indexation des visages dans les scénarios courants](guidance-index-faces.md).

Dans d’autres cas d’utilisation (comme les réseaux sociaux), nous vous recommandons de faire preuve de discernement pour évaluer si les résultats d’Amazon Rekognition nécessitent une vérification par un opérateur humain. De plus, en fonction des exigences de votre application, le seuil de similarité peut être inférieur. 

# Création d’une collection
<a name="create-collection-procedure"></a>

Vous pouvez utiliser l'opération [CreateCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateCollection.html) pour créer une collection.

Pour de plus amples informations, veuillez consulter [Gérer une collection](managing-face-collections.md#managing-collections). 

**Pour créer une collection (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `CreateCollection`.

------
#### [ Java ]

   L’exemple suivant crée une collection et affiche son Amazon Resource Name (ARN).

   Remplacez la valeur d’`collectionId` par le nom de la collection que vous souhaitez créer.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.CreateCollectionRequest;
   import com.amazonaws.services.rekognition.model.CreateCollectionResult;
   
   
   public class CreateCollection {
   
      public static void main(String[] args) throws Exception {
   
   
         AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
         
         String collectionId = "MyCollection";
               System.out.println("Creating collection: " +
            collectionId );
               
           CreateCollectionRequest request = new CreateCollectionRequest()
                       .withCollectionId(collectionId);
              
         CreateCollectionResult createCollectionResult = rekognitionClient.createCollection(request); 
         System.out.println("CollectionArn : " +
            createCollectionResult.getCollectionArn());
         System.out.println("Status code : " +
            createCollectionResult.getStatusCode().toString());
   
      } 
   
   }
   ```

------
#### [ Java V2 ]

   Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet [ici](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/CreateCollection.java).

    Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   //snippet-start:[rekognition.java2.create_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.CreateCollectionResponse;
   import software.amazon.awssdk.services.rekognition.model.CreateCollectionRequest;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   //snippet-end:[rekognition.java2.create_collection.import]
   
   /**
   * Before running this Java V2 code example, set up your development environment, including your credentials.
   *
   * For more information, see the following documentation topic:
   *
   * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
   */
   public class CreateCollection {
   
    public static void main(String[] args) {
   
        final String usage = "\n" +
            "Usage: " +
            "   <collectionName> \n\n" +
            "Where:\n" +
            "   collectionName - The name of the collection. \n\n";
   
        if (args.length != 1) {
            System.out.println(usage);
            System.exit(1);
        }
   
        String collectionId = args[0];
        Region region = Region.US_EAST_1;
        RekognitionClient rekClient = RekognitionClient.builder()
            .region(region)
            .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
            .build();
   
        System.out.println("Creating collection: " +collectionId);
        createMyCollection(rekClient, collectionId );
        rekClient.close();
    }
   
    // snippet-start:[rekognition.java2.create_collection.main]
    public static void createMyCollection(RekognitionClient rekClient,String collectionId ) {
   
        try {
            CreateCollectionRequest collectionRequest = CreateCollectionRequest.builder()
                .collectionId(collectionId)
                .build();
   
            CreateCollectionResponse collectionResponse = rekClient.createCollection(collectionRequest);
            System.out.println("CollectionArn: " + collectionResponse.collectionArn());
            System.out.println("Status code: " + collectionResponse.statusCode().toString());
   
        } catch(RekognitionException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }
    // snippet-end:[rekognition.java2.create_collection.main]
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande affiche la sortie JSON pour l'opération `create-collection` CLI. 

   Remplacez la valeur d’`collection-id` par le nom de la collection que vous souhaitez créer.

    Remplacez la valeur de `profile_name` par le nom de votre profil de développeur. 

   ```
   aws rekognition create-collection --profile profile-name --collection-id "collection-name"
   ```

------
#### [ Python ]

   L’exemple suivant crée une collection et affiche son Amazon Resource Name (ARN). 

   Remplacez la valeur de `collection_id` par le nom de la collection que vous souhaitez créer. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur.

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def create_collection(collection_id):
       session = boto3.Session(profile_name='profile-name')
       client = session.client('rekognition')
   
       # Create a collection
       print('Creating collection:' + collection_id)
       response = client.create_collection(CollectionId=collection_id)
       print('Collection ARN: ' + response['CollectionArn'])
       print('Status code: ' + str(response['StatusCode']))
       print('Done...')
   
   def main():
       collection_id = "collection-id"
       create_collection(collection_id)
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   L’exemple suivant crée une collection et affiche son Amazon Resource Name (ARN).

   Remplacez la valeur de `collectionId` par le nom de la collection que vous souhaitez créer.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class CreateCollection
   {
       public static void Example()
       {
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           String collectionId = "MyCollection";
           Console.WriteLine("Creating collection: " + collectionId);
   
           CreateCollectionRequest createCollectionRequest = new CreateCollectionRequest()
           {
               CollectionId = collectionId
           };
   
           CreateCollectionResponse createCollectionResponse = rekognitionClient.CreateCollection(createCollectionRequest);
           Console.WriteLine("CollectionArn : " + createCollectionResponse.CollectionArn);
           Console.WriteLine("Status code : " + createCollectionResponse.StatusCode);
   
       }
   }
   ```

------
#### [ Node.JS ]

   Dans l’exemple suivant, remplacez la valeur de `region` par le nom de la région associée à votre compte et remplacez la valeur de `collectionName` par le nom souhaité pour votre collection.

    Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import { CreateCollectionCommand} from  "@aws-sdk/client-rekognition";
   import  { RekognitionClient } from "@aws-sdk/client-rekognition";
   import {fromIni} from '@aws-sdk/credential-providers';
   
   // Set the AWS Region.
   const REGION = "region-name"; //e.g. "us-east-1"
   // Set the profile name
   const profileName = "profile-name"
   // Name the collection
   const collectionName = "collection-name"
   const rekogClient = new RekognitionClient({region: REGION, 
     credentials: fromIni({profile: profileName,}), 
   });
   
   const createCollection = async (collectionName) => {
       try {
          console.log(`Creating collection: ${collectionName}`)
          const data = await rekogClient.send(new CreateCollectionCommand({CollectionId: collectionName}));
          console.log("Collection ARN:")
          console.log(data.CollectionARN)
          console.log("Status Code:")
          console.log(String(data.StatusCode))
          console.log("Success.",  data);
          return data;
       } catch (err) {
         console.log("Error", err.stack);
       }
     };
   
    createCollection(collectionName)
   ```

------

## CreateCollection demande d'opération
<a name="createcollection-request"></a>

La valeur d’entrée de `CreationCollection` est le nom de la collection que vous souhaitez créer.

```
{
    "CollectionId": "MyCollection"
}
```

## CreateCollection réponse à l'opération
<a name="createcollection-operation-response"></a>

Amazon Rekognition crée la collection et renvoie l’Amazon Resource Name (ARN) de la collection que vous venez de créer.

```
{
   "CollectionArn": "aws:rekognition:us-east-1:acct-id:collection/examplecollection",
   "StatusCode": 200
}
```

# Baliser des collections
<a name="tag-collections"></a>

Vous pouvez identifier, organiser, rechercher et filtrer les collections Amazon Rekognition à l’aide de balises. Chaque balise est une étiquette composée d’une clé définie par l’utilisateur et d’une valeur.

Vous pouvez également utiliser des balises pour contrôler l’accès à une collection à l’aide de Identity and Access Management (IAM). Pour plus d'informations, consultez la section [Contrôle de l'accès aux AWS ressources à l'aide de balises de ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html).

**Topics**
+ [Ajouter des balises à une nouvelle collection](#add-tag-new-collection)
+ [Ajouter des balises à une collection existante](#add-tag-existing-collection)
+ [Répertorier les balises d’une collection](#list-tags-collection)
+ [Supprimer des balises d’une collection](#delete-tag-collection)

## Ajouter des balises à une nouvelle collection
<a name="add-tag-new-collection"></a>

Vous pouvez ajouter des balises à une collection lors de sa création à l’aide de l’opération `CreateCollection`. Spécifiez une ou plusieurs balises dans le paramètre d’entrée du tableau `Tags`.

------
#### [ AWS CLI ]

 Remplacez la valeur de `profile_name` par le nom de votre profil de développeur. 

```
aws rekognition create-collection --collection-id "collection-name" --tags "{"key1":"value1","key2":"value2"}" --profile profile-name 
```

Pour les appareils Windows :

```
aws rekognition create-collection --collection-id "collection-name" --tags "{\"key1\":\"value1\",\"key2\":\"value2\"}" --profile profile-name
```

------
#### [ Python ]

 Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

```
import boto3

def create_collection(collection_id):
    client = boto3.client('rekognition')

    # Create a collection
    print('Creating collection:' + collection_id)
    response = client.create_collection(CollectionId=collection_id)
    print('Collection ARN: ' + response['CollectionArn'])
    print('Status code: ' + str(response['StatusCode']))
    print('Done...')

def main():
    collection_id = 'NewCollectionName'
    create_collection(collection_id)

if __name__ == "__main__":
    main()
```

------

## Ajouter des balises à une collection existante
<a name="add-tag-existing-collection"></a>

Pour ajouter une ou plusieurs balises à une collection existante, utilisez l’opération `TagResource`. Spécifiez l’Amazon Resource Name (ARN) (`ResourceArn`) de la collection et les balises (`Tags`) que vous voulez ajouter. L’exemple suivant vous montre comment ajouter deux balises.

------
#### [ AWS CLI ]

 Remplacez la valeur de `profile_name` par le nom de votre profil de développeur. 

```
aws rekognition tag-resource --resource-arn collection-arn --tags "{"key1":"value1","key2":"value2"}" --profile profile-name 
```

 Pour les appareils Windows : 

```
aws rekognition tag-resource --resource-arn collection-arn --tags "{\"key1\":\"value1\",\"key2\":\"value2\"}" --profile profile-name
```

------
#### [ Python ]

 Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

```
# Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)

import boto3

def create_tag(collection_id):
    session = boto3.Session(profile_name='default')
    client = session.client('rekognition')
    response = client.tag_resource(ResourceArn=collection_id,
                                   Tags={
                                       "KeyName": "ValueName"
                                   })
    print(response)
    if "'HTTPStatusCode': 200" in str(response):
        print("Success!!")

def main():
    collection_arn = "collection-arn"
    create_tag(collection_arn)

if __name__ == "__main__":
    main()
```

------

**Note**  
Si vous ne connaissez pas le nom de la ressource Amazon de la collection, vous pouvez utiliser l’opération `DescribeCollection`.

## Répertorier les balises d’une collection
<a name="list-tags-collection"></a>

Pour répertorier les balises attachées à une collection, utilisez l’opération `ListTagsForResource` et spécifiez l’ARN de la collection (`ResourceArn`). La réponse est une carte des clés de balise et des valeurs attachées à la collection spécifiée.

------
#### [ AWS CLI ]

 Remplacez la valeur de `profile_name` par le nom de votre profil de développeur. 

```
aws rekognition list-tags-for-resource --resource-arn resource-arn --profile profile-name
```

------
#### [ Python ]

 Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

```
import boto3

def list_tags():
    client = boto3.client('rekognition')
    response = client.list_tags_for_resource(ResourceArn="arn:aws:rekognition:region-name:5498347593847598:collection/NewCollectionName")
    print(response)

def main():
    list_tags()

if __name__ == "__main__":
    main()
```

------

La sortie affiche une liste de balises attachées à la collection :

```
                {
    "Tags": {
        "Dept": "Engineering",
        "Name": "Ana Silva Carolina",
        "Role": "Developer"
    }
}
```

## Supprimer des balises d’une collection
<a name="delete-tag-collection"></a>

Pour supprimer une ou plusieurs balises d’une collection, utilisez l’opération `UntagResource`. Spécifiez l’ARN du modèle (`ResourceArn`) et les clés de balise (`Tag-Keys`) que vous souhaitez supprimer.

------
#### [ AWS CLI ]

Remplacez la valeur de `profile_name` par le nom de votre profil de développeur.

```
aws rekognition untag-resource --resource-arn resource-arn --profile profile-name --tag-keys "key1" "key2"
```

Vous pouvez aussi spécifier les clés de balise dans ce format :

```
--tag-keys key1,key2
```

------
#### [ Python ]

 Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

```
import boto3

def list_tags():
    client = boto3.client('rekognition')
    response = client.untag_resource(ResourceArn="arn:aws:rekognition:region-name:5498347593847598:collection/NewCollectionName", TagKeys=['KeyName'])
    print(response)

def main():
    list_tags()

if __name__ == "__main__":
    main()
```

------

# Créer une liste de collections
<a name="list-collection-procedure"></a>

Vous pouvez utiliser l'opération [ListCollections](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListCollections.html) pour dresser la liste des collections situées dans la région que vous utilisez.

Pour de plus amples informations, veuillez consulter [Gérer une collection](managing-face-collections.md#managing-collections). 



**Pour dresser la liste des collections (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `ListCollections`.

------
#### [ Java ]

   L’exemple suivant dresse la liste des collections présentes dans la région actuelle.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   
   import java.util.List;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.ListCollectionsRequest;
   import com.amazonaws.services.rekognition.model.ListCollectionsResult;
   
   public class ListCollections {
   
      public static void main(String[] args) throws Exception {
   
   
         AmazonRekognition amazonRekognition = AmazonRekognitionClientBuilder.defaultClient();
    
   
         System.out.println("Listing collections");
         int limit = 10;
         ListCollectionsResult listCollectionsResult = null;
         String paginationToken = null;
         do {
            if (listCollectionsResult != null) {
               paginationToken = listCollectionsResult.getNextToken();
            }
            ListCollectionsRequest listCollectionsRequest = new ListCollectionsRequest()
                    .withMaxResults(limit)
                    .withNextToken(paginationToken);
            listCollectionsResult=amazonRekognition.listCollections(listCollectionsRequest);
            
            List < String > collectionIds = listCollectionsResult.getCollectionIds();
            for (String resultId: collectionIds) {
               System.out.println(resultId);
            }
         } while (listCollectionsResult != null && listCollectionsResult.getNextToken() !=
            null);
        
      } 
   }
   ```

------
#### [ Java V2 ]

   Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet [ici](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/ListCollections.java).

   ```
   //snippet-start:[rekognition.java2.list_collections.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.ListCollectionsRequest;
   import software.amazon.awssdk.services.rekognition.model.ListCollectionsResponse;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import java.util.List;
   //snippet-end:[rekognition.java2.list_collections.import]
   
   /**
   * Before running this Java V2 code example, set up your development environment, including your credentials.
   *
   * For more information, see the following documentation topic:
   *
   * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
   */
   public class ListCollections {
   
    public static void main(String[] args) {
   
        Region region = Region.US_EAST_1;
        RekognitionClient rekClient = RekognitionClient.builder()
            .region(region)
            .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
            .build();
   
        System.out.println("Listing collections");
        listAllCollections(rekClient);
        rekClient.close();
    }
   
    // snippet-start:[rekognition.java2.list_collections.main]
    public static void listAllCollections(RekognitionClient rekClient) {
        try {
            ListCollectionsRequest listCollectionsRequest = ListCollectionsRequest.builder()
                .maxResults(10)
                .build();
   
            ListCollectionsResponse response = rekClient.listCollections(listCollectionsRequest);
            List<String> collectionIds = response.collectionIds();
            for (String resultId : collectionIds) {
                System.out.println(resultId);
            }
   
        } catch (RekognitionException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }
    // snippet-end:[rekognition.java2.list_collections.main]
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande affiche la sortie JSON pour l'opération `list-collections` CLI. Remplacez la valeur de `profile_name` par le nom de votre profil de développeur. 

   ```
   aws rekognition list-collections --profile profile-name
   ```

------
#### [ Python ]

   L’exemple suivant dresse la liste des collections présentes dans la région actuelle.

    Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   #Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def list_collections():
   
       max_results=2
       
       client=boto3.client('rekognition')
   
       #Display all the collections
       print('Displaying collections...')
       response=client.list_collections(MaxResults=max_results)
       collection_count=0
       done=False
       
       while done==False:
           collections=response['CollectionIds']
   
           for collection in collections:
               print (collection)
               collection_count+=1
           if 'NextToken' in response:
               nextToken=response['NextToken']
               response=client.list_collections(NextToken=nextToken,MaxResults=max_results)
               
           else:
               done=True
   
       return collection_count   
   
   def main():
   
       collection_count=list_collections()
       print("collections: " + str(collection_count))
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   L’exemple suivant dresse la liste des collections présentes dans la région actuelle.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class ListCollections
   {
       public static void Example()
       {
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           Console.WriteLine("Listing collections");
           int limit = 10;
   
           ListCollectionsResponse listCollectionsResponse = null;
           String paginationToken = null;
           do
           {
               if (listCollectionsResponse != null)
                   paginationToken = listCollectionsResponse.NextToken;
   
               ListCollectionsRequest listCollectionsRequest = new ListCollectionsRequest()
               {
                   MaxResults = limit,
                   NextToken = paginationToken
               };
   
               listCollectionsResponse = rekognitionClient.ListCollections(listCollectionsRequest);
   
               foreach (String resultId in listCollectionsResponse.CollectionIds)
                   Console.WriteLine(resultId);
           } while (listCollectionsResponse != null && listCollectionsResponse.NextToken != null);
       }
   }
   ```

------
#### [ Node.js ]

    Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import { ListCollectionsCommand } from  "@aws-sdk/client-rekognition";
   import  { RekognitionClient } from "@aws-sdk/client-rekognition";
   import {fromIni} from '@aws-sdk/credential-providers';
   
   // Set the AWS Region.
   const REGION = "region-name"; //e.g. "us-east-1"
   // Set the profile name
   const profileName = "profile-name"
   // Name the collection
   const rekogClient = new RekognitionClient({region: REGION, 
     credentials: fromIni({profile: profileName,}), 
   });
   
   const listCollection = async () => {
     var max_results = 10
     console.log("Displaying collections:")
     var response = await rekogClient.send(new ListCollectionsCommand({MaxResults: max_results}))
     var collection_count = 0
     var done = false
     while (done == false){
         var collections = response.CollectionIds
         collections.forEach(collection => {
             console.log(collection)
             collection_count += 1
         });
         return collection_count
     }
   }
   
   var collect_list = await listCollection()
   console.log(collect_list)
   ```

------

## ListCollections demande d'opération
<a name="listcollections-request"></a>

La valeur d’entrée de `ListCollections` est le nombre maximal de collections à renvoyer. 

```
{
    "MaxResults": 2
}
```

Si la réponse renvoie plus de collections que `MaxResults` n’en demande, vous recevez un jeton dont vous pouvez vous servir pour obtenir l’ensemble de résultats suivant dans un appel ultérieur à `ListCollections`. Par exemple :

```
{
    "NextToken": "MGYZLAHX1T5a....",
    "MaxResults": 2
}
```

## ListCollections réponse à l'opération
<a name="listcollections-operation-response"></a>

Amazon Rekognition renvoie un tableau de collections (`CollectionIds`). Un tableau distinct (`FaceModelVersions`) indique la version du modèle facial utilisé pour analyser les visages dans chaque collection. Par exemple, dans la réponse JSON suivante, la collection `MyCollection` analyse les visages à l’aide de la version 2.0 du modèle facial. La collection `AnotherCollection` utilise la version 3.0 du modèle facial. Pour de plus amples informations, veuillez consulter [Comprendre le versionnement des modèles](face-detection-model.md).

`NextToken` est le jeton utilisé pour obtenir l’ensemble de résultats suivant dans un appel ultérieur à `ListCollections`. 

```
{
    "CollectionIds": [
        "MyCollection",
        "AnotherCollection"
    ],
    "FaceModelVersions": [
        "2.0",
        "3.0"
    ],
    "NextToken": "MGYZLAHX1T5a...."
}
```

# Description d’une collection
<a name="describe-collection-procedure"></a>

Vous pouvez utiliser l'opération [DescribeCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeCollection.html) pour obtenir les informations suivantes sur une collection : 
+ Le nombre de visages indexés dans la collection.
+ La version du modèle utilisé avec la collection. Pour de plus amples informations, veuillez consulter [Comprendre le versionnement des modèles](face-detection-model.md).
+ L’Amazon Resource Name (ARN) de la collection.
+ La date et l’heure de création de la collection.

**Pour décrire une collection (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `DescribeCollection`.

------
#### [ Java ]

   Cet exemple décrit une collection.

   Remplacez la valeur `collectionId` par l’ID de la collection souhaitée.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package com.amazonaws.samples;
   
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.DescribeCollectionRequest;
   import com.amazonaws.services.rekognition.model.DescribeCollectionResult;
   
   
   public class DescribeCollection {
   
      public static void main(String[] args) throws Exception {
   
         String collectionId = "CollectionID";
         
         AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
               
         System.out.println("Describing collection: " +
            collectionId );
            
               
           DescribeCollectionRequest request = new DescribeCollectionRequest()
                       .withCollectionId(collectionId);
              
         DescribeCollectionResult describeCollectionResult = rekognitionClient.describeCollection(request); 
         System.out.println("Collection Arn : " +
            describeCollectionResult.getCollectionARN());
         System.out.println("Face count : " +
            describeCollectionResult.getFaceCount().toString());
         System.out.println("Face model version : " +
            describeCollectionResult.getFaceModelVersion());
         System.out.println("Created : " +
            describeCollectionResult.getCreationTimestamp().toString());
   
      } 
   
   }
   ```

------
#### [ Java V2 ]

   Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet [ici](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/DescribeCollection.java).

   ```
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.DescribeCollectionRequest;
   import software.amazon.awssdk.services.rekognition.model.DescribeCollectionResponse;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   //snippet-end:[rekognition.java2.describe_collection.import]
   
   /**
   * Before running this Java V2 code example, set up your development environment, including your credentials.
   *
   * For more information, see the following documentation topic:
   *
   * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
   */
   public class DescribeCollection {
   
    public static void main(String[] args) {
   
        final String usage = "\n" +
            "Usage: " +
            "   <collectionName>\n\n" +
            "Where:\n" +
            "   collectionName - The name of the Amazon Rekognition collection. \n\n";
   
        if (args.length != 1) {
            System.out.println(usage);
            System.exit(1);
        }
   
        String collectionName = args[0];
        Region region = Region.US_EAST_1;
        RekognitionClient rekClient = RekognitionClient.builder()
            .region(region)
            .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
            .build();
   
        describeColl(rekClient, collectionName);
        rekClient.close();
    }
   
    // snippet-start:[rekognition.java2.describe_collection.main]
    public static void describeColl(RekognitionClient rekClient, String collectionName) {
   
        try {
            DescribeCollectionRequest describeCollectionRequest = DescribeCollectionRequest.builder()
                .collectionId(collectionName)
                .build();
   
            DescribeCollectionResponse describeCollectionResponse = rekClient.describeCollection(describeCollectionRequest);
            System.out.println("Collection Arn : " + describeCollectionResponse.collectionARN());
            System.out.println("Created : " + describeCollectionResponse.creationTimestamp().toString());
   
        } catch(RekognitionException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }
    // snippet-end:[rekognition.java2.describe_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande affiche la sortie JSON pour l'opération `describe-collection` CLI. Remplacez la valeur de `collection-id` par l’ID de la collection souhaitée. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   aws rekognition describe-collection --collection-id collection-name --profile profile-name
   ```

------
#### [ Python ]

   Cet exemple décrit une collection.

   Remplacez la valeur `collection_id` par l’ID de la collection souhaitée. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   
   def describe_collection(collection_id):
   
       print('Attempting to describe collection ' + collection_id)
       
       session = boto3.Session(profile_name='default')
       client = session.client('rekognition')
       
       try:
       response = client.describe_collection(CollectionId=collection_id)
       print("Collection Arn: " + response['CollectionARN'])
       print("Face Count: " + str(response['FaceCount']))
       print("Face Model Version: " + response['FaceModelVersion'])
       print("Timestamp: " + str(response['CreationTimestamp']))
       
       except ClientError as e:
       if e.response['Error']['Code'] == 'ResourceNotFoundException':
       print('The collection ' + collection_id + ' was not found ')
       else:
       print('Error other than Not Found occurred: ' + e.response['Error']['Message'])
       print('Done...')
   
   def main():
       collection_id = 'collection-name'
       describe_collection(collection_id)
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Cet exemple décrit une collection.

   Remplacez la valeur `collectionId` par l’ID de la collection souhaitée.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class DescribeCollection
   {
       public static void Example()
       {
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           String collectionId = "CollectionID";
           Console.WriteLine("Describing collection: " + collectionId);
   
           DescribeCollectionRequest describeCollectionRequest = new DescribeCollectionRequest()
           {
               CollectionId = collectionId
           };
   
           DescribeCollectionResponse describeCollectionResponse = rekognitionClient.DescribeCollection(describeCollectionRequest);
           Console.WriteLine("Collection ARN: " + describeCollectionResponse.CollectionARN);
           Console.WriteLine("Face count: " + describeCollectionResponse.FaceCount);
           Console.WriteLine("Face model version: " + describeCollectionResponse.FaceModelVersion);
           Console.WriteLine("Created: " + describeCollectionResponse.CreationTimestamp);
       }
   }
   ```

------
#### [ Node.js ]

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import { DescribeCollectionCommand } from  "@aws-sdk/client-rekognition";
   import  { RekognitionClient } from "@aws-sdk/client-rekognition";
   import {fromIni} from '@aws-sdk/credential-providers';
   
   // Set the AWS Region.
   const REGION = "region-name"; //e.g. "us-east-1"
   // Set the profile name
   const profileName = "profile-name"
   // Name the collection
   const rekogClient = new RekognitionClient({region: REGION, 
     credentials: fromIni({profile: profileName,}), 
   });
   
   // Name the collection
   const collection_name = "collection-name"
   
   const describeCollection = async (collectionName) => {
     try {
        console.log(`Attempting to describe collection named - ${collectionName}`)
        var response = await rekogClient.send(new DescribeCollectionCommand({CollectionId: collectionName}))
        console.log('Collection Arn:')
        console.log(response.CollectionARN)
        console.log('Face Count:')
        console.log(response.FaceCount)
        console.log('Face Model Version:')
        console.log(response.FaceModelVersion)
        console.log('Timestamp:')
        console.log(response.CreationTimestamp)
        return response; // For unit tests.
     } catch (err) {
       console.log("Error", err.stack);
     }
   };
   
   describeCollection(collection_name)
   ```

------

## DescribeCollection demande d'opération
<a name="describe-collection-request"></a>

La valeur d’entrée de `DescribeCollection` est l’ID de la collection souhaitée, comme l’illustre l’exemple JSON suivant. 

```
{
    "CollectionId": "MyCollection"
}
```

## DescribeCollection réponse à l'opération
<a name="describe-collection-operation-response"></a>

La réponse inclut : 
+ Le nombre de visages indexés dans la collection, `FaceCount`.
+ La version du modèle utilisé avec la collection, `FaceModelVersion`. Pour de plus amples informations, veuillez consulter [Comprendre le versionnement des modèles](face-detection-model.md).
+ L’Amazon Resource Name (ARN) de la collection, `CollectionARN`. 
+ La date et l’heure de création de la collection, `CreationTimestamp`. La valeur de `CreationTimestamp` est le nombre de millisecondes depuis l’heure d’époque Unix jusqu’à la création de la collection. L’heure d’époque Unix est 00:00:00 UTC (temps universel coordonné), jeudi 1er janvier 1970. Pour plus d’informations, consultez [Heure Unix](https://en.wikipedia.org/wiki/Unix_time).

```
{
    "CollectionARN": "arn:aws:rekognition:us-east-1:nnnnnnnnnnnn:collection/MyCollection",
    "CreationTimestamp": 1.533422155042E9,
    "FaceCount": 200,
    "UserCount" : 20,
    "FaceModelVersion": "1.0"
}
```

# Suppression d’une collection
<a name="delete-collection-procedure"></a>

Vous pouvez utiliser l'opération [DeleteCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteCollection.html) pour supprimer une collection.

Pour de plus amples informations, veuillez consulter [Gérer une collection](managing-face-collections.md#managing-collections). 



**Pour supprimer une collection (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `DeleteCollection`.

------
#### [ Java ]

   Cet exemple supprime une collection.

   Remplacez la valeur de `collectionId` par la collection que vous souhaitez supprimer.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.DeleteCollectionRequest;
   import com.amazonaws.services.rekognition.model.DeleteCollectionResult;
   
   
   public class DeleteCollection {
   
      public static void main(String[] args) throws Exception {
   
         AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
         String collectionId = "MyCollection";
   
         System.out.println("Deleting collections");
         
         DeleteCollectionRequest request = new DeleteCollectionRequest()
            .withCollectionId(collectionId);
         DeleteCollectionResult deleteCollectionResult = rekognitionClient.deleteCollection(request);        
     
         System.out.println(collectionId + ": " + deleteCollectionResult.getStatusCode()
            .toString());
   
      } 
   
   }
   ```

------
#### [ Java V2 ]

   Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet [ici](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/DeleteCollection.java).

   ```
   // snippet-start:[rekognition.java2.delete_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.DeleteCollectionRequest;
   import software.amazon.awssdk.services.rekognition.model.DeleteCollectionResponse;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   // snippet-end:[rekognition.java2.delete_collection.import]
   
   /**
    * Before running this Java V2 code example, set up your development environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class DeleteCollection {
   
       public static void main(String[] args) {
   
           final String usage = "\n" +
               "Usage: " +
               "   <collectionId> \n\n" +
               "Where:\n" +
               "   collectionId - The id of the collection to delete. \n\n";
   
           if (args.length != 1) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String collectionId = args[0];
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
               .region(region)
               .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
               .build();
   
           System.out.println("Deleting collection: " + collectionId);
           deleteMyCollection(rekClient, collectionId);
           rekClient.close();
       }
   
       // snippet-start:[rekognition.java2.delete_collection.main]
       public static void deleteMyCollection(RekognitionClient rekClient,String collectionId ) {
   
           try {
               DeleteCollectionRequest deleteCollectionRequest = DeleteCollectionRequest.builder()
                   .collectionId(collectionId)
                   .build();
   
               DeleteCollectionResponse deleteCollectionResponse = rekClient.deleteCollection(deleteCollectionRequest);
               System.out.println(collectionId + ": " + deleteCollectionResponse.statusCode().toString());
   
           } catch(RekognitionException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
       // snippet-end:[rekognition.java2.delete_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande affiche la sortie JSON pour l'opération `delete-collection` CLI. Remplacez la valeur de `collection-id` par le nom de la collection que vous souhaitez supprimer. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur.

   ```
   aws rekognition delete-collection --collection-id collection-name --profile profile-name
   ```

------
#### [ Python ]

   Cet exemple supprime une collection.

   Remplacez la valeur de `collection_id` par la collection que vous souhaitez supprimer. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   
   def delete_collection(collection_id):
   
       print('Attempting to delete collection ' + collection_id)
       session = boto3.Session(profile_name='default')
       client = session.client('rekognition')
   
       status_code = 0
   
       try:
           response = client.delete_collection(CollectionId=collection_id)
           status_code = response['StatusCode']
   
       except ClientError as e:
           if e.response['Error']['Code'] == 'ResourceNotFoundException':
               print('The collection ' + collection_id + ' was not found ')
           else:
               print('Error other than Not Found occurred: ' + e.response['Error']['Message'])
           status_code = e.response['ResponseMetadata']['HTTPStatusCode']
       return (status_code)
   
   def main():
   
       collection_id = 'collection-name'
       status_code = delete_collection(collection_id)
       print('Status code: ' + str(status_code))
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Cet exemple supprime une collection.

   Remplacez la valeur de `collectionId` par la collection que vous souhaitez supprimer.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class DeleteCollection
   {
       public static void Example()
       {
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           String collectionId = "MyCollection";
           Console.WriteLine("Deleting collection: " + collectionId);
   
           DeleteCollectionRequest deleteCollectionRequest = new DeleteCollectionRequest()
           {
               CollectionId = collectionId
           };
   
           DeleteCollectionResponse deleteCollectionResponse = rekognitionClient.DeleteCollection(deleteCollectionRequest);
           Console.WriteLine(collectionId + ": " + deleteCollectionResponse.StatusCode);
       }
   }
   ```

------
#### [ Node.js ]

    Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import { DeleteCollectionCommand } from  "@aws-sdk/client-rekognition";
   import  { RekognitionClient } from "@aws-sdk/client-rekognition";
   import {fromIni} from '@aws-sdk/credential-providers';
   
   // Set the AWS Region.
   const REGION = "region-name"; //e.g. "us-east-1"
   // Set the profile name
   const profileName = "profile-name"
   // Name the collection
   const rekogClient = new RekognitionClient({region: REGION, 
     credentials: fromIni({profile: profileName,}), 
   });
   
   // Name the collection
   const collection_name = "collection-name"
   
   const deleteCollection = async (collectionName) => {
       try {
          console.log(`Attempting to delete collection named - ${collectionName}`)
          var response = await rekogClient.send(new DeleteCollectionCommand({CollectionId: collectionName}))
          var status_code = response.StatusCode
          if (status_code = 200){
              console.log("Collection successfully deleted.")
          }
          return response; // For unit tests.
       } catch (err) {
         console.log("Error", err.stack);
       }
     };
   
   deleteCollection(collection_name)
   ```

------

## DeleteCollection demande d'opération
<a name="deletecollection-request"></a>

La valeur d’entrée de `DeleteCollection` est l’ID de la collection à supprimer, comme l’illustre l’exemple JSON suivant. 

```
{
    "CollectionId": "MyCollection"
}
```

## DeleteCollection réponse à l'opération
<a name="deletecollection-operation-response"></a>

La réponse `DeleteCollection` contient un code de statut HTTP qui indique la réussite ou l’échec de l’opération. `200` est renvoyée si la collection est supprimée avec succès.

```
{"StatusCode":200}
```

# Ajout de visages à une collection
<a name="add-faces-to-collection-procedure"></a>

Vous pouvez utiliser l'opération [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html) pour détecter les visages sur une image et les ajouter à une collection. Pour chaque visage détecté, Amazon Rekognition extrait les caractéristiques faciales et stocke ces informations dans une base de données. Par ailleurs, la commande stocke les métadonnées de chaque visage détecté dans la collection de visages spécifiée. Amazon Rekognition ne stocke pas les octets d’image réels.

Pour en savoir plus sur la fourniture de visages adaptés pour l’indexation, consultez [Recommandations pour les images d’entrée de comparaison faciale](recommendations-facial-input-images.md).

Pour chaque visage, l’opération `IndexFaces` conserve les informations suivantes :
+ **Caractéristiques faciales multidimensionnelles** : `IndexFaces` utilise l’analyse du visage pour extraire des informations multidimensionnelles sur les traits du visage et stocke ces informations dans la collection de visages. Vous ne pouvez pas accéder directement à ces informations. Cependant, Amazon Rekognition utilise ces informations lors de la recherche de correspondances dans une collection de visages.

   
+ **Métadonnées** : les métadonnées de chaque visage incluent un cadre de référence, un niveau de confiance (que le cadre contient un visage), IDs attribué par Amazon Rekognition (identifiant du visage et identifiant de l'image), et un identifiant d'image externe (si vous l'avez fourni) dans la demande. Ces informations vous sont renvoyées en réponse à l’appel de l’API `IndexFaces`. Pour obtenir un exemple, consultez l’élément `face` dans l’exemple de réponse suivant.

  Le service renvoie les métadonnées en réponse aux appels d’API suivants :

   
  +  `[ListFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListFaces.html)` 
  + Opérations de recherche de visages – Les réponses pour [SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html) et [SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html) renvoient le degré de fiabilité de la correspondance de chaque visage, ainsi que les métadonnées du visage rapproché.

Le nombre de visages indexés par `IndexFaces` dépend de la version du modèle de détection de visages qui est associée à la collection d’entrée. Pour de plus amples informations, veuillez consulter [Comprendre le versionnement des modèles](face-detection-model.md). 

Les informations sur les visages indexés sont renvoyées dans un tableau d'objets [FaceRecord](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_FaceRecord.html).

Vous pouvez associer des visages indexés à l’image sur laquelle ils ont été détectés. Par exemple, vous pouvez gérer un index côté client composé d’images et de visages présents sur celles-ci. Pour associer des visages à une image, spécifiez l’identifiant de l’image dans le paramètre de la demande `ExternalImageId`. L’ID de l’image peut être le nom de fichier ou un autre ID que vous créez.

En plus des informations précédentes que l’API conserve dans la collection de visages, l’API renvoie également des détails faciaux qui ne sont pas gardés dans la collection. (Consultez l’élément `faceDetail` dans l’exemple de réponse suivant). 

**Note**  
`DetectFaces` renvoie les mêmes informations, ce qui signifie que vous n’avez pas besoin d’appeler `DetectFaces` et `IndexFaces` pour la même image. 

## Filtrage des visages
<a name="index-faces-filtering"></a>

L' IndexFaces opération permet de filtrer les visages indexés à partir d'une image. Avec `IndexFaces`, vous pouvez spécifier un nombre maximal de visages à indexer, ou vous pouvez choisir d’indexer uniquement les visages détectés avec une haute qualité. 

Vous pouvez spécifier le nombre maximal de visages indexés par `IndexFaces` à l’aide du paramètre d’entrée `MaxFaces`. Cela s’avère utile lorsque vous souhaitez indexer les plus grands visages d’une image et pas les plus petits, comme ceux des personnes debout en arrière-plan.

Par défaut, choisit une barre de qualité `IndexFaces` utilisée pour filtrer les visages. Vous pouvez utiliser le paramètre d’entrée `QualityFilter` pour définir explicitement la barre de qualité. Les valeurs sont :
+ `AUTO` : Amazon Rekognition choisit la barre de qualité utilisée pour filtrer les visages (valeur par défaut).
+ `LOW` : tous les visages, à l’exception des visages de qualité inférieure, sont indexés.
+ `MEDIUM`
+ `HIGH` : seuls les visages de qualité supérieure sont indexés.
+ `NONE` : aucun visage n’est filtré en fonction de la qualité.

`IndexFaces` filtre les visages pour les raisons suivantes :
+ Le visage est trop petit par rapport aux dimensions de l’image.
+ Le visage est trop flou.
+ L’image est trop sombre.
+ Le visage prend un pose extrême.
+ Le visage n’est pas suffisamment détaillé pour la recherche de visage.

**Note**  
Pour utiliser le filtrage de qualité, vous avez besoin d’une collection associée à la version 3, ou ultérieure, du modèle facial. Pour obtenir la version du modèle facial associé à une collection, appelez [DescribeCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeCollection.html). 

Les informations sur les visages qui ne sont pas indexés par `IndexFaces` sont renvoyées dans un tableau d'objets [UnindexedFace](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_UnindexedFace.html). Le tableau `Reasons` contient une liste des raisons pour lesquelles un visage n’est pas indexé. Par exemple, la valeur `EXCEEDS_MAX_FACES` correspond à un visage qui n’est pas indexé, car le nombre de visages spécifié par `MaxFaces` a déjà été détecté. 

Pour de plus amples informations, veuillez consulter [Gestion des visages dans une collection](managing-face-collections.md#collections-index-faces). 



**Pour ajouter des visages à une collection (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec `AmazonRekognitionFullAccess` et autorisations `AmazonS3ReadOnlyAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Chargez une image (contenant un ou plusieurs visages) dans votre compartiment Amazon S3. 

   Pour en savoir plus, consultez [Téléchargement d'objets dans Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UploadingObjectsintoAmazonS3.html) dans le *Guide de l’utilisateur Amazon Simple Storage Service*.

1. Utilisez les exemples suivants pour appeler l’opération `IndexFaces`.

------
#### [ Java ]

   Cet exemple affiche les identificateurs de visage pour les visages ajoutés à la collection.

   Remplacez la valeur de `collectionId` par le nom de la collection à laquelle vous souhaitez ajouter un visage. Remplacez la valeur de `bucket` et de `photo` par le nom du compartiment Amazon S3 et le nom de l’image utilisés à l’étape 2. Le paramètre `.withMaxFaces(1)` limite le nombre de visages indexés à 1. Supprimez ou modifiez sa valeur en fonction de vos besoins.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.FaceRecord;
   import com.amazonaws.services.rekognition.model.Image;
   import com.amazonaws.services.rekognition.model.IndexFacesRequest;
   import com.amazonaws.services.rekognition.model.IndexFacesResult;
   import com.amazonaws.services.rekognition.model.QualityFilter;
   import com.amazonaws.services.rekognition.model.S3Object;
   import com.amazonaws.services.rekognition.model.UnindexedFace;
   import java.util.List;
   
   public class AddFacesToCollection {
       public static final String collectionId = "MyCollection";
       public static final String bucket = "bucket";
       public static final String photo = "input.jpg";
   
       public static void main(String[] args) throws Exception {
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           Image image = new Image()
                   .withS3Object(new S3Object()
                   .withBucket(bucket)
                   .withName(photo));
           
           IndexFacesRequest indexFacesRequest = new IndexFacesRequest()
                   .withImage(image)
                   .withQualityFilter(QualityFilter.AUTO)
                   .withMaxFaces(1)
                   .withCollectionId(collectionId)
                   .withExternalImageId(photo)
                   .withDetectionAttributes("DEFAULT");
   
           IndexFacesResult indexFacesResult = rekognitionClient.indexFaces(indexFacesRequest);
           
           System.out.println("Results for " + photo);
           System.out.println("Faces indexed:");
           List<FaceRecord> faceRecords = indexFacesResult.getFaceRecords();
           for (FaceRecord faceRecord : faceRecords) {
               System.out.println("  Face ID: " + faceRecord.getFace().getFaceId());
               System.out.println("  Location:" + faceRecord.getFaceDetail().getBoundingBox().toString());
           }
           
           List<UnindexedFace> unindexedFaces = indexFacesResult.getUnindexedFaces();
           System.out.println("Faces not indexed:");
           for (UnindexedFace unindexedFace : unindexedFaces) {
               System.out.println("  Location:" + unindexedFace.getFaceDetail().getBoundingBox().toString());
               System.out.println("  Reasons:");
               for (String reason : unindexedFace.getReasons()) {
                   System.out.println("   " + reason);
               }
           }
       }
   }
   ```

------
#### [ Java V2 ]

   Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet [ici](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/AddFacesToCollection.java).

   ```
   //snippet-start:[rekognition.java2.add_faces_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.core.SdkBytes;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.IndexFacesResponse;
   import software.amazon.awssdk.services.rekognition.model.IndexFacesRequest;
   import software.amazon.awssdk.services.rekognition.model.Image;
   import software.amazon.awssdk.services.rekognition.model.QualityFilter;
   import software.amazon.awssdk.services.rekognition.model.Attribute;
   import software.amazon.awssdk.services.rekognition.model.FaceRecord;
   import software.amazon.awssdk.services.rekognition.model.UnindexedFace;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import software.amazon.awssdk.services.rekognition.model.Reason;
   import java.io.FileInputStream;
   import java.io.FileNotFoundException;
   import java.io.InputStream;
   import java.util.List;
   //snippet-end:[rekognition.java2.add_faces_collection.import]
   
   /**
   * Before running this Java V2 code example, set up your development environment, including your credentials.
   *
   * For more information, see the following documentation topic:
   *
   * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
   */
   public class AddFacesToCollection {
   
    public static void main(String[] args) {
   
        final String usage = "\n" +
            "Usage: " +
            "    <collectionId> <sourceImage>\n\n" +
            "Where:\n" +
            "    collectionName - The name of the collection.\n" +
            "    sourceImage - The path to the image (for example, C:\\AWS\\pic1.png). \n\n";
   
        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }
   
        String collectionId = args[0];
        String sourceImage = args[1];
        Region region = Region.US_EAST_1;
        RekognitionClient rekClient = RekognitionClient.builder()
            .region(region)
            .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
            .build();
   
        addToCollection(rekClient, collectionId, sourceImage);
        rekClient.close();
    }
   
    // snippet-start:[rekognition.java2.add_faces_collection.main]
    public static void addToCollection(RekognitionClient rekClient, String collectionId, String sourceImage) {
   
        try {
            InputStream sourceStream = new FileInputStream(sourceImage);
            SdkBytes sourceBytes = SdkBytes.fromInputStream(sourceStream);
            Image souImage = Image.builder()
                .bytes(sourceBytes)
                .build();
   
            IndexFacesRequest facesRequest = IndexFacesRequest.builder()
                .collectionId(collectionId)
                .image(souImage)
                .maxFaces(1)
                .qualityFilter(QualityFilter.AUTO)
                .detectionAttributes(Attribute.DEFAULT)
                .build();
   
            IndexFacesResponse facesResponse = rekClient.indexFaces(facesRequest);
            System.out.println("Results for the image");
            System.out.println("\n Faces indexed:");
            List<FaceRecord> faceRecords = facesResponse.faceRecords();
            for (FaceRecord faceRecord : faceRecords) {
                System.out.println("  Face ID: " + faceRecord.face().faceId());
                System.out.println("  Location:" + faceRecord.faceDetail().boundingBox().toString());
            }
   
            List<UnindexedFace> unindexedFaces = facesResponse.unindexedFaces();
            System.out.println("Faces not indexed:");
            for (UnindexedFace unindexedFace : unindexedFaces) {
                System.out.println("  Location:" + unindexedFace.faceDetail().boundingBox().toString());
                System.out.println("  Reasons:");
                for (Reason reason : unindexedFace.reasons()) {
                    System.out.println("Reason:  " + reason);
                }
            }
   
        } catch (RekognitionException | FileNotFoundException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }
    // snippet-end:[rekognition.java2.add_faces_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande affiche la sortie JSON pour l'opération `index-faces` CLI. 

   Remplacez la valeur de `collection-id` par le nom de la collection dans laquelle vous souhaitez stocker le visage. Remplacez la valeur de `Bucket` et de `Name` par le compartiment Amazon S3, et le fichier image utilisé à l’étape 2. Le paramètre `max-faces` limite le nombre de visages indexés à 1. Supprimez ou modifiez sa valeur en fonction de vos besoins. Remplacez la valeur de `profile_name` dans la ligne qui crée la session Rekognition par le nom de votre profil de développeur.

   ```
   aws rekognition index-faces --image '{"S3Object":{"Bucket":"bucket-name","Name":"file-name"}}' --collection-id "collection-id" \
                                   --max-faces 1 --quality-filter "AUTO" --detection-attributes "ALL" \ 
                                   --external-image-id "example-image.jpg" --profile profile-name
   ```

    Si vous accédez à la CLI sur un périphérique Windows, utilisez des guillemets doubles au lieu de guillemets simples et évitez les guillemets doubles internes par une barre oblique inverse (c’est-à-dire \$1) pour corriger les erreurs d’analyse que vous pourriez rencontrer. Par exemple, consultez ce qui suit : 

   ```
   aws rekognition index-faces --image "{\"S3Object\":{\"Bucket\":\"bucket-name\",\"Name\":\"image-name\"}}" \
   --collection-id "collection-id" --max-faces 1 --quality-filter "AUTO" --detection-attributes "ALL" \ 
   --external-image-id "example-image.jpg" --profile profile-name
   ```

------
#### [ Python ]

   Cet exemple affiche les identificateurs de visage pour les visages ajoutés à la collection.

   Remplacez la valeur de `collectionId` par le nom de la collection à laquelle vous souhaitez ajouter un visage. Remplacez la valeur de `bucket` et de `photo` par le nom du compartiment Amazon S3 et le nom de l’image utilisés à l’étape 2. Le paramètre d’entrée `MaxFaces` limite le nombre de visages indexés à 1. Supprimez ou modifiez sa valeur en fonction de vos besoins. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def add_faces_to_collection(bucket, photo, collection_id):
   
       session = boto3.Session(profile_name='profile-name')
       client = session.client('rekognition')
   
       response = client.index_faces(CollectionId=collection_id,
                                     Image={'S3Object': {'Bucket': bucket, 'Name': photo}},
                                     ExternalImageId=photo,
                                     MaxFaces=1,
                                     QualityFilter="AUTO",
                                     DetectionAttributes=['ALL'])
   
       print('Results for ' + photo)
       print('Faces indexed:')
       for faceRecord in response['FaceRecords']:
           print('  Face ID: ' + faceRecord['Face']['FaceId'])
           print('  Location: {}'.format(faceRecord['Face']['BoundingBox']))
   
       print('Faces not indexed:')
       for unindexedFace in response['UnindexedFaces']:
           print(' Location: {}'.format(unindexedFace['FaceDetail']['BoundingBox']))
           print(' Reasons:')
           for reason in unindexedFace['Reasons']:
               print('   ' + reason)
       return len(response['FaceRecords'])
   
   def main():
       bucket = 'amzn-s3-demo-bucket'
       collection_id = 'collection-id'
       photo = 'photo-name'
   
       indexed_faces_count = add_faces_to_collection(bucket, photo, collection_id)
       print("Faces indexed count: " + str(indexed_faces_count))
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Cet exemple affiche les identificateurs de visage pour les visages ajoutés à la collection.

   Remplacez la valeur de `collectionId` par le nom de la collection à laquelle vous souhaitez ajouter un visage. Remplacez la valeur de `bucket` et de `photo` par le nom du compartiment Amazon S3 et le nom de l’image utilisés à l’étape 2. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using System.Collections.Generic;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class AddFaces
   {
       public static void Example()
       {
           String collectionId = "MyCollection";
           String bucket = "amzn-s3-demo-bucket";
           String photo = "input.jpg";
   
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           Image image = new Image()
           {
               S3Object = new S3Object()
               {
                   Bucket = bucket,
                   Name = photo
               }
           };
   
           IndexFacesRequest indexFacesRequest = new IndexFacesRequest()
           {
               Image = image,
               CollectionId = collectionId,
               ExternalImageId = photo,
               DetectionAttributes = new List<String>(){ "ALL" }
           };
   
           IndexFacesResponse indexFacesResponse = rekognitionClient.IndexFaces(indexFacesRequest);
   
           Console.WriteLine(photo + " added");
           foreach (FaceRecord faceRecord in indexFacesResponse.FaceRecords)
               Console.WriteLine("Face detected: Faceid is " +
                  faceRecord.Face.FaceId);
       }
   }
   ```

------

## IndexFaces demande d'opération
<a name="indexfaces-request"></a>

La valeur d’entrée de `IndexFaces` est l’image à indexer et la collection à laquelle ajouter le ou les visages. 

```
{
    "CollectionId": "MyCollection",
    "Image": {
        "S3Object": {
            "Bucket": "bucket",
            "Name": "input.jpg"
        }
    },
    "ExternalImageId": "input.jpg",
    "DetectionAttributes": [
        "DEFAULT"
    ],
    "MaxFaces": 1,
    "QualityFilter": "AUTO"
}
```

## IndexFaces réponse à l'opération
<a name="indexfaces-operation-response"></a>

`IndexFaces` renvoie des informations sur les visages détectés dans l’image. Par exemple, la réponse JSON ci-dessous comprend les attributs de détection par défaut pour les visages détectés dans l’image d’entrée. L’exemple montre également des visages non indexés parce que la valeur du paramètre d’entrée `MaxFaces` a été dépassée : le tableau `Reasons` contient *EXCEEDS\$1MAX\$1FACES*. Si un visage n’est pas indexé pour des raisons de qualité, `Reasons` contient des valeurs telles que *LOW\$1SHARPNESS* ou *LOW\$1BRIGHTNESS*. Pour de plus amples informations, veuillez consulter [UnindexedFace](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_UnindexedFace.html).

```
{
    "FaceModelVersion": "3.0",
    "FaceRecords": [
        {
            "Face": {
                "BoundingBox": {
                    "Height": 0.3247932195663452,
                    "Left": 0.5055555701255798,
                    "Top": 0.2743072211742401,
                    "Width": 0.21444444358348846
                },
                "Confidence": 99.99998474121094,
                "ExternalImageId": "input.jpg",
                "FaceId": "b86e2392-9da1-459b-af68-49118dc16f87",
                "ImageId": "09f43d92-02b6-5cea-8fbd-9f187db2050d"
            },
            "FaceDetail": {
                "BoundingBox": {
                    "Height": 0.3247932195663452,
                    "Left": 0.5055555701255798,
                    "Top": 0.2743072211742401,
                    "Width": 0.21444444358348846
                },
                "Confidence": 99.99998474121094,
                "Landmarks": [
                    {
                        "Type": "eyeLeft",
                        "X": 0.5751981735229492,
                        "Y": 0.4010535478591919
                    },
                    {
                        "Type": "eyeRight",
                        "X": 0.6511467099189758,
                        "Y": 0.4017036259174347
                    },
                    {
                        "Type": "nose",
                        "X": 0.6314528584480286,
                        "Y": 0.4710812568664551
                    },
                    {
                        "Type": "mouthLeft",
                        "X": 0.5879443287849426,
                        "Y": 0.5171778798103333
                    },
                    {
                        "Type": "mouthRight",
                        "X": 0.6444502472877502,
                        "Y": 0.5164633989334106
                    }
                ],
                "Pose": {
                    "Pitch": -10.313642501831055,
                    "Roll": -1.0316886901855469,
                    "Yaw": 18.079818725585938
                },
                "Quality": {
                    "Brightness": 71.2919921875,
                    "Sharpness": 78.74752044677734
                }
            }
        }
    ],
    "OrientationCorrection": "",
    "UnindexedFaces": [
        {
            "FaceDetail": {
                "BoundingBox": {
                    "Height": 0.1329464465379715,
                    "Left": 0.5611110925674438,
                    "Top": 0.6832437515258789,
                    "Width": 0.08777777850627899
                },
                "Confidence": 92.37225341796875,
                "Landmarks": [
                    {
                        "Type": "eyeLeft",
                        "X": 0.5796897411346436,
                        "Y": 0.7452847957611084
                    },
                    {
                        "Type": "eyeRight",
                        "X": 0.6078574657440186,
                        "Y": 0.742687463760376
                    },
                    {
                        "Type": "nose",
                        "X": 0.597953200340271,
                        "Y": 0.7620673179626465
                    },
                    {
                        "Type": "mouthLeft",
                        "X": 0.5884202122688293,
                        "Y": 0.7920381426811218
                    },
                    {
                        "Type": "mouthRight",
                        "X": 0.60627681016922,
                        "Y": 0.7919750809669495
                    }
                ],
                "Pose": {
                    "Pitch": 15.658954620361328,
                    "Roll": -4.583454608917236,
                    "Yaw": 10.558992385864258
                },
                "Quality": {
                    "Brightness": 42.54612350463867,
                    "Sharpness": 86.93206024169922
                }
            },
            "Reasons": [
                "EXCEEDS_MAX_FACES"
            ]
        }
    ]
}
```

Pour obtenir toutes les informations relatives aux visages, spécifiez « ALL » pour le paramètre `DetectionAttributes` de la demande. Ainsi, dans l’exemple de réponse suivant, notez la présence d’informations supplémentaires dans l’élément `faceDetail`, qui ne sont pas conservées sur le serveur :
+ 25 repères faciaux (par rapport à seulement cinq dans l’exemple précédent)
+ Dix attributs faciaux (lunettes, barbe, occlusion, direction du regard, etc.) 
+ Emotions (voir l’élément `emotion`)

L’élément `face` fournit des métadonnées qui sont conservées sur le serveur.

 `FaceModelVersion` est la version du modèle facial associé à la collection. Pour de plus amples informations, veuillez consulter [Comprendre le versionnement des modèles](face-detection-model.md).

`OrientationCorrection` est l’orientation estimée de l’image. Les informations de correction de l’orientation ne sont pas renvoyées si vous utilisez une version du modèle de détection des visages supérieure à la version 3. Pour de plus amples informations, veuillez consulter [Obtention de l’orientation d’une image et des coordonnées du cadre de délimitation](images-orientation.md).

L’exemple de réponse suivant montre le JSON renvoyé lorsque vous spécifiez ["ALL"] :

```
{
    "FaceModelVersion": "3.0",
    "FaceRecords": [
        {
            "Face": {
                "BoundingBox": {
                    "Height": 0.06333333253860474,
                    "Left": 0.17185185849666595,
                    "Top": 0.7366666793823242,
                    "Width": 0.11061728745698929
                },
                "Confidence": 99.99999237060547,
                "ExternalImageId": "input.jpg",
                "FaceId": "578e2e1b-d0b0-493c-aa39-ba476a421a34",
                "ImageId": "9ba38e68-35b6-5509-9d2e-fcffa75d1653"
            },
            "FaceDetail": {
                "AgeRange": {
                    "High": 25,
                    "Low": 15
                },
                "Beard": {
                    "Confidence": 99.98077392578125,
                    "Value": false
                },
                "BoundingBox": {
                    "Height": 0.06333333253860474,
                    "Left": 0.17185185849666595,
                    "Top": 0.7366666793823242,
                    "Width": 0.11061728745698929
                },
                "Confidence": 99.99999237060547,
                "Emotions": [
                    {
                        "Confidence": 95.40877532958984,
                        "Type": "HAPPY"
                    },
                    {
                        "Confidence": 6.6088080406188965,
                        "Type": "CALM"
                    },
                    {
                        "Confidence": 0.7385611534118652,
                        "Type": "SAD"
                    }
                ],
                 "EyeDirection": {
                    "yaw": 16.299732,
                    "pitch": -6.407457,
                    "confidence": 99.968704
                              }
                "Eyeglasses": {
                    "Confidence": 99.96795654296875,
                    "Value": false
                },
                "EyesOpen": {
                    "Confidence": 64.0671157836914,
                    "Value": true
                },
                "Gender": {
                    "Confidence": 100,
                    "Value": "Female"
                },
                "Landmarks": [
                    {
                        "Type": "eyeLeft",
                        "X": 0.21361233294010162,
                        "Y": 0.757106363773346
                    },
                    {
                        "Type": "eyeRight",
                        "X": 0.2518567442893982,
                        "Y": 0.7599404454231262
                    },
                    {
                        "Type": "nose",
                        "X": 0.2262365221977234,
                        "Y": 0.7711842060089111
                    },
                    {
                        "Type": "mouthLeft",
                        "X": 0.2050037682056427,
                        "Y": 0.7801263332366943
                    },
                    {
                        "Type": "mouthRight",
                        "X": 0.2430567592382431,
                        "Y": 0.7836716771125793
                    },
                    {
                        "Type": "leftPupil",
                        "X": 0.2161938101053238,
                        "Y": 0.756662905216217
                    },
                    {
                        "Type": "rightPupil",
                        "X": 0.2523181438446045,
                        "Y": 0.7603650689125061
                    },
                    {
                        "Type": "leftEyeBrowLeft",
                        "X": 0.20066319406032562,
                        "Y": 0.7501518130302429
                    },
                    {
                        "Type": "leftEyeBrowUp",
                        "X": 0.2130996286869049,
                        "Y": 0.7480520606040955
                    },
                    {
                        "Type": "leftEyeBrowRight",
                        "X": 0.22584207355976105,
                        "Y": 0.7504606246948242
                    },
                    {
                        "Type": "rightEyeBrowLeft",
                        "X": 0.24509544670581818,
                        "Y": 0.7526801824569702
                    },
                    {
                        "Type": "rightEyeBrowUp",
                        "X": 0.2582615911960602,
                        "Y": 0.7516844868659973
                    },
                    {
                        "Type": "rightEyeBrowRight",
                        "X": 0.26881539821624756,
                        "Y": 0.7554477453231812
                    },
                    {
                        "Type": "leftEyeLeft",
                        "X": 0.20624476671218872,
                        "Y": 0.7568746209144592
                    },
                    {
                        "Type": "leftEyeRight",
                        "X": 0.22105035185813904,
                        "Y": 0.7582521438598633
                    },
                    {
                        "Type": "leftEyeUp",
                        "X": 0.21401576697826385,
                        "Y": 0.7553104162216187
                    },
                    {
                        "Type": "leftEyeDown",
                        "X": 0.21317370235919952,
                        "Y": 0.7584449648857117
                    },
                    {
                        "Type": "rightEyeLeft",
                        "X": 0.24393919110298157,
                        "Y": 0.7600628137588501
                    },
                    {
                        "Type": "rightEyeRight",
                        "X": 0.2598416209220886,
                        "Y": 0.7605880498886108
                    },
                    {
                        "Type": "rightEyeUp",
                        "X": 0.2519053518772125,
                        "Y": 0.7582084536552429
                    },
                    {
                        "Type": "rightEyeDown",
                        "X": 0.25177454948425293,
                        "Y": 0.7612871527671814
                    },
                    {
                        "Type": "noseLeft",
                        "X": 0.2185886949300766,
                        "Y": 0.774715781211853
                    },
                    {
                        "Type": "noseRight",
                        "X": 0.23328955471515656,
                        "Y": 0.7759330868721008
                    },
                    {
                        "Type": "mouthUp",
                        "X": 0.22446128726005554,
                        "Y": 0.7805567383766174
                    },
                    {
                        "Type": "mouthDown",
                        "X": 0.22087252140045166,
                        "Y": 0.7891407608985901
                    }
                ],
                "MouthOpen": {
                    "Confidence": 95.87068939208984,
                    "Value": false
                },
                "Mustache": {
                    "Confidence": 99.9828109741211,
                    "Value": false
                },
                "Pose": {
                    "Pitch": -0.9409101605415344,
                    "Roll": 7.233824253082275,
                    "Yaw": -2.3602254390716553
                },
                "Quality": {
                    "Brightness": 32.01998519897461,
                    "Sharpness": 93.67259216308594
                },
                "Smile": {
                    "Confidence": 86.7142105102539,
                    "Value": true
                },
                "Sunglasses": {
                    "Confidence": 97.38925170898438,
                    "Value": false
                }
            }
        }
    ],
    "OrientationCorrection": "ROTATE_0"
    "UnindexedFaces": []
}
```

# Répertorier les visages et les utilisateurs associés dans une collection
<a name="list-faces-in-collection-procedure"></a>

Vous pouvez utiliser cette [ListFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListFaces.html)opération pour répertorier les visages et leurs utilisateurs associés dans une collection.

Pour de plus amples informations, veuillez consulter [Gestion des visages dans une collection](managing-face-collections.md#collections-index-faces). 



**Pour dresser la liste des visages présents dans une collection (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `ListFaces`.

------
#### [ Java ]

   Cet exemple affiche la liste des visages présents dans une collection.

   Remplacez la valeur de `collectionId` par la collection souhaitée.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.Face;
   import com.amazonaws.services.rekognition.model.ListFacesRequest;
   import com.amazonaws.services.rekognition.model.ListFacesResult;
   import java.util.List;
   import com.fasterxml.jackson.databind.ObjectMapper;
   
   
   
   public class ListFacesInCollection {
       public static final String collectionId = "MyCollection";
   
      public static void main(String[] args) throws Exception {
         
         AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
         ObjectMapper objectMapper = new ObjectMapper();
   
         ListFacesResult listFacesResult = null;
         System.out.println("Faces in collection " + collectionId);
   
         String paginationToken = null;
         do {
            if (listFacesResult != null) {
               paginationToken = listFacesResult.getNextToken();
            }
            
            ListFacesRequest listFacesRequest = new ListFacesRequest()
                    .withCollectionId(collectionId)
                    .withMaxResults(1)
                    .withNextToken(paginationToken);
           
            listFacesResult =  rekognitionClient.listFaces(listFacesRequest);
            List < Face > faces = listFacesResult.getFaces();
            for (Face face: faces) {
               System.out.println(objectMapper.writerWithDefaultPrettyPrinter()
                  .writeValueAsString(face));
            }
         } while (listFacesResult != null && listFacesResult.getNextToken() !=
            null);
      }
   
   }
   ```

------
#### [ Java V2 ]

   Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet [ici](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/ListFacesInCollection.java).

   ```
   // snippet-start:[rekognition.java2.list_faces_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.Face;
   import software.amazon.awssdk.services.rekognition.model.ListFacesRequest;
   import software.amazon.awssdk.services.rekognition.model.ListFacesResponse;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import java.util.List;
   // snippet-end:[rekognition.java2.list_faces_collection.import]
   
   /**
    * Before running this Java V2 code example, set up your development environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class ListFacesInCollection {
   
       public static void main(String[] args) {
   
           final String usage = "\n" +
               "Usage: " +
               "   <collectionId>\n\n" +
               "Where:\n" +
               "   collectionId - The name of the collection. \n\n";
   
           if (args.length < 1) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String collectionId = args[0];
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
               .region(region)
               .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
               .build();
   
           System.out.println("Faces in collection " + collectionId);
           listFacesCollection(rekClient, collectionId) ;
           rekClient.close();
       }
   
       // snippet-start:[rekognition.java2.list_faces_collection.main]
       public static void listFacesCollection(RekognitionClient rekClient, String collectionId ) {
           try {
               ListFacesRequest facesRequest = ListFacesRequest.builder()
                   .collectionId(collectionId)
                   .maxResults(10)
                   .build();
   
               ListFacesResponse facesResponse = rekClient.listFaces(facesRequest);
               List<Face> faces = facesResponse.faces();
               for (Face face: faces) {
                   System.out.println("Confidence level there is a face: "+face.confidence());
                   System.out.println("The face Id value is "+face.faceId());
               }
   
           } catch (RekognitionException e) {
               System.out.println(e.getMessage());
               System.exit(1);
            }
         }
       // snippet-end:[rekognition.java2.list_faces_collection.main]
     }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande affiche la sortie JSON pour l'opération `list-faces` CLI. Remplacez la valeur de `collection-id` par le nom de la collection dont vous souhaitez dresser la liste. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur.

   ```
   aws rekognition list-faces --collection-id "collection-id"  --profile profile-name
   ```

------
#### [ Python ]

   Cet exemple affiche la liste des visages présents dans une collection.

   Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def list_faces_in_collection(collection_id):
       maxResults = 2
       faces_count = 0
       tokens = True
   
       session = boto3.Session(profile_name='profile-name')
       client = session.client('rekognition')
       response = client.list_faces(CollectionId=collection_id,
                                    MaxResults=maxResults)
   
       print('Faces in collection ' + collection_id)
   
       while tokens:
   
           faces = response['Faces']
   
           for face in faces:
               print(face)
               faces_count += 1
           if 'NextToken' in response:
               nextToken = response['NextToken']
               response = client.list_faces(CollectionId=collection_id,
                                            NextToken=nextToken, MaxResults=maxResults)
           else:
               tokens = False
       return faces_count
   
   def main():
       collection_id = 'collection-id'
       faces_count = list_faces_in_collection(collection_id)
       print("faces count: " + str(faces_count))
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Cet exemple affiche la liste des visages présents dans une collection.

   Remplacez la valeur de `collectionId` par la collection souhaitée.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class ListFaces
   {
       public static void Example()
       {
           String collectionId = "MyCollection";
   
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           ListFacesResponse listFacesResponse = null;
           Console.WriteLine("Faces in collection " + collectionId);
   
           String paginationToken = null;
           do
           {
               if (listFacesResponse != null)
                   paginationToken = listFacesResponse.NextToken;
   
               ListFacesRequest listFacesRequest = new ListFacesRequest()
               {
                   CollectionId = collectionId,
                   MaxResults = 1,
                   NextToken = paginationToken
               };
   
               listFacesResponse = rekognitionClient.ListFaces(listFacesRequest);
               foreach(Face face in listFacesResponse.Faces)
                   Console.WriteLine(face.FaceId);
           } while (listFacesResponse != null && !String.IsNullOrEmpty(listFacesResponse.NextToken));
       }
   }
   ```

------

## ListFaces demande d'opération
<a name="listfaces-request"></a>

L'entrée `ListFaces` est l'ID de la collection pour laquelle vous souhaitez répertorier les visages. `MaxResults`est le nombre maximum de faces à renvoyer. ListFaces prend également en compte une liste de visages IDs pour filtrer les résultats, et un ID utilisateur fourni pour répertorier uniquement les visages associés à l'utilisateur donné.

```
{
    "CollectionId": "MyCollection",
    "MaxResults": 1
}
```

Si la réponse renvoie plus de visages que `MaxResults` n’en demande, vous recevez un jeton dont vous pouvez vous servir pour obtenir l’ensemble de résultats suivant dans un appel ultérieur à `ListFaces`. Par exemple :

```
{
    "CollectionId": "MyCollection",
    "NextToken": "sm+5ythT3aeEVIR4WA....",
    "MaxResults": 1
}
```

## ListFaces réponse à l'opération
<a name="listfaces-response"></a>

La réponse de `ListFaces` correspond à des informations sur les métadonnées faciales stockées dans la collection spécifiée.
+ **FaceModelVersion**— La version du modèle de visage associée à la collection. Pour de plus amples informations, veuillez consulter [Comprendre le versionnement des modèles](face-detection-model.md).
+  **Faces** : informations sur les visages présents dans la collection. Il s'agit notamment d'informations concernant [BoundingBox](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_BoundingBox.html), la fiabilité, les identificateurs d'images et l'ID de visage. Pour de plus amples informations, consultez [Face](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_Face.html). 
+  **NextToken**— Le jeton utilisé pour obtenir la prochaine série de résultats. 

```
{
    "FaceModelVersion": "6.0", 
    "Faces": [  
        {
            "Confidence": 99.76940155029297, 
            "IndexFacesModelVersion": "6.0", 
            "UserId": "demoUser2", 
            "ImageId": "56a0ca74-1c83-39dd-b363-051a64168a65", 
            "BoundingBox": {
                "Width": 0.03177810087800026, 
                "Top": 0.36568498611450195, 
                "Left": 0.3453829884529114, 
                "Height": 0.056759100407361984
            }, 
            "FaceId": "c92265d4-5f9c-43af-a58e-12be0ce02bc3"
        },
        {
            "BoundingBox": {
                "Width": 0.03254450112581253, 
                "Top": 0.6080359816551208, 
                "Left": 0.5160620212554932, 
                "Height": 0.06347999721765518
            }, 
            "IndexFacesModelVersion": "6.0", 
            "FaceId": "851cb847-dccc-4fea-9309-9f4805967855", 
            "Confidence": 99.94369506835938, 
            "ImageId": "a8aed589-ceec-35f7-9c04-82e0b546b024"
        },
        {
            "BoundingBox": {
                "Width": 0.03094629943370819, 
                "Top": 0.4218429923057556, 
                "Left": 0.6513839960098267, 
                "Height": 0.05266290158033371
            }, 
            "IndexFacesModelVersion": "6.0", 
            "FaceId": "c0eb3b65-24a0-41e1-b23a-1908b1aaeac1", 
            "Confidence": 99.82969665527344, 
            "ImageId": "56a0ca74-1c83-39dd-b363-051a64168a65"
        }
    ]
}
```

# Suppression de visages d’une collection
<a name="delete-faces-procedure"></a>

Vous pouvez utiliser l'opération [DeleteFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteFaces.html) pour supprimer des visages d'une collection. Pour de plus amples informations, veuillez consulter [Gestion des visages dans une collection](managing-face-collections.md#collections-index-faces). 



**Pour supprimer des visages d’une collection**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `DeleteFaces`.

------
#### [ Java ]

   Dans cet exemple, seul un visage est supprimé d’une collection.

   Remplacez la valeur de `collectionId` par la collection qui contient le visage que vous souhaitez supprimer. Remplacez la valeur de `faces` par l’ID du visage que vous souhaitez supprimer. Pour supprimer plusieurs faces, ajoutez-les IDs au `faces` tableau.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.DeleteFacesRequest;
   import com.amazonaws.services.rekognition.model.DeleteFacesResult;
   
   import java.util.List;
   
   
   public class DeleteFacesFromCollection {
      public static final String collectionId = "MyCollection";
      public static final String faces[] = {"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"};
   
      public static void main(String[] args) throws Exception {
         
         AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
        
         
         DeleteFacesRequest deleteFacesRequest = new DeleteFacesRequest()
                 .withCollectionId(collectionId)
                 .withFaceIds(faces);
        
         DeleteFacesResult deleteFacesResult=rekognitionClient.deleteFaces(deleteFacesRequest);
         
        
         List < String > faceRecords = deleteFacesResult.getDeletedFaces();
         System.out.println(Integer.toString(faceRecords.size()) + " face(s) deleted:");
         for (String face: faceRecords) {
            System.out.println("FaceID: " + face);
         }
      }
   }
   ```

------
#### [ Java V2 ]

   Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet [ici](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/DeleteFacesFromCollection.java).

   ```
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.DeleteFacesRequest;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   // snippet-end:[rekognition.java2.delete_faces_collection.import]
   
   /**
    * Before running this Java V2 code example, set up your development environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class DeleteFacesFromCollection {
       public static void main(String[] args) {
   
           final String usage = "\n" +
               "Usage: " +
               "   <collectionId> <faceId> \n\n" +
               "Where:\n" +
               "   collectionId - The id of the collection from which faces are deleted. \n\n" +
               "   faceId - The id of the face to delete. \n\n";
   
           if (args.length != 1) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String collectionId = args[0];
           String faceId = args[1];
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
               .region(region)
               .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
               .build();
   
           System.out.println("Deleting collection: " + collectionId);
           deleteFacesCollection(rekClient, collectionId, faceId);
           rekClient.close();
       }
   
       // snippet-start:[rekognition.java2.delete_faces_collection.main]
       public static void deleteFacesCollection(RekognitionClient rekClient,
                                                String collectionId,
                                                String faceId) {
   
           try {
               DeleteFacesRequest deleteFacesRequest = DeleteFacesRequest.builder()
                   .collectionId(collectionId)
                   .faceIds(faceId)
                   .build();
   
               rekClient.deleteFaces(deleteFacesRequest);
               System.out.println("The face was deleted from the collection.");
   
           } catch(RekognitionException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
       // snippet-end:[rekognition.java2.delete_faces_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande affiche la sortie JSON pour l'opération `delete-faces` CLI. Remplacez la valeur de `collection-id` par le nom de la collection qui contient le visage que vous souhaitez supprimer. Remplacez la valeur `face-ids` de par un tableau de visages IDs que vous souhaitez supprimer. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur.

   ```
   aws rekognition delete-faces --collection-id "collection-id" --face-ids "faceid" --profile profile-name
   ```

------
#### [ Python ]

   Dans cet exemple, seul un visage est supprimé d’une collection.

   Remplacez la valeur de `collectionId` par la collection qui contient le visage que vous souhaitez supprimer. Remplacez la valeur de `faces` par l’ID du visage que vous souhaitez supprimer. Pour supprimer plusieurs faces, ajoutez-les IDs au `faces` tableau. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur.

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def delete_faces_from_collection(collection_id, faces):
   
       session = boto3.Session(profile_name='profile-name')
       client = session.client('rekognition')
       response = client.delete_faces(CollectionId=collection_id,
                                      FaceIds=faces)
   
       print(str(len(response['DeletedFaces'])) + ' faces deleted:')
       for faceId in response['DeletedFaces']:
           print(faceId)
       return len(response['DeletedFaces'])
   
   
   def main():
       collection_id = 'collection-id'
       faces = []
       faces.append("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
   
       faces_count = delete_faces_from_collection(collection_id, faces)
       print("deleted faces count: " + str(faces_count))
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Dans cet exemple, seul un visage est supprimé d’une collection.

   Remplacez la valeur de `collectionId` par la collection qui contient le visage que vous souhaitez supprimer. Remplacez la valeur de `faces` par l’ID du visage que vous souhaitez supprimer. Pour supprimer plusieurs visages, ajoutez-les IDs à la `faces` liste.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using System.Collections.Generic;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class DeleteFaces
   {
       public static void Example()
       {
           String collectionId = "MyCollection";
           List<String> faces = new List<String>() { "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" };
   
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           DeleteFacesRequest deleteFacesRequest = new DeleteFacesRequest()
           {
               CollectionId = collectionId,
               FaceIds = faces
           };
   
           DeleteFacesResponse deleteFacesResponse = rekognitionClient.DeleteFaces(deleteFacesRequest);
           foreach (String face in deleteFacesResponse.DeletedFaces)
               Console.WriteLine("FaceID: " + face);
       }
   }
   ```

------

## DeleteFaces demande d'opération
<a name="deletefaces-request"></a>

L'entrée `DeleteFaces` est l'ID de la collection qui contient les visages et un tableau de visages IDs pour les visages à supprimer. 

```
{
    "CollectionId": "MyCollection",
    "FaceIds": [
        "daf29cac-f910-41e9-851f-6eeb0e08f973"
    ]
}
```

## DeleteFaces réponse à l'opération
<a name="deletefaces-operation-response"></a>

La `DeleteFaces` réponse contient un tableau de visages IDs pour les visages qui ont été supprimés.

```
{
    "DeletedFaces": [
        "daf29cac-f910-41e9-851f-6eeb0e08f973"
    ]
}
```

 Si le visage IDs indiqué dans la saisie est actuellement associé à un utilisateur, il sera renvoyé pour UnsuccessfulFaceDeletions des raisons valables. 

```
{
   "DeletedFaces": [
        "daf29cac-f910-41e9-851f-6eeb0e08f973"
    ],
     "UnsuccessfulFaceDeletions" : [
        {
           "FaceId" : "0b683aed-a0f1-48b2-9b5e-139e9cc2a757",
           "UserId" : "demoUser1",
           "Reason" : ["ASSOCIATED_TO_AN_EXISTING_USER"]
        }
     ]
}
```

# Création d’un utilisateur
<a name="create-user"></a>

Vous pouvez utiliser cette [CreateUser](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateUser.html)opération pour créer un nouvel utilisateur dans une collection à l'aide d'un ID utilisateur unique que vous fournissez. Vous pouvez ensuite associer plusieurs visages à l’utilisateur nouvellement créé.

**Pour créer un utilisateur (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un compte utilisateur IAM; avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `CreateUser`.

------
#### [ Java ]

   Cet exemple de code Java crée un utilisateur. 

   ```
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.CreateUserRequest;
   import com.amazonaws.services.rekognition.model.CreateUserResult;
   
   
   public class CreateUser {
   
       public static void main(String[] args) throws Exception {
   
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           //Replace collectionId and userId with the name of the user that you want to create in that target collection.
   
           String collectionId = "MyCollection";
           String userId = "demoUser";
           System.out.println("Creating new user: " +
                   userId);
   
           CreateUserRequest request = new CreateUserRequest()
                   .withCollectionId(collectionId)
                   .withUserId(userId);
   
           rekognitionClient.createUser(request);
       }
   
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande crée un utilisateur à l'aide de l'opération `create-user` CLI. 

   ```
   aws rekognition create-user --user-id user-id --collection-id collection-name --region region-name
   --client-request-token request-token
   ```

------
#### [ Python ]

   Cet exemple de code Python crée un utilisateur. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   import logging
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def create_user(collection_id, user_id):
       """
       Creates a new User within a collection specified by CollectionId. 
       Takes UserId as a parameter, which is a user provided ID which 
       should be unique within the collection.
   
       :param collection_id: The ID of the collection where the indexed faces will be stored at.
       :param user_id: ID for the UserID to be created. This ID needs to be unique within the collection.
       
       :return: The indexFaces response
       """
       try:
           logger.info(f'Creating user: {collection_id}, {user_id}')
           client.create_user(
               CollectionId=collection_id,
               UserId=user_id
           )
       except ClientError:
           logger.exception(f'Failed to create user with given user id: {user_id}')
           raise
   
   def main():
       collection_id = "collection-id"
       user_id = "user-id"
       create_user(collection_id, user_id)
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ Go ]

   Cet exemple de code Go utilise le AWS Go SDK V2 et crée un utilisateur. 

   ```
   package main
   
   import (
   	"context"
   	"fmt"
   	"log"
   
   	"github.com/aws/aws-sdk-go-v2/aws"
   	"github.com/aws/aws-sdk-go-v2/config"
   	"github.com/aws/aws-sdk-go-v2/service/rekognition"
   )
   
   func main() {
   	// Load the AWS SDK configuration
   	cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"))
   	if err != nil {
   		log.Fatalf("Failed to load configuration: %v", err)
   	}
   
   	// Create a Rekognition client
   	client := rekognition.NewFromConfig(cfg)
   
   	// Set up the input parameters
   	input := &rekognition.CreateUserInput{
   		CollectionId: aws.String("my-new-collection"), // Replace with your collection ID
   		UserId:       aws.String("user12345678910"),   // Replace with desired user ID
   	}
   
   	// Call the CreateUser operation
   	result, err := client.CreateUser(context.TODO(), input)
   	if err != nil {
   		log.Fatalf("Failed to create user: %v", err)
   	}
   
   	// Print out the results
   	fmt.Printf("User created successfully:\n")
   
   }
   ```

------

# Suppression d’un utilisateur
<a name="delete-user"></a>

Vous pouvez utiliser cette [DeleteUser](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteUser.html)opération pour supprimer un utilisateur d'une collection, en fonction de l'userID fourni. Notez que toutes les faces associées à l’UserID sont dissociées de l’UserID avant que l’UserID spécifié ne soit supprimé.

**Pour supprimer un utilisateur (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un compte utilisateur IAM; avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `DeleteUser`.

------
#### [ Java ]

   Cet exemple de code Java crée un utilisateur. 

   ```
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.DeleteUserRequest;
   import com.amazonaws.services.rekognition.model.DeleteUserResult;
   
   
   public class DeleteUser {
   
       public static void main(String[] args) throws Exception {
   
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           //Replace collectionId and userId with the name of the user that you want to delete from that target collection.
   
           String collectionId = "MyCollection";
           String userId = "demoUser";
           System.out.println("Deleting existing user: " +
                   userId);
   
           DeleteUserRequest request = new DeleteUserRequest()
                   .withCollectionId(collectionId)
                   .withUserId(userId);
   
           rekognitionClient.deleteUser(request);
       }
   
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande supprime un utilisateur à l'aide de l'opération `create-user` CLI. 

   ```
   aws rekognition delete-user --collection-id MyCollection 
   --user-id user-id --collection-id collection-name --region region-name
   ```

------
#### [ Python ]

   Cet exemple de code Python crée un utilisateur. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   import logging
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def delete_user(collection_id, user_id):
           """
           Delete the user from the given collection
   
           :param collection_id: The ID of the collection where user is stored.
           :param user_id: The ID of the user in the collection to delete.
           """
           logger.info(f'Deleting user: {collection_id}, {user_id}')
           try:
               client.delete_user(
                   CollectionId=collection_id,
                   UserId=user_id
               )
           except ClientError:
               logger.exception(f'Failed to delete user with given user id: {user_id}')
               raise
   
   def main():
       collection_id = "collection-id"
       user_id = "user-id"
       delete_user(collection_id, user_id)
   
   if __name__ == "__main__":
       main()
   ```

------

# Associer des visages à un utilisateur
<a name="associate-faces"></a>

Vous pouvez utiliser cette [AssociateFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_AssociatingFaces.html)opération pour associer plusieurs visages individuels à un seul utilisateur. Pour associer un visage à un utilisateur, vous devez d’abord créer une collection et un utilisateur. Notez que les vecteurs de visage doivent résider dans la même collection que le vecteur utilisateur.

**Pour associer des visages (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `AssociateFaces`.

------
#### [ Java ]

   Cet exemple de code Java associe un visage à un utilisateur.

   ```
   import java.util.Arrays;
   import java.util.List;
   
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.AssociateFacesRequest;
   import com.amazonaws.services.rekognition.model.AssociateFacesResult;
   
   
   public class AssociateFaces {
   
       public static void main(String[] args) throws Exception {
   
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           /* Replace the below configurations to allow you successfully run the example
   
              @collectionId: The collection where user and faces are stored
              @userId: The user which faces will get associated to
              @faceIds: The list of face IDs that will get associated to the given user
              @userMatchThreshold: Minimum User match confidence required for the face to
                                  be associated with a User that has at least one faceID already associated
            */
   
           String collectionId = "MyCollection";
           String userId = "demoUser";
           String faceId1 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
           String faceId2 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
           List<String> faceIds = Arrays.asList(faceid1,faceid2);
   
           float userMatchThreshold = 0f;
           System.out.println("Associating faces to the existing user: " +
                   userId);
   
           AssociateFacesRequest request = new AssociateFacesRequest()
                   .withCollectionId(collectionId)
                   .withUserId(userId)
                   .withFaceIds(faceIds)
                   .withUserMatchThreshold(userMatchThreshold);
   
           AssociateFacesResult result = rekognitionClient.associateFaces(request);
   
           System.out.println("Successful face associations: " + result.getAssociatedFaces().size());
           System.out.println("Unsuccessful face associations: " + result.getUnsuccessfulFaceAssociations().size());
       }
   
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande associe un visage à un utilisateur à l'aide de l'opération `associate-faces` CLI.

   ```
   aws rekognition associate-faces --user-id user-id --face-ids face-id-1 face-id-2
   --collection-id collection-name 
   --region region-name
   ```

------
#### [ Python ]

   Cet exemple de code Python associe un visage à un utilisateur. 

   ```
   from botocore.exceptions import ClientError
   import boto3
   import logging
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def associate_faces(collection_id, user_id, face_ids):
       """
       Associate stored faces within collection to the given user
   
       :param collection_id: The ID of the collection where user and faces are stored.
       :param user_id: The ID of the user that we want to associate faces to
       :param face_ids: The list of face IDs to be associated to the given user
   
       :return: response of AssociateFaces API
       """
       logger.info(f'Associating faces to user: {user_id}, {face_ids}')
       try:
           response = client.associate_faces(
               CollectionId=collection_id,
               UserId=user_id,
               FaceIds=face_ids
           )
           print(f'- associated {len(response["AssociatedFaces"])} faces')
       except ClientError:
           logger.exception("Failed to associate faces to the given user")
           raise
       else:
           print(response)
           return response
   
   def main():
       face_ids = ["faceId1", "faceId2"]
       collection_id = "collection-id"
       user_id = "user-id"
       associate_faces(collection_id, user_id, face_ids)
   
   if __name__ == "__main__":
       main()
   ```

------

## AssociateFaces réponse à l'opération
<a name="associatefaces-operation-response"></a>

La réponse pour `AssociateFaces` inclut le `UserStatus`, qui est le statut de la demande de dissociation, ainsi qu’une liste des personnes `FaceIds` à associer. Une liste de `UnsuccessfulFaceAssociations` est également renvoyée. Après avoir soumis une demande à `AssociateFaces`, l’opération peut prendre environ une minute. 

Pour cette raison, le UserStatus est renvoyé, qui peut prendre les valeurs suivantes : 
+ CRÉÉ : indique que « l’utilisateur » a été créé avec succès et qu’aucun visage ne lui est associé actuellement. « Utilisateur » sera dans cet état avant qu'un appel « AssociateFaces » réussi ne soit effectué.
+ MISE À JOUR - Indique que « l'utilisateur » est mis à jour pour refléter les nouveaux associated/disassociated visages et qu'il deviendra ACTIF dans quelques secondes. Les résultats de recherche peuvent contenir « Utilisateur » dans cet état et les clients peuvent choisir de l’ignorer dans les résultats renvoyés.
+ ACTIF : indique que le nom **« utilisateur **»**** est mis à jour pour refléter tous les associated/disassociated visages et qu'il est dans un état consultable.

```
{
    "UnsuccessfulFaceAssociations": [
        {
            "Reasons": [
                "LOW_MATCH_CONFIDENCE"
            ], 
            "FaceId": "f5817d37-94f6-0000-bfee-1a2b3c4d5e6f", 
            "Confidence": 0.9375374913215637
        }, 
        {
            "Reasons": [
                "ASSOCIATED_TO_A_DIFFERENT_IDENTITY"
            ], 
            "FaceId": "851cb847-dccc-1111-bfee-1a2b3c4d5e6f", 
            "UserId": "demoUser2"
        }
    ], 
    "UserStatus": "UPDATING", 
    "AssociatedFaces": [
        {
            "FaceId": "35ebbb41-7f67-2222-bfee-1a2b3c4d5e6f"
        }
    ]
}
```

# Dissocier des visages d’un utilisateur
<a name="disassociate-faces"></a>

Vous pouvez utiliser cette [DisassociateFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DisassociateFaces.html)opération pour supprimer l'association entre un identifiant utilisateur et un identifiant facial.

**Pour associer des visages (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `DisassociateFaces`.

------
#### [ Java ]

   Cet exemple Java supprime l’association entre un FaceID et un UserID avec l’opération `DisassociateFaces`.

   ```
   import java.util.Arrays;
   import java.util.List;
   
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.DisassociateFacesRequest;
   import com.amazonaws.services.rekognition.model.DisassociateFacesResult;
   
   
   public class DisassociateFaces {
   
       public static void main(String[] args) throws Exception {
   
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           /* Replace the below configurations to allow you successfully run the example
   
              @collectionId: The collection where user and faces are stored
              @userId: The user which faces will get disassociated from
              @faceIds: The list of face IDs that will get disassociated from the given user
            */
   
           String collectionId = "MyCollection";
           String userId = "demoUser";
           String faceId1 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
           String faceId2 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
           List<String> faceIds = Arrays.asList(faceid1,faceid2);
   
           System.out.println("Disassociating faces from existing user: " +
                   userId);
   
           DisassociateFacesRequest request = new DisassociateFacesRequest()
                   .withCollectionId(collectionId)
                   .withUserId(userId)
                   .withFaceIds(faceIds)
   
           DisassociateFacesResult result = rekognitionClient.disassociateFaces(request);
   
           System.out.println("Successful face disassociations: " + result.getDisassociatedFaces().size());
           System.out.println("Unsuccessful face disassociations: " + result.getUnsuccessfulFaceDisassociations().size());
       }
   
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande supprime l'association entre un FaceID et un UserID avec `DisassociateFaces` l'opération.

   ```
   aws rekognition disassociate-faces --face-ids list-of-face-ids
   --user-id user-id --collection-id collection-name --region region-name
   ```

------
#### [ Python ]

   L’exemple suivant supprime l’association entre un FaceID et un UserID avec l’opération `DisassociateFaces`.

   ```
   from botocore.exceptions import ClientError
   import boto3
   import logging
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def disassociate_faces(collection_id, user_id, face_ids):
       """
       Disassociate stored faces within collection to the given user
   
       :param collection_id: The ID of the collection where user and faces are stored.
       :param user_id: The ID of the user that we want to disassociate faces from
       :param face_ids: The list of face IDs to be disassociated from the given user
   
       :return: response of AssociateFaces API
       """
       logger.info(f'Disssociating faces from user: {user_id}, {face_ids}')
       try:
           response = client.disassociate_faces(
               CollectionId=collection_id,
               UserId=user_id,
               FaceIds=face_ids
           )
           print(f'- disassociated {len(response["DisassociatedFaces"])} faces')
       except ClientError:
           logger.exception("Failed to disassociate faces from the given user")
           raise
       else:
           print(response)
           return response
   
   def main():
       face_ids = ["faceId1", "faceId2"]
       collection_id = "collection-id"
       user_id = "user-id"
       disassociate_faces(collection_id, user_id, face_ids)
   
   if __name__ == "__main__":
       main()
   ```

------

## DisassociateFaces réponse à l'opération
<a name="disassociate-faces-response"></a>

La réponse pour `DisassociateFaces` inclut le `UserStatus`, qui est le statut de la demande de dissociation, ainsi qu’une liste des `FaceIds` à dissocier. Une liste de `UnsuccessfulFaceDisassociations` est également renvoyée. Après avoir soumis une demande à DisassociateFaces, l'opération peut prendre environ une minute. Pour cette raison, le UserStatus est renvoyé, qui peut prendre les valeurs suivantes : 
+ CRÉÉ : indique que « l’utilisateur » a été créé avec succès et qu’aucun visage ne lui est associé actuellement. « Utilisateur » sera dans cet état avant qu'un appel « AssociateFaces » réussi ne soit effectué.
+ MISE À JOUR - Indique que « l'utilisateur » est mis à jour pour refléter les nouveaux associated/disassociated visages et qu'il deviendra ACTIF dans quelques secondes. Les résultats de recherche peuvent contenir « Utilisateur » dans cet état et les clients peuvent choisir de l’ignorer dans les résultats renvoyés.
+ ACTIF : indique que le nom **« utilisateur **»**** est mis à jour pour refléter tous les associated/disassociated visages et qu'il est dans un état consultable.

```
{
    "UserStatus": "UPDATING", 
    "DisassociatedFaces": [
        {
            "FaceId": "c92265d4-5f9c-43af-a58e-12be0ce02bc3"
        }
    ], 
    "UnsuccessfulFaceDisassociations": [
        {
            "Reasons": [
                "ASSOCIATED_TO_A_DIFFERENT_IDENTITY"
            ], 
            "FaceId": "f5817d37-94f6-4335-bfee-6cf79a3d806e", 
            "UserId": "demoUser1"
        }
    ]
}
```

# Création d’une liste de visages d’une collection
<a name="list-users"></a>

Vous pouvez utiliser l'[ListUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListUsers.html)opération pour répertorier UserIds et le UserStatus. Pour voir le visage IDs associé à un userID, utilisez l'[ListFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListFaces.html)opération.

**Pour répertorier les utilisateurs (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `ListUsers`.

------
#### [ Java ]

   Cet exemple Java répertorie les utilisateurs d’une collection utilisant l’opération `ListUsers`.

   ```
   import java.util.List;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.ListUsersRequest;
   import com.amazonaws.services.rekognition.model.ListUsersResult;
   import com.amazonaws.services.rekognition.model.User;
   
   public class ListUsers {
   
       public static void main(String[] args) throws Exception {
   
   
           AmazonRekognition amazonRekognition = AmazonRekognitionClientBuilder.defaultClient();
   
   
           System.out.println("Listing users");
           int limit = 10;
           ListUsersResult listUsersResult = null;
           String paginationToken = null;
           do {
               if (listUsersResult != null) {
                   paginationToken = listUsersResult.getNextToken();
               }
               ListUsersRequest request = new ListUsersRequest()
                       .withCollectionId(collectionId)
                       .withMaxResults(limit)
                       .withNextToken(paginationToken);
               listUsersResult = amazonRekognition.listUsers(request);
   
               List<User> users = listUsersResult.getUsers();
               for (User currentUser: users) {
                   System.out.println(currentUser.getUserId() + " : " + currentUser.getUserStatus());
               }
           } while (listUsersResult.getNextToken() != null);
       }
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande répertorie les utilisateurs d'une collection avec l'`ListUsers`opération.

   ```
   aws rekognition list-users --collection-id collection-id --max-results number-of-max-results
   ```

------
#### [ Python ]

   L’exemple suivant répertorie les utilisateurs d’une collection avec l’opération `ListUsers`.

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   import logging
   from pprint import pprint
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   
   def list_users(collection_id):
       """
       List all users from the given collection
   
       :param collection_id: The ID of the collection where user is stored.
   
       :return: response that contains list of Users found within given collection
       """
       logger.info(f'Listing the users in collection: {collection_id}')
       try:
           response = client.list_users(
               CollectionId=collection_id
           )
           pprint(response["Users"])
       except ClientError:
           logger.exception(f'Failed to list all user from given collection: {collection_id}')
           raise
       else:
           return response
   
   def main():
       collection_id = "collection-id"
       list_users(collection_id)
   
   if __name__ == "__main__":
       main()
   ```

------

## ListUsers réponse à l'opération
<a name="list-users-response"></a>

La réponse à une demande d' ListUsers inclusion d'une liste `Users` des éléments de la collection ainsi que `UserStatus` de l'utilisateur. `UsedId`

```
{
    "NextToken": "B1asJT3bAb/ttuGgPFV8BZoBZyGQzlUHXbuTNLh48a6enU7kXKw43hpOwizW7LOk/Gk7Em09lznoq6+FcDCcSq2olrn7A98BLkt5keu+ZRVRUTyrXtT6J7Hmp+ieQ2an6Zu0qzPfcdPeaJ9eAxG2d0WNrzJgi5hvmjoiSTTfKX3MQz1sduWQkvAAs4hZfhZoKFahFlqWofshCXa/FHAAY3PL1PjxXbkNeSSMq8V7i1MlKCdrPVykCv9MokpPt7jtNvKPEZGUhxgBTFMxNWLEcFnzAiCWDg91dFy/LalshPjXA9UVc5Gx9vIJNQ/eO3cQRghAkCT3FOAiXsLAnA015ODTomZpWWVpqB21wKpI3LYmfAVFrDPGzpbTVlRmLsJm41bkmnBBBw9+DHz1Jn7zW+qc5Fs3yaHu0f51Xg==", 
    "Users": [
        {
            "UserId": "demoUser4", 
            "UserStatus": "CREATED"
        }, 
        {
            "UserId": "demoUser2", 
            "UserStatus": "CREATED"
        }
    ]
}
```

# Recherche d’un visage avec un ID de visage
<a name="search-face-with-id-procedure"></a>

Vous pouvez utiliser cette [SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html)opération pour rechercher des utilisateurs dans une collection qui correspondent au plus grand visage d'une image fournie.

L'ID de visage est renvoyé dans la réponse de l'opération [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html) lorsque le visage est détecté et ajouté à une collection. Pour de plus amples informations, veuillez consulter [Gestion des visages dans une collection](managing-face-collections.md#collections-index-faces).



**Pour rechercher un visage dans une collection à l’aide de son ID (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `SearchFaces`.

------
#### [ Java ]

   Cet exemple affiche des informations sur les visages qui correspondent à un visage identifié par son ID.

   Remplacez la valeur de `collectionID` par la collection qui contient le visage en question. Remplacez la valeur de `faceId` par l’identificateur du visage que vous souhaitez rechercher.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.fasterxml.jackson.databind.ObjectMapper;
   import com.amazonaws.services.rekognition.model.FaceMatch;
   import com.amazonaws.services.rekognition.model.SearchFacesRequest;
   import com.amazonaws.services.rekognition.model.SearchFacesResult;
   import java.util.List;
   
   
     public class SearchFaceMatchingIdCollection {
         public static final String collectionId = "MyCollection";
         public static final String faceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
         
       public static void main(String[] args) throws Exception {
           
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
         
           ObjectMapper objectMapper = new ObjectMapper();
         // Search collection for faces matching the face id.
         
         SearchFacesRequest searchFacesRequest = new SearchFacesRequest()
                 .withCollectionId(collectionId)
                 .withFaceId(faceId)
                 .withFaceMatchThreshold(70F)
                 .withMaxFaces(2);
              
          SearchFacesResult searchFacesByIdResult = 
                  rekognitionClient.searchFaces(searchFacesRequest);
   
          System.out.println("Face matching faceId " + faceId);
         List < FaceMatch > faceImageMatches = searchFacesByIdResult.getFaceMatches();
         for (FaceMatch face: faceImageMatches) {
            System.out.println(objectMapper.writerWithDefaultPrettyPrinter()
                    .writeValueAsString(face));
            
            System.out.println();
         }
       }
   
   }
   ```

   Exécutez l’exemple de code. Des informations sur les visages correspondants s’affichent à l’écran.

------
#### [ Java V2 ]

   Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet [ici](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/SearchFaceMatchingIdCollection.java).

   ```
   // snippet-start:[rekognition.java2.match_faces_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.SearchFacesRequest;
   import software.amazon.awssdk.services.rekognition.model.SearchFacesResponse;
   import software.amazon.awssdk.services.rekognition.model.FaceMatch;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import java.util.List;
   // snippet-end:[rekognition.java2.match_faces_collection.import]
   
   /**
    * Before running this Java V2 code example, set up your development environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class SearchFaceMatchingIdCollection {
   
       public static void main(String[] args) {
   
           final String usage = "\n" +
               "Usage: " +
               "   <collectionId> <sourceImage>\n\n" +
               "Where:\n" +
               "   collectionId - The id of the collection.  \n" +
               "   sourceImage - The path to the image (for example, C:\\AWS\\pic1.png). \n\n";
   
           if (args.length != 2) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String collectionId = args[0];
           String faceId = args[1];
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
               .region(region)
               .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
               .build();
   
           System.out.println("Searching for a face in a collections");
           searchFacebyId(rekClient, collectionId, faceId ) ;
           rekClient.close();
       }
   
       // snippet-start:[rekognition.java2.match_faces_collection.main]
       public static void searchFacebyId(RekognitionClient rekClient,String collectionId, String faceId) {
   
           try {
               SearchFacesRequest searchFacesRequest = SearchFacesRequest.builder()
                   .collectionId(collectionId)
                   .faceId(faceId)
                   .faceMatchThreshold(70F)
                   .maxFaces(2)
                   .build();
   
               SearchFacesResponse imageResponse = rekClient.searchFaces(searchFacesRequest) ;
               System.out.println("Faces matching in the collection");
               List<FaceMatch> faceImageMatches = imageResponse.faceMatches();
               for (FaceMatch face: faceImageMatches) {
                   System.out.println("The similarity level is  "+face.similarity());
                   System.out.println();
               }
   
           } catch (RekognitionException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
       // snippet-end:[rekognition.java2.match_faces_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande affiche la sortie JSON pour l'opération `search-faces` CLI. Remplacez la valeur d’`face-id` par l’identifiant de visage à rechercher et remplacez la valeur de `collection-id` par la collection dans laquelle vous souhaitez effectuer la recherche. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur.

   ```
   aws rekognition search-faces --face-id face-id --collection-id "collection-id" --profile profile-name
   ```

------
#### [ Python ]

   Cet exemple affiche des informations sur les visages qui correspondent à un visage identifié par son ID.

   Remplacez la valeur de `collectionID` par la collection qui contient le visage en question. Remplacez la valeur de `faceId` par l’identificateur du visage que vous souhaitez rechercher. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def search_face_in_collection(face_id, collection_id):
       threshold = 90
       max_faces = 2
   
       session = boto3.Session(profile_name='profile-name')
       client = session.client('rekognition')
   
       response = client.search_faces(CollectionId=collection_id,
                                      FaceId=face_id,
                                      FaceMatchThreshold=threshold,
                                      MaxFaces=max_faces)
   
       face_matches = response['FaceMatches']
       print('Matching faces')
       for match in face_matches:
           print('FaceId:' + match['Face']['FaceId'])
           print('Similarity: ' + "{:.2f}".format(match['Similarity']) + "%")
   
       return len(face_matches)
   
   def main():
       face_id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
       collection_id = 'collection-id'
   
       faces = []
       faces.append(face_id)
   
       faces_count = search_face_in_collection(face_id, collection_id)
       print("faces found: " + str(faces_count))
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Cet exemple affiche des informations sur les visages qui correspondent à un visage identifié par son ID.

   Remplacez la valeur de `collectionID` par la collection qui contient le visage en question. Remplacez la valeur de `faceId` par l’identificateur du visage que vous souhaitez rechercher.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class SearchFacesMatchingId
   {
       public static void Example()
       {
           String collectionId = "MyCollection";
           String faceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
   
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           // Search collection for faces matching the face id.
   
           SearchFacesRequest searchFacesRequest = new SearchFacesRequest()
           {
               CollectionId = collectionId,
               FaceId = faceId,
               FaceMatchThreshold = 70F,
               MaxFaces = 2
           };
   
           SearchFacesResponse searchFacesResponse = rekognitionClient.SearchFaces(searchFacesRequest);
   
           Console.WriteLine("Face matching faceId " + faceId);
   
           Console.WriteLine("Matche(s): ");
           foreach (FaceMatch face in searchFacesResponse.FaceMatches)
               Console.WriteLine("FaceId: " + face.Face.FaceId + ", Similarity: " + face.Similarity);
       }
   }
   ```

   Exécutez l’exemple de code. Des informations sur les visages correspondants s’affichent à l’écran.

------

## SearchFaces demande d'opération
<a name="searchfaces-operation-request"></a>

A partir d’un ID de visage donné (chaque visage stocké dans la collection de visages possède un ID de visage), `SearchFaces` recherche dans la collection de visages spécifiée des visages similaires. La réponse n’inclut pas le visage que vous recherchez. Elle ne comprend que des visages similaires. Par défaut, `SearchFaces` renvoie les visages pour lesquels l’algorithme détecte une similarité de plus de 80 %. La similarité indique à quel point le visage correspond au visage en entrée. Le cas échéant, vous pouvez l’utiliser `FaceMatchThreshold` pour spécifier une autre valeur. 

```
{
    "CollectionId": "MyCollection",
    "FaceId": "0b683aed-a0f1-48b2-9b5e-139e9cc2a757",
    "MaxFaces": 2,
    "FaceMatchThreshold": 99
}
```

## SearchFaces réponse à l'opération
<a name="searchfaces-operation-response"></a>

L’opération renvoie un tableau des correspondances de visage qui ont été trouvées, ainsi que l’ID de visage que vous avez fourni en entrée.

```
{
    "SearchedFaceId": "7ecf8c19-5274-5917-9c91-1db9ae0449e2",
    "FaceMatches": [ list of face matches found ]
}
```

Pour chaque correspondance de visage trouvée, la réponse inclut la similarité et les métadonnées faciales, comme l’illustre l’exemple de réponse suivant : 

```
{
   ...
    "FaceMatches": [
        {
            "Similarity": 100.0,
            "Face": {
                "BoundingBox": {
                    "Width": 0.6154,
                    "Top": 0.2442,
                    "Left": 0.1765,
                    "Height": 0.4692
                },
                "FaceId": "84de1c86-5059-53f2-a432-34ebb704615d",
                "Confidence": 99.9997,
                "ImageId": "d38ebf91-1a11-58fc-ba42-f978b3f32f60"
            }
        },
        {
            "Similarity": 84.6859,
            "Face": {
                "BoundingBox": {
                    "Width": 0.2044,
                    "Top": 0.2254,
                    "Left": 0.4622,
                    "Height": 0.3119
                },
                "FaceId": "6fc892c7-5739-50da-a0d7-80cc92c0ba54",
                "Confidence": 99.9981,
                "ImageId": "5d913eaf-cf7f-5e09-8c8f-cb1bdea8e6aa"
            }
        }
    ]
}
```

# Recherche d’un visage à l’aide d’une image
<a name="search-face-with-image-procedure"></a>

Vous pouvez utiliser l'opération [SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html) afin de rechercher des visages correspondant au visage le plus grand d'une image fournie.

Pour de plus amples informations, veuillez consulter [Recherche de visages et d’utilisateurs dans une collection](collections-search-faces.md). 



**Pour rechercher un visage dans une collection à l’aide d’une image (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec `AmazonRekognitionFullAccess` et autorisations `AmazonS3ReadOnlyAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Chargez une image (qui contient un ou plusieurs visages) dans votre compartiment S3. 

   Pour en savoir plus, consultez [Chargement d’objets dans Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UploadingObjectsintoAmazonS3.html) dans le *Guide de l’utilisateur Amazon Simple Storage Service*.

1. Utilisez les exemples suivants pour appeler l’opération `SearchFacesByImage`.

------
#### [ Java ]

   Cet exemple affiche des informations sur les visages qui correspondent au visage le plus grand dans une image. L’exemple de code spécifie les paramètres `FaceMatchThreshold` et `MaxFaces` pour limiter les résultats renvoyés dans la réponse.

   Dans l’exemple suivant, modifiez les éléments suivants : remplacez la valeur de `collectionId` par la collection à explorer, remplacez la valeur de `bucket` par le compartiment contenant l’image d’entrée, puis remplacez la valeur de `photo` par l’image d’entrée. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.FaceMatch;
   import com.amazonaws.services.rekognition.model.Image;
   import com.amazonaws.services.rekognition.model.S3Object;
   import com.amazonaws.services.rekognition.model.SearchFacesByImageRequest;
   import com.amazonaws.services.rekognition.model.SearchFacesByImageResult;
   import java.util.List;
   import com.fasterxml.jackson.databind.ObjectMapper;
   
   
   public class SearchFaceMatchingImageCollection {
       public static final String collectionId = "MyCollection";
       public static final String bucket = "bucket";
       public static final String photo = "input.jpg";
         
       public static void main(String[] args) throws Exception {
   
          AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
           
         ObjectMapper objectMapper = new ObjectMapper();
         
          // Get an image object from S3 bucket.
         Image image=new Image()
                 .withS3Object(new S3Object()
                         .withBucket(bucket)
                         .withName(photo));
         
         // Search collection for faces similar to the largest face in the image.
         SearchFacesByImageRequest searchFacesByImageRequest = new SearchFacesByImageRequest()
                 .withCollectionId(collectionId)
                 .withImage(image)
                 .withFaceMatchThreshold(70F)
                 .withMaxFaces(2);
              
          SearchFacesByImageResult searchFacesByImageResult = 
                  rekognitionClient.searchFacesByImage(searchFacesByImageRequest);
   
          System.out.println("Faces matching largest face in image from" + photo);
         List < FaceMatch > faceImageMatches = searchFacesByImageResult.getFaceMatches();
         for (FaceMatch face: faceImageMatches) {
             System.out.println(objectMapper.writerWithDefaultPrettyPrinter()
                     .writeValueAsString(face));
            System.out.println();
         }
      }
   }
   ```

------
#### [ Java V2 ]

   Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet [ici](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/SearchFaceMatchingImageCollection.java).

   ```
   // snippet-start:[rekognition.java2.search_faces_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.core.SdkBytes;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import software.amazon.awssdk.services.rekognition.model.SearchFacesByImageRequest;
   import software.amazon.awssdk.services.rekognition.model.Image;
   import software.amazon.awssdk.services.rekognition.model.SearchFacesByImageResponse;
   import software.amazon.awssdk.services.rekognition.model.FaceMatch;
   import java.io.File;
   import java.io.FileInputStream;
   import java.io.FileNotFoundException;
   import java.io.InputStream;
   import java.util.List;
   // snippet-end:[rekognition.java2.search_faces_collection.import]
   
   /**
    * Before running this Java V2 code example, set up your development environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class SearchFaceMatchingImageCollection {
   
       public static void main(String[] args) {
   
           final String usage = "\n" +
               "Usage: " +
               "   <collectionId> <sourceImage>\n\n" +
               "Where:\n" +
               "   collectionId - The id of the collection.  \n" +
               "   sourceImage - The path to the image (for example, C:\\AWS\\pic1.png). \n\n";
   
           if (args.length != 2) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String collectionId = args[0];
           String sourceImage = args[1];
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
               .region(region)
               .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
               .build();
   
           System.out.println("Searching for a face in a collections");
           searchFaceInCollection(rekClient, collectionId, sourceImage ) ;
           rekClient.close();
       }
   
       // snippet-start:[rekognition.java2.search_faces_collection.main]
       public static void searchFaceInCollection(RekognitionClient rekClient,String collectionId, String sourceImage) {
   
           try {
               InputStream sourceStream = new FileInputStream(new File(sourceImage));
               SdkBytes sourceBytes = SdkBytes.fromInputStream(sourceStream);
               Image souImage = Image.builder()
                   .bytes(sourceBytes)
                   .build();
   
               SearchFacesByImageRequest facesByImageRequest = SearchFacesByImageRequest.builder()
                   .image(souImage)
                   .maxFaces(10)
                   .faceMatchThreshold(70F)
                   .collectionId(collectionId)
                   .build();
   
               SearchFacesByImageResponse imageResponse = rekClient.searchFacesByImage(facesByImageRequest) ;
               System.out.println("Faces matching in the collection");
               List<FaceMatch> faceImageMatches = imageResponse.faceMatches();
               for (FaceMatch face: faceImageMatches) {
                   System.out.println("The similarity level is  "+face.similarity());
                   System.out.println();
               }
   
           } catch (RekognitionException | FileNotFoundException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
       // snippet-end:[rekognition.java2.search_faces_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande affiche la sortie JSON pour l'opération `search-faces-by-image` CLI. Remplacez la valeur de `Bucket` par le compartiment S3 utilisé à l’étape 2. Remplacez la valeur de `Name` par le nom de fichier image utilisé à l’étape 2. Remplacez la valeur de `collection-id` par la collection dans laquelle vous souhaitez effectuer la recherche. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur.

   ```
   aws rekognition search-faces-by-image --image '{"S3Object":{"Bucket":"bucket-name","Name":"image-name"}}' \
   --collection-id "collection-id" --profile profile-name
   ```

    Si vous accédez à la CLI sur un périphérique Windows, utilisez des guillemets doubles au lieu de guillemets simples et évitez les guillemets doubles internes par une barre oblique inverse (c’est-à-dire \$1) pour corriger les erreurs d’analyse que vous pourriez rencontrer. Par exemple, consultez ce qui suit : 

   ```
   aws rekognition search-faces-by-image --image "{\"S3Object\":{\"Bucket\":\"bucket-name\",\"Name\":\"image-name\"}}" \
   --collection-id "collection-id" --profile profile-name
   ```

------
#### [ Python ]

   Cet exemple affiche des informations sur les visages qui correspondent au visage le plus grand dans une image. L’exemple de code spécifie les paramètres `FaceMatchThreshold` et `MaxFaces` pour limiter les résultats renvoyés dans la réponse.

   Dans l’exemple suivant, modifiez les éléments suivants : remplacez la valeur de `collectionId` par la collection à explorer, puis remplacez la valeur de `bucket` et de `photo` par le nom du compartiment S3 et le nom de l’image utilisés à l’étape 2. Remplacez la valeur de `profile_name` dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur. 

   ```
   #Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   if __name__ == "__main__":
   
       bucket='amzn-s3-demo-bucket'
       collectionId='MyCollection'
       fileName='input.jpg'
       threshold = 70
       maxFaces=2
   
       client=boto3.client('rekognition')
   
     
       response=client.search_faces_by_image(CollectionId=collectionId,
                                   Image={'S3Object':{'Bucket':bucket,'Name':fileName}},
                                   FaceMatchThreshold=threshold,
                                   MaxFaces=maxFaces)
   
                                   
       faceMatches=response['FaceMatches']
       print ('Matching faces')
       for match in faceMatches:
               print ('FaceId:' + match['Face']['FaceId'])
               print ('Similarity: ' + "{:.2f}".format(match['Similarity']) + "%")
               print
   ```

------
#### [ .NET ]

   Cet exemple affiche des informations sur les visages qui correspondent au visage le plus grand dans une image. L’exemple de code spécifie les paramètres `FaceMatchThreshold` et `MaxFaces` pour limiter les résultats renvoyés dans la réponse.

   Dans l’exemple suivant, modifiez les éléments suivants : remplacez la valeur de `collectionId` par la collection à explorer, puis remplacez la valeur de `bucket` et de `photo` par le nom du compartiment S3 et le nom de l’image utilisés à l’étape 2. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class SearchFacesMatchingImage
   {
       public static void Example()
       {
           String collectionId = "MyCollection";
           String bucket = "amzn-s3-demo-bucket";
           String photo = "input.jpg";
   
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           // Get an image object from S3 bucket.
           Image image = new Image()
           {
               S3Object = new S3Object()
               {
                   Bucket = bucket,
                   Name = photo
               }
           };
   
           SearchFacesByImageRequest searchFacesByImageRequest = new SearchFacesByImageRequest()
           {
               CollectionId = collectionId,
               Image = image,
               FaceMatchThreshold = 70F,
               MaxFaces = 2
           };
   
           SearchFacesByImageResponse searchFacesByImageResponse = rekognitionClient.SearchFacesByImage(searchFacesByImageRequest);
   
           Console.WriteLine("Faces matching largest face in image from " + photo);
           foreach (FaceMatch face in searchFacesByImageResponse.FaceMatches)
               Console.WriteLine("FaceId: " + face.Face.FaceId + ", Similarity: " + face.Similarity);
       }
   }
   ```

------

## SearchFacesByImage demande d'opération
<a name="searchfacesbyimage-operation-request"></a>

Les paramètres d’entrée de `SearchFacesImageByImage` correspondent à la collection à explorer et à l’emplacement de l’image source. Dans cet exemple, l’image source est stockée dans un compartiment Amazon S3 (`S3Object`). Sont également spécifiés le nombre maximal de visages à renvoyer (`Maxfaces`) et le niveau de fiabilité minimal auquel doit correspondre un visage pour être renvoyé (`FaceMatchThreshold`).

```
{
    "CollectionId": "MyCollection",
    "Image": {
        "S3Object": {
            "Bucket": "bucket",
            "Name": "input.jpg"
        }
    },
    "MaxFaces": 2,
    "FaceMatchThreshold": 99
}
```

## SearchFacesByImage réponse à l'opération
<a name="searchfacesbyimage-operation-response"></a>

A partir d’une image d’entrée donnée (.jpeg ou .png), l’opération détecte dans un premier temps le visage dans l’image d’entrée, puis recherche dans la collection de visages spécifiée des visages similaires. 

**Note**  
Si le service détecte plusieurs visages dans l’image d’entrée, il utilise le visage détecté le plus grand pour explorer la collection de visages.

L’opération renvoie un tableau des correspondances de visage qui ont été trouvées, ainsi que des informations sur le visage d’entrée. Ces informations incluent notamment le cadre de délimitation, ainsi que la valeur de fiabilité, qui indique le niveau de certitude que le cadre de délimitation contient un visage. 

Par défaut, `SearchFacesByImage` renvoie les visages pour lesquels l’algorithme détecte une similarité de plus de 80 %. La similarité indique à quel point le visage correspond au visage en entrée. Le cas échéant, vous pouvez l’utiliser `FaceMatchThreshold` pour spécifier une autre valeur. Pour chaque correspondance de visage trouvée, la réponse inclut la similarité et les métadonnées faciales, comme l’illustre l’exemple de réponse suivant : 

```
{
    "FaceMatches": [
        {
            "Face": {
                "BoundingBox": {
                    "Height": 0.06333330273628235,
                    "Left": 0.1718519926071167,
                    "Top": 0.7366669774055481,
                    "Width": 0.11061699688434601
                },
                "Confidence": 100,
                "ExternalImageId": "input.jpg",
                "FaceId": "578e2e1b-d0b0-493c-aa39-ba476a421a34",
                "ImageId": "9ba38e68-35b6-5509-9d2e-fcffa75d1653"
            },
            "Similarity": 99.9764175415039
        }
    ],
    "FaceModelVersion": "3.0",
    "SearchedFaceBoundingBox": {
        "Height": 0.06333333253860474,
        "Left": 0.17185185849666595,
        "Top": 0.7366666793823242,
        "Width": 0.11061728745698929
    },
    "SearchedFaceConfidence": 99.99999237060547
}
```

# Recherche d’utilisateurs (identifiant facial/ID utilisateur)
<a name="search-users"></a>

Vous pouvez utiliser cette [SearchUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsers.html)opération pour rechercher des utilisateurs dans une collection spécifiée qui correspondent à un identifiant de visage ou à un identifiant d'utilisateur fourni. L'opération répertorie les résultats `UserIds` classés selon le score de similarité le plus élevé au-dessus du score demandé UserMatchThreshold. L'ID utilisateur est créé lors de l' CreateUsers opération. Pour de plus amples informations, veuillez consulter [Gérer les utilisateurs dans une collection](managing-face-collections.md#collections-manage-users).

**Pour rechercher des utilisateurs (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `SearchUsers`.

------
#### [ Java ]

   Cet exemple Java recherche les utilisateurs d’une collection à l’aide de l’opération `SearchUsers`.

   ```
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.UserMatch;
   import com.amazonaws.services.rekognition.model.SearchUsersRequest;
   import com.amazonaws.services.rekognition.model.SearchUsersResult;
   import com.amazonaws.services.rekognition.model.UserMatch;
   
   public class SearchUsers {
       //Replace collectionId and faceId with the values you want to use.
   
       public static final String collectionId = "MyCollection";
       public static final String faceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
   
       public static final String userd = 'demo-user';
   
       public static void main(String[] args) throws Exception {
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           // Search collection for faces matching the user id.
           SearchUsersRequest request = new SearchUsersRequest()
                   .withCollectionId(collectionId)
                   .withUserId(userId);
   
           SearchUsersResult result =
                   rekognitionClient.searchUsers(request);
   
           System.out.println("Printing first search result with matched user and similarity score");
           for (UserMatch match: result.getUserMatches()) {
               System.out.println(match.getUser().getUserId() + " with similarity score " + match.getSimilarity());
           }
   
           // Search collection for faces matching the face id.
           SearchUsersRequest request1 = new SearchUsersRequest()
                   .withCollectionId(collectionId)
                   .withFaceId(faceId);
   
           SearchUsersResult result1 =
                   rekognitionClient.searchUsers(request1);
   
           System.out.println("Printing second search result with matched user and similarity score");
           for (UserMatch match: result1.getUserMatches()) {
               System.out.println(match.getUser().getUserId() + " with similarity score " + match.getSimilarity());
           }
       }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande recherche les utilisateurs d'une collection avec l'`SearchUsers`opération.

   ```
   aws rekognition search-users --face-id face-id --collection-id collection-id --region region-name
   ```

------
#### [ Python ]

   L’exemple suivant recherche les utilisateurs d’une collection avec l’opération `SearchUsers`.

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   import logging
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def search_users_by_face_id(collection_id, face_id):
       """
       SearchUsers operation with face ID provided as the search source
   
       :param collection_id: The ID of the collection where user and faces are stored.
       :param face_id: The ID of the face in the collection to search for.
   
       :return: response of SearchUsers API
       """
       logger.info(f'Searching for users using a face-id: {face_id}')
       try:
           response = client.search_users(
               CollectionId=collection_id,
               FaceId=face_id
           )
           print(f'- found {len(response["UserMatches"])} matches')
           print([f'- {x["User"]["UserId"]} - {x["Similarity"]}%' for x in response["UserMatches"]])
       except ClientError:
           logger.exception(f'Failed to perform SearchUsers with given face id: {face_id}')
           raise
       else:
           print(response)
           return response
   
   def search_users_by_user_id(collection_id, user_id):
       """
       SearchUsers operation with user ID provided as the search source
   
       :param collection_id: The ID of the collection where user and faces are stored.
       :param user_id: The ID of the user in the collection to search for.
   
       :return: response of SearchUsers API
       """
       logger.info(f'Searching for users using a user-id: {user_id}')
       try:
           response = client.search_users(
               CollectionId=collection_id,
               UserId=user_id
           )
           print(f'- found {len(response["UserMatches"])} matches')
           print([f'- {x["User"]["UserId"]} - {x["Similarity"]}%' for x in response["UserMatches"]])
       except ClientError:
           logger.exception(f'Failed to perform SearchUsers with given face id: {user_id}')
           raise
       else:
           print(response)
           return response
   
   def main():
       collection_id = "collection-id"
       user_id = "user-id"
       face_id = "face_id"
       search_users_by_face_id(collection_id, face_id)
       search_users_by_user_id(collection_id, user_id)
   
   if __name__ == "__main__":
       main()
   ```

------

## SearchUsers demande d'opération
<a name="search-users-request"></a>

À partir d'un FaceID ou d'un UserID SearchUsers , recherche les correspondances entre utilisateurs dans le CollectionId spécifié. Par défaut, SearchUsers renvoie l'utilisateur IDs pour lequel le score de similarité est supérieur à 80 %. La similitude indique dans quelle mesure l’UserID correspond au FaceID ou UserID fourni. Si plusieurs utilisateurs IDs sont renvoyés, ils sont répertoriés par ordre du score de similarité le plus élevé au plus bas. Vous pouvez éventuellement utiliser le UserMatchThreshold pour spécifier une valeur différente. Pour de plus amples informations, veuillez consulter [Gérer les utilisateurs dans une collection](managing-face-collections.md#collections-manage-users). 

Voici un exemple de SearchUsers demande utilisant `UserId` :

```
{
   "CollectionId": "MyCollection",
   "UserId": "demoUser1",
   "MaxUsers": 2,
   "UserMatchThreshold": 99
}
```

Voici un exemple de SearchUsers demande utilisant `FaceId` :

```
{
    "CollectionId": "MyCollection",
    "FaceId": "bff43c40-cfa7-4b94-bed8-8a08b2205107",
    "MaxUsers": 2,
    "UserMatchThreshold": 99
}
```

## SearchUsers réponse à l'opération
<a name="search-users-response"></a>

Si vous effectuez une recherche avec un`FaceId`, la réponse SearchUsers inclut le `FaceId` pour`SearchedFace`, ainsi qu'une liste de `UserMatches` `UserId` et `UserStatus` pour chaque utilisateur.

```
{
    "SearchedFace": {
        "FaceId": "bff43c40-cfa7-4b94-bed8-8a08b2205107"
    }, 
    "UserMatches": [
        {
            "User": {
                "UserId": "demoUser1", 
                "UserStatus": "ACTIVE"
            }, 
            "Similarity": 100.0
        }, 
        {
            "User": {
                "UserId": "demoUser2", 
                "UserStatus": "ACTIVE"
            }, 
            "Similarity": 99.97946166992188
        }
    ], 
    "FaceModelVersion": "6"
}
```

Si vous recherchez avec a`UserId`, la réponse pour SearchUsers inclut le `UserId` pour`SearchedUser`, en plus des autres éléments de réponse.

```
{
    "SearchedUser": {
        "UserId": "demoUser1"
    }, 
    "UserMatches": [
        {
            "User": {
                "UserId": "demoUser2", 
                "UserStatus": "ACTIVE"
            }, 
            "Similarity": 99.97946166992188
        }
    ], 
    "FaceModelVersion": "6"
}
```

# Recherche d’utilisateurs (image)
<a name="search-users-by-image"></a>

`SearchUsersByImage` recherche l’ID de collection spécifié pour les utilisateurs dans une collection qui correspond au plus grand visage détecté dans une image fournie. Par défaut, SearchUsersByImage renvoie l'utilisateur IDs pour lequel le score de similarité est supérieur à 80 %. La similarité indique dans quelle mesure l’UserID correspond au plus grand visage détecté dans l’image fournie. Si plusieurs utilisateurs IDs sont renvoyés, ils sont répertoriés par ordre du score de similarité le plus élevé au plus bas. Vous pouvez éventuellement utiliser le UserMatchThreshold pour spécifier une valeur différente. Pour de plus amples informations, veuillez consulter [Gérer les utilisateurs dans une collection](managing-face-collections.md#collections-manage-users). 



**Pour rechercher des utilisateurs par image (SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Créez ou mettez à jour un utilisateur avec les autorisations `AmazonRekognitionFullAccess`. Pour de plus amples informations, veuillez consulter [Étape 1 : configurer un compte AWS et créer un utilisateur](setting-up.md#setting-up-iam).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 2 : configurer le AWS CLI et AWS SDKs](setup-awscli-sdk.md).

1. Utilisez les exemples suivants pour appeler l’opération `SearchUsersByImage`.

------
#### [ Java ]

   Cet exemple Java recherche les utilisateurs d’une collection sur la base d’une image en entrée, à l’aide de l’opération `SearchUsersByImage`.

   ```
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.Image;
   import com.amazonaws.services.rekognition.model.S3Object;
   import com.amazonaws.services.rekognition.model.SearchUsersByImageRequest;
   import com.amazonaws.services.rekognition.model.SearchUsersByImageResult;
   import com.amazonaws.services.rekognition.model.UserMatch;
   
   
   public class SearchUsersByImage {
       //Replace bucket, collectionId and photo with your values.
       public static final String collectionId = "MyCollection";
       public static final String s3Bucket = "bucket";
       public static final String s3PhotoFileKey = "input.jpg";
   
       public static void main(String[] args) throws Exception {
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
   
           // Get an image object from S3 bucket.
           Image image = new Image()
                   .withS3Object(new S3Object()
                           .withBucket(s3Bucket)
                           .withName(s3PhotoFileKey));
   
           // Search collection for users similar to the largest face in the image.
           SearchUsersByImageRequest request = new SearchUsersByImageRequest()
                   .withCollectionId(collectionId)
                   .withImage(image)
                   .withUserMatchThreshold(70F)
                   .withMaxUsers(2);
   
           SearchUsersByImageResult result =
                   rekognitionClient.searchUsersByImage(request);
   
           System.out.println("Printing search result with matched user and similarity score");
           for (UserMatch match: result.getUserMatches()) {
               System.out.println(match.getUser().getUserId() + " with similarity score " + match.getSimilarity());
           }
       }
   }
   ```

------
#### [ AWS CLI ]

   Cette AWS CLI commande recherche les utilisateurs d'une collection en fonction d'une image d'entrée, avec l'`SearchUsersByImage`opération.

   ```
   aws rekognition search-users-by-image --image '{"S3Object":{"Bucket":"s3BucketName","Name":"file-name"}}' --collection-id MyCollectionId --region region-name
   ```

------
#### [ Python ]

   L’exemple suivant recherche les utilisateurs d’une collection sur la base d’une image d’entrée, avec l’opération `SearchUsersByImage`.

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   import logging
   import os
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def load_image(file_name):
       """
       helper function to load the image for indexFaces call from local disk
   
       :param image_file_name: The image file location that will be used by indexFaces call.
       :return: The Image in bytes
       """
       print(f'- loading image: {file_name}')
       with open(file_name, 'rb') as file:
           return {'Bytes': file.read()}
   
   def search_users_by_image(collection_id, image_file):
       """
       SearchUsersByImage operation with user ID provided as the search source
   
       :param collection_id: The ID of the collection where user and faces are stored.
       :param image_file: The image that contains the reference face to search for.
   
       :return: response of SearchUsersByImage API
       """
       logger.info(f'Searching for users using an image: {image_file}')
       try:
           response = client.search_users_by_image(
               CollectionId=collection_id,
               Image=load_image(image_file)
           )
           print(f'- found {len(response["UserMatches"])} matches')
           print([f'- {x["User"]["UserId"]} - {x["Similarity"]}%' for x in response["UserMatches"]])
       except ClientError:
           logger.exception(f'Failed to perform SearchUsersByImage with given image: {image_file}')
           raise
       else:
           print(response)
           return response
   
   def main():
       collection_id = "collection-id"
       IMAGE_SEARCH_SOURCE = os.getcwd() + '/image_path'
       search_users_by_image(collection_id, IMAGE_SEARCH_SOURCE)
   
   if __name__ == "__main__":
       main()
   ```

------

## SearchUsersByImage demande d'opération
<a name="search-users-by-image-request"></a>

Les paramètres d’entrée de `SearchUsersByImage` correspondent à la collection à explorer, et à l’emplacement de l’image source. Dans cet exemple, l’image source est stockée dans un compartiment Amazon S3 (`S3Object`). Sont également spécifiés le nombre maximal de visages à renvoyer (`MaxUsers`) et le niveau de fiabilité minimal auquel doit correspondre un visage pour être renvoyé (`UserMatchThreshold`).

```
{
    "CollectionId": "MyCollection",
    "Image": {
        "S3Object": {
            "Bucket": "bucket",
            "Name": "input.jpg"
        }
    },
    "MaxUsers": 2,
    "UserMatchThreshold": 99
}
```

## SearchUsersByImage réponse à l'opération
<a name="search-users-by-image-response"></a>

La réponse pour `SearchUsersByImage` inclut un `FaceDetail` objet pour le`SearchedFace`, ainsi qu'une liste UserMatches contenant le `UserId``Similarity`, et `UserStatus` pour chacun d'entre eux. Si l'image d'entrée contient plusieurs visages, une liste de visages UnsearchedFaces sera également renvoyée.

```
{
    "SearchedFace": {
        "FaceDetail": {
            "BoundingBox": {
                "Width": 0.23692893981933594, 
                "Top": 0.19235000014305115, 
                "Left": 0.39177176356315613, 
                "Height": 0.5437348484992981
            }
        }
    }, 
    "UserMatches": [
        {
            "User": {
                "UserId": "demoUser1", 
                "UserStatus": "ACTIVE"
            }, 
            "Similarity": 100.0
        }, 
        {
            "User": {
                "UserId": "demoUser2", 
                "UserStatus": "ACTIVE"
            }, 
            "Similarity": 99.97946166992188
        }
    ], 
    "FaceModelVersion": "6", 
    "UnsearchedFaces": [
        {
            "FaceDetails": {
                "BoundingBox": {
                    "Width": 0.031677018851041794, 
                    "Top": 0.5593535900115967, 
                    "Left": 0.6102562546730042, 
                    "Height": 0.0682177022099495
                }
            }, 
            "Reasons": [
                "FACE_NOT_LARGEST"
            ]
        }, 
        {
            "FaceDetails": {
                "BoundingBox": {
                    "Width": 0.03254449740052223, 
                    "Top": 0.6080358028411865, 
                    "Left": 0.516062319278717, 
                    "Height": 0.06347997486591339
                }
            }, 
            "Reasons": [
                "FACE_NOT_LARGEST"
            ]
        }
    ]
}
```

# Recherche de visages dans des vidéos stockées
<a name="procedure-person-search-videos"></a>

Vous pouvez rechercher dans une collection des visages qui correspondent à ceux des personnes détectées dans une vidéo stockée ou en streaming. Cette section couvre la recherche de visages dans une vidéo stockée. Pour de plus amples informations sur la recherche de visages dans une vidéo en streaming, consultez [Utilisation des vidéos streaming](streaming-video.md).

Les visages que vous recherchez doivent d'abord être indexés dans une collection en utilisant [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html). Pour de plus amples informations, veuillez consulter [Ajout de visages à une collection](add-faces-to-collection-procedure.md). 

La recherche de visages Vidéo Amazon Rekognition suit le même flux de travail asynchrone que les autres opérations de Vidéo Amazon Rekognition qui analysent les vidéos stockées dans un compartiment Amazon S3. Pour commencer à rechercher des visages dans une vidéo enregistrée, appelez [StartFaceSearch](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartFaceSearch.html)et fournissez l'identifiant de la collection que vous souhaitez rechercher. Vidéo Amazon Rekognition publie l’état d’achèvement de l’analyse vidéo dans une rubrique Amazon Simple Notiﬁcation Service (Amazon SNS). Si l'analyse vidéo aboutit, appelez [GetFaceSearch](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_GeFaceSearch.html) pour obtenir les résultats de recherche. Pour de plus amples informations sur le démarrage de l’analyse vidéo et l’obtention des résultats, consultez [Appeler les opérations de Vidéo Amazon Rekognition](api-video.md). 

La procédure suivante montre comment rechercher dans une collection des visages qui correspondent à ceux des personnes détectées dans une vidéo. La procédure indique également comment obtenir les données de suivi des personnes présentant une correspondance dans la vidéo. La procédure s’appuie sur le code figurant dans [Analyse d’une vidéo stockée dans un compartiment Amazon S3 avec Java or Python (SDK)](video-analyzing-with-sqs.md), qui utilise une file d’attente Amazon Simple Queue Service (Amazon SQS) pour obtenir le statut d’achèvement d’une demande d’analyse vidéo. 

**Pour rechercher dans une vidéo des correspondances de visage (SDK)**

1. [Créez une collection](create-collection-procedure.md).

1. [Indexez un visage dans la collection](add-faces-to-collection-procedure.md).

1. Effectuez une [Analyse d’une vidéo stockée dans un compartiment Amazon S3 avec Java or Python (SDK)](video-analyzing-with-sqs.md).

1. Ajoutez le code suivant à la classe `VideoDetect` que vous avez créée à l’étape 3.

------
#### [ Java ]

   ```
      //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
      //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
          //Face collection search in video ==================================================================
          private static void StartFaceSearchCollection(String bucket, String video, String collection) throws Exception{
   
           NotificationChannel channel= new NotificationChannel()
                   .withSNSTopicArn(snsTopicArn)
                   .withRoleArn(roleArn);
   
           StartFaceSearchRequest req = new StartFaceSearchRequest()
                   .withCollectionId(collection)
                   .withVideo(new Video()
                           .withS3Object(new S3Object()
                                   .withBucket(bucket)
                                   .withName(video)))
                   .withNotificationChannel(channel);
   
   
   
           StartFaceSearchResult startPersonCollectionSearchResult = rek.startFaceSearch(req);
           startJobId=startPersonCollectionSearchResult.getJobId();
   
       } 
   
       //Face collection search in video ==================================================================
       private static void GetFaceSearchCollectionResults() throws Exception{
   
          GetFaceSearchResult faceSearchResult=null;
          int maxResults=10;
          String paginationToken=null;
   
          do {
   
              if (faceSearchResult !=null){
                  paginationToken = faceSearchResult.getNextToken();
              }
   
   
              faceSearchResult  = rek.getFaceSearch(
                      new GetFaceSearchRequest()
                      .withJobId(startJobId)
                      .withMaxResults(maxResults)
                      .withNextToken(paginationToken)
                      .withSortBy(FaceSearchSortBy.TIMESTAMP)
                      );
   
   
              VideoMetadata videoMetaData=faceSearchResult.getVideoMetadata();
   
              System.out.println("Format: " + videoMetaData.getFormat());
              System.out.println("Codec: " + videoMetaData.getCodec());
              System.out.println("Duration: " + videoMetaData.getDurationMillis());
              System.out.println("FrameRate: " + videoMetaData.getFrameRate());
              System.out.println();      
   
   
              //Show search results
              List<PersonMatch> matches= 
                      faceSearchResult.getPersons();
   
              for (PersonMatch match: matches) { 
                  long milliSeconds=match.getTimestamp();
                  System.out.print("Timestamp: " + Long.toString(milliSeconds));
                  System.out.println(" Person number: " + match.getPerson().getIndex());
                  List <FaceMatch> faceMatches = match.getFaceMatches();
                  if (faceMatches != null) {
                      System.out.println("Matches in collection...");
                      for (FaceMatch faceMatch: faceMatches){
                          Face face=faceMatch.getFace();
                          System.out.println("Face Id: "+ face.getFaceId());
                          System.out.println("Similarity: " + faceMatch.getSimilarity().toString());
                          System.out.println();
                      }
                  }
                  System.out.println();           
              } 
   
              System.out.println(); 
   
          } while (faceSearchResult !=null && faceSearchResult.getNextToken() != null);
   
      }
   ```

   Dans la fonction `main`, remplacez les lignes : 

   ```
           StartLabelDetection(bucket, video);
   
           if (GetSQSMessageSuccess()==true)
           	GetLabelDetectionResults();
   ```

   avec :

   ```
           String collection="collection";
           StartFaceSearchCollection(bucket, video, collection);
   
           if (GetSQSMessageSuccess()==true)
           	GetFaceSearchCollectionResults();
   ```

------
#### [ Java V2 ]

   Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet [ici](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/VideoDetectFaces.java).

   ```
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.*;
   import java.util.List;
   
   /**
    * Before running this Java V2 code example, set up your development
    * environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class VideoDetectFaces {
       private static String startJobId = "";
   
       public static void main(String[] args) {
           final String usage = """
   
                   Usage:    <bucket> <video> <topicArn> <roleArn>
   
                   Where:
                      bucket - The name of the bucket in which the video is located (for example, (for example, myBucket).\s
                      video - The name of video (for example, people.mp4).\s
                      topicArn - The ARN of the Amazon Simple Notification Service (Amazon SNS) topic.\s
                      roleArn - The ARN of the AWS Identity and Access Management (IAM) role to use.\s
                   """;
   
           if (args.length != 4) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String bucket = args[0];
           String video = args[1];
           String topicArn = args[2];
           String roleArn = args[3];
   
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
                   .region(region)
                   .build();
   
           NotificationChannel channel = NotificationChannel.builder()
                   .snsTopicArn(topicArn)
                   .roleArn(roleArn)
                   .build();
   
           startFaceDetection(rekClient, channel, bucket, video);
           getFaceResults(rekClient);
           System.out.println("This example is done!");
           rekClient.close();
       }
   
       public static void startFaceDetection(RekognitionClient rekClient,
               NotificationChannel channel,
               String bucket,
               String video) {
           try {
               S3Object s3Obj = S3Object.builder()
                       .bucket(bucket)
                       .name(video)
                       .build();
   
               Video vidOb = Video.builder()
                       .s3Object(s3Obj)
                       .build();
   
               StartFaceDetectionRequest faceDetectionRequest = StartFaceDetectionRequest.builder()
                       .jobTag("Faces")
                       .faceAttributes(FaceAttributes.ALL)
                       .notificationChannel(channel)
                       .video(vidOb)
                       .build();
   
               StartFaceDetectionResponse startLabelDetectionResult = rekClient.startFaceDetection(faceDetectionRequest);
               startJobId = startLabelDetectionResult.jobId();
   
           } catch (RekognitionException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
   
       public static void getFaceResults(RekognitionClient rekClient) {
           try {
               String paginationToken = null;
               GetFaceDetectionResponse faceDetectionResponse = null;
               boolean finished = false;
               String status;
               int yy = 0;
   
               do {
                   if (faceDetectionResponse != null)
                       paginationToken = faceDetectionResponse.nextToken();
   
                   GetFaceDetectionRequest recognitionRequest = GetFaceDetectionRequest.builder()
                           .jobId(startJobId)
                           .nextToken(paginationToken)
                           .maxResults(10)
                           .build();
   
                   // Wait until the job succeeds.
                   while (!finished) {
   
                       faceDetectionResponse = rekClient.getFaceDetection(recognitionRequest);
                       status = faceDetectionResponse.jobStatusAsString();
   
                       if (status.compareTo("SUCCEEDED") == 0)
                           finished = true;
                       else {
                           System.out.println(yy + " status is: " + status);
                           Thread.sleep(1000);
                       }
                       yy++;
                   }
   
                   finished = false;
   
                   // Proceed when the job is done - otherwise VideoMetadata is null.
                   VideoMetadata videoMetaData = faceDetectionResponse.videoMetadata();
                   System.out.println("Format: " + videoMetaData.format());
                   System.out.println("Codec: " + videoMetaData.codec());
                   System.out.println("Duration: " + videoMetaData.durationMillis());
                   System.out.println("FrameRate: " + videoMetaData.frameRate());
                   System.out.println("Job");
   
                   // Show face information.
                   List<FaceDetection> faces = faceDetectionResponse.faces();
                   for (FaceDetection face : faces) {
                       String age = face.face().ageRange().toString();
                       String smile = face.face().smile().toString();
                       System.out.println("The detected face is estimated to be"
                               + age + " years old.");
                       System.out.println("There is a smile : " + smile);
                   }
   
               } while (faceDetectionResponse != null && faceDetectionResponse.nextToken() != null);
   
           } catch (RekognitionException | InterruptedException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
   }
   ```

------
#### [ Python ]

   ```
   #Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
       # ============== Face Search ===============
       def StartFaceSearchCollection(self,collection):
           response = self.rek.start_face_search(Video={'S3Object':{'Bucket':self.bucket,'Name':self.video}},
               CollectionId=collection,
               NotificationChannel={'RoleArn':self.roleArn, 'SNSTopicArn':self.snsTopicArn})
           
           self.startJobId=response['JobId']
           
           print('Start Job Id: ' + self.startJobId)
   
   
       def GetFaceSearchCollectionResults(self):
           maxResults = 10
           paginationToken = ''
   
           finished = False
   
           while finished == False:
               response = self.rek.get_face_search(JobId=self.startJobId,
                                           MaxResults=maxResults,
                                           NextToken=paginationToken)
   
               print(response['VideoMetadata']['Codec'])
               print(str(response['VideoMetadata']['DurationMillis']))
               print(response['VideoMetadata']['Format'])
               print(response['VideoMetadata']['FrameRate'])
   
               for personMatch in response['Persons']:
                   print('Person Index: ' + str(personMatch['Person']['Index']))
                   print('Timestamp: ' + str(personMatch['Timestamp']))
   
                   if ('FaceMatches' in personMatch):
                       for faceMatch in personMatch['FaceMatches']:
                           print('Face ID: ' + faceMatch['Face']['FaceId'])
                           print('Similarity: ' + str(faceMatch['Similarity']))
                   print()
               if 'NextToken' in response:
                   paginationToken = response['NextToken']
               else:
                   finished = True
               print()
   ```

   Dans la fonction `main`, remplacez les lignes :

   ```
       analyzer.StartLabelDetection()
       if analyzer.GetSQSMessageSuccess()==True:
           analyzer.GetLabelDetectionResults()
   ```

   avec :

   ```
       collection='tests'
       analyzer.StartFaceSearchCollection(collection)
       
       if analyzer.GetSQSMessageSuccess()==True:
           analyzer.GetFaceSearchCollectionResults()
   ```

------

   Si vous avez déjà exécuté un exemple vidéo autre que [Analyse d’une vidéo stockée dans un compartiment Amazon S3 avec Java or Python (SDK)](video-analyzing-with-sqs.md), le code à remplacer peut être différent.

1. Remplacez la valeur de `collection` par le nom de la collection que vous avez créée à l’étape 1.

1. Exécutez le code. Une liste des personnes présentes dans la vidéo dont les visages correspondent à ceux de la collection d’entrée s’affiche à l’écran. Les données de suivi pour chaque personne faisant l’objet d’une correspondance sont également affichées.

## GetFaceSearch réponse à l'opération
<a name="searchfacesvideo-operation-response"></a>

Vous trouverez ci-dessous un exemple de réponse JSON de `GetFaceSearch`.

La réponse inclut un tableau des personnes (`Persons`) détectées dans la vidéo parce que leur visage correspondait à un visage de la collection d’entrée. Un élément de liste, [PersonMatch](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_PersonMatch.html), existe pour chaque occurrence de détection d'une personne dans la vidéo. Chaque `PersonMatch` comprend une liste de correspondances de visages provenant de la collection d'entrée, [FaceMatch](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_FaceMatch.html), des informations sur la personne correspondante, [PersonDetail](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_PersonDetail.html), et l'heure où la personne a été détectée comme étant une correspondance dans la vidéo. 

```
{
    "JobStatus": "SUCCEEDED",
    "NextToken": "IJdbzkZfvBRqj8GPV82BPiZKkLOGCqDIsNZG/gQsEE5faTVK9JHOz/xxxxxxxxxxxxxxx",
    "Persons": [
        {
            "FaceMatches": [
                {
                    "Face": {
                        "BoundingBox": {
                            "Height": 0.527472972869873,
                            "Left": 0.33530598878860474,
                            "Top": 0.2161169946193695,
                            "Width": 0.35503000020980835
                        },
                        "Confidence": 99.90239715576172,
                        "ExternalImageId": "image.PNG",
                        "FaceId": "a2f2e224-bfaa-456c-b360-7c00241e5e2d",
                        "ImageId": "eb57ed44-8d8d-5ec5-90b8-6d190daff4c3"
                    },
                    "Similarity": 98.40909576416016
                }
            ],
            "Person": {
                "BoundingBox": {
                    "Height": 0.8694444298744202,
                    "Left": 0.2473958283662796,
                    "Top": 0.10092592239379883,
                    "Width": 0.49427083134651184
                },
                "Face": {
                    "BoundingBox": {
                        "Height": 0.23000000417232513,
                        "Left": 0.42500001192092896,
                        "Top": 0.16333332657814026,
                        "Width": 0.12937499582767487
                    },
                    "Confidence": 99.97504425048828,
                    "Landmarks": [
                        {
                            "Type": "eyeLeft",
                            "X": 0.46415066719055176,
                            "Y": 0.2572723925113678
                        },
                        {
                            "Type": "eyeRight",
                            "X": 0.5068183541297913,
                            "Y": 0.23705792427062988
                        },
                        {
                            "Type": "nose",
                            "X": 0.49765899777412415,
                            "Y": 0.28383663296699524
                        },
                        {
                            "Type": "mouthLeft",
                            "X": 0.487221896648407,
                            "Y": 0.3452930748462677
                        },
                        {
                            "Type": "mouthRight",
                            "X": 0.5142884850502014,
                            "Y": 0.33167609572410583
                        }
                    ],
                    "Pose": {
                        "Pitch": 15.966927528381348,
                        "Roll": -15.547388076782227,
                        "Yaw": 11.34195613861084
                    },
                    "Quality": {
                        "Brightness": 44.80223083496094,
                        "Sharpness": 99.95819854736328
                    }
                },
                "Index": 0
            },
            "Timestamp": 0
        },
        {
            "Person": {
                "BoundingBox": {
                    "Height": 0.2177777737379074,
                    "Left": 0.7593749761581421,
                    "Top": 0.13333334028720856,
                    "Width": 0.12250000238418579
                },
                "Face": {
                    "BoundingBox": {
                        "Height": 0.2177777737379074,
                        "Left": 0.7593749761581421,
                        "Top": 0.13333334028720856,
                        "Width": 0.12250000238418579
                    },
                    "Confidence": 99.63436889648438,
                    "Landmarks": [
                        {
                            "Type": "eyeLeft",
                            "X": 0.8005779385566711,
                            "Y": 0.20915353298187256
                        },
                        {
                            "Type": "eyeRight",
                            "X": 0.8391435146331787,
                            "Y": 0.21049551665782928
                        },
                        {
                            "Type": "nose",
                            "X": 0.8191410899162292,
                            "Y": 0.2523227035999298
                        },
                        {
                            "Type": "mouthLeft",
                            "X": 0.8093273043632507,
                            "Y": 0.29053622484207153
                        },
                        {
                            "Type": "mouthRight",
                            "X": 0.8366993069648743,
                            "Y": 0.29101791977882385
                        }
                    ],
                    "Pose": {
                        "Pitch": 3.165884017944336,
                        "Roll": 1.4182015657424927,
                        "Yaw": -11.151537895202637
                    },
                    "Quality": {
                        "Brightness": 28.910892486572266,
                        "Sharpness": 97.61507415771484
                    }
                },
                "Index": 1
            },
            "Timestamp": 0
        },
        {
            "Person": {
                "BoundingBox": {
                    "Height": 0.8388888835906982,
                    "Left": 0,
                    "Top": 0.15833333134651184,
                    "Width": 0.2369791716337204
                },
                "Face": {
                    "BoundingBox": {
                        "Height": 0.20000000298023224,
                        "Left": 0.029999999329447746,
                        "Top": 0.2199999988079071,
                        "Width": 0.11249999701976776
                    },
                    "Confidence": 99.85971069335938,
                    "Landmarks": [
                        {
                            "Type": "eyeLeft",
                            "X": 0.06842322647571564,
                            "Y": 0.3010137975215912
                        },
                        {
                            "Type": "eyeRight",
                            "X": 0.10543643683195114,
                            "Y": 0.29697132110595703
                        },
                        {
                            "Type": "nose",
                            "X": 0.09569807350635529,
                            "Y": 0.33701086044311523
                        },
                        {
                            "Type": "mouthLeft",
                            "X": 0.0732642263174057,
                            "Y": 0.3757539987564087
                        },
                        {
                            "Type": "mouthRight",
                            "X": 0.10589495301246643,
                            "Y": 0.3722417950630188
                        }
                    ],
                    "Pose": {
                        "Pitch": -0.5589138865470886,
                        "Roll": -5.1093974113464355,
                        "Yaw": 18.69594955444336
                    },
                    "Quality": {
                        "Brightness": 43.052337646484375,
                        "Sharpness": 99.68138885498047
                    }
                },
                "Index": 2
            },
            "Timestamp": 0
        }......

    ],
    "VideoMetadata": {
        "Codec": "h264",
        "DurationMillis": 67301,
        "Format": "QuickTime / MOV",
        "FrameHeight": 1080,
        "FrameRate": 29.970029830932617,
        "FrameWidth": 1920
    }
}
```

# Recherche de visages dans une collection en vidéo streaming
<a name="collections-streaming"></a>

Vous pouvez utiliser Vidéo Amazon Rekognition pour détecter et reconnaître des visages dans une collection de vidéos diffusées en streaming. Avec Amazon Rekognition Video, vous pouvez créer un processeur de flux [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html)() pour démarrer et gérer l'analyse du streaming vidéo. 

Pour détecter un visage connu dans un flux vidéo (recherche faciale), Vidéo Amazon Rekognition utilise Amazon Kinesis Video Streams pour recevoir et traiter un flux vidéo. Les résultats d’analyse représentent une sortie de Vidéo Amazon Rekognition vers un flux de données Kinesis, ensuite lue par votre application cliente. 

Pour utiliser Vidéo Amazon Rekognition avec une vidéo en streaming, votre application doit implémenter les éléments suivants :
+ Un flux vidéo Kinesis pour envoyer des vidéos en streaming à Vidéo Amazon Rekognition. Pour plus d’informations, consultez le [Guide du développeur Amazon Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html). 
+ Un processeur de flux Vidéo Amazon Rekognition pour gérer l’analyse de la vidéo en streaming. Pour de plus amples informations, veuillez consulter [Présentation des opérations du processeur de flux Vidéo Amazon Rekognition](streaming-video.md#using-rekognition-video-stream-processor).
+ Un consommateur de flux de données Kinesis chargé de lire les résultats d’analyse que Vidéo Amazon Rekognition envoie au flux de données Kinesis. Pour plus d’informations, consultez [Consommateurs de flux de données Kinesis](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-consumers.html). 

Cette section contient des informations sur la création d’une application qui crée le flux vidéo Kinesis et les autres ressources nécessaires, diffuse des vidéos sur Vidéo Amazon Rekognition et reçoit les résultats de l’analyse.

**Topics**
+ [Configuration de vos ressources Vidéo Amazon Rekognition et Amazon Kinesis](setting-up-your-amazon-rekognition-streaming-video-resources.md)
+ [Recherche de visages dans une vidéo en streaming](rekognition-video-stream-processor-search-faces.md)
+ [Streaming à l'aide d'un GStreamer plugin](streaming-using-gstreamer-plugin.md)
+ [Résolution des problèmes de streaming vidéo](streaming-video-troubleshooting.md)

# Configuration de vos ressources Vidéo Amazon Rekognition et Amazon Kinesis
<a name="setting-up-your-amazon-rekognition-streaming-video-resources"></a>

 Les procédures suivantes décrivent les étapes à suivre pour approvisionner le flux vidéo Kinesis et les autres ressources utilisées pour reconnaître les visages dans une vidéo en streaming.

## Conditions préalables
<a name="streaming-video-prerequisites"></a>

Pour exécuter cette procédure, vous devez l'avoir AWS SDK pour Java installé. Pour de plus amples informations, veuillez consulter [Premiers pas avec Amazon Rekognition](getting-started.md). L'utilisateur Compte AWS que vous utilisez doit disposer d'autorisations d'accès à l'API Amazon Rekognition. Pour de plus amples informations, veuillez consulter [Actions définies par Amazon Rekognition](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonrekognition.html#amazonrekognition-actions-as-permissions) dans le *Guide de l’utilisateur IAM*. 

**Pour reconnaître des visages dans un flux vidéo (AWS SDK)**

1. Si ce n’est pas déjà fait, créez une fonction du service IAM pour permettre à Vidéo Amazon Rekognition d’accéder à vos flux vidéo Kinesis et à vos flux de données Kinesis. Notez l’ARN. Pour de plus amples informations, veuillez consulter [Donner accès aux streams à l'aide de AmazonRekognitionServiceRole](api-streaming-video-roles.md#api-streaming-video-roles-all-stream).

1. [Créez une collection](create-collection-procedure.md) et notez l’identifiant de collection que vous avez utilisé.

1. [Indexez les visages](add-faces-to-collection-procedure.md) à rechercher dans la collection que vous avez créée lors de l’étape 2.

1. [Créez un flux vidéo stream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-createstream.html) et notez l’Amazon Resource Name (ARN) du flux.

1. [Créer un flux de données Kinesis](https://docs.aws.amazon.com/streams/latest/dev/learning-kinesis-module-one-create-stream.html). Ajoutez le nom du flux au début *AmazonRekognition*et notez l'ARN du flux.

Vous pouvez ensuite [créer le processeur de flux de recherche faciale](rekognition-video-stream-processor-search-faces.md#streaming-video-creating-stream-processor) et [démarrer le processeur de flux](rekognition-video-stream-processor-search-faces.md#streaming-video-starting-stream-processor) en utilisant le nom de processeur de flux que vous avez choisi.

**Note**  
 Vous ne devez démarrer le processeur de diffusion qu’après avoir vérifié que vous pouvez intégrer du contenu multimédia dans le flux vidéo Kinesis. 

## Diffusion de vidéos sur Vidéo Amazon Rekognition
<a name="video-streaming-kinesisvideostreams-stream"></a>

Pour diffuser une vidéo dans Vidéo Amazon Rekognition, vous devez utiliser le SDK Amazon Kinesis Video Streams pour créer et utiliser un flux vidéo Kinesis. L’opération `PutMedia` écrit des *fragments* de données vidéo dans un flux vidéo utilisé par Vidéo Amazon Rekognition. Chaque fragment de donnée vidéo dure environ 2–10 secondes et contient une trame d’images vidéo autonome. Vidéo Amazon Rekognition prend en charge les vidéos encodées en H.264, qui peuvent avoir trois types de trames (I, B et P). Pour en savoir plus, consultez [Inter Frame](https://en.wikipedia.org/wiki/Inter_frame). La première trame dans le fragment doit être une I-frame. Une I-frame peut être décodée indépendamment de n’importe quelle autre trame. 

Au fur et à mesure que les données arrivent dans le flux vidéo Kinesis, Kinesis Video Streams attribue un numéro unique au fragment. Pour un exemple, voir [Exemple PutMedia d'API](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-putmedia.html).
+  Si vous diffusez à partir d'une source codée en Matroska (MKV), utilisez cette [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)opération pour diffuser la vidéo source dans le flux vidéo Kinesis que vous avez créé. Pour plus d'informations, consultez [PutMedia l'exemple d'API](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-putmedia.html). 
+  Si vous diffusez à partir de la caméra d’un appareil, consultez [Streaming à l'aide d'un GStreamer plugin](streaming-using-gstreamer-plugin.md).

# Octroi à Vidéo Amazon Rekognition d’un accès à vos ressources
<a name="api-streaming-video-roles"></a>

Vous utilisez un rôle de service Gestion des identités et des accès AWS (IAM) pour donner à Amazon Rekognition Video un accès en lecture aux flux vidéo Kinesis. Si vous utilisez un processeur de flux de recherche faciale, vous utilisez une fonction du service IAM pour autoriser Vidéo Amazon Rekognition à accéder en écriture aux flux de données Kinesis. Si vous utilisez un processeur de flux de surveillance de la sécurité, vous utilisez des rôles IAM pour permettre à Vidéo Amazon Rekognition d’accéder à votre compartiment Amazon S3 et à une rubrique Amazon SNS.

## Octroi d’un accès aux processeurs de flux de recherche faciale
<a name="api-streaming-video-roles-single-stream"></a>

Vous pouvez créer une politique d’autorisation qui autorise Vidéo Amazon Rekognition à accéder à des flux vidéo et à des flux de données Kinesis individuels.

**Pour autoriser Vidéo Amazon Rekognition d’accéder à un processeur de flux de recherche faciale**

1. [ Créez une nouvelle stratégie d’autorisations avec l’éditeur de stratégie IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor), et utilisez la stratégie suivante. Remplacez `video-arn` par l’ARN du flux vidéo Kinesis souhaité. Si vous utilisez un processeur de flux de recherche faciale, remplacez `data-arn` par l’ARN du flux de données Kinesis souhaité.

1. [Créez une fonction du service IAM;](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html?icmpid=docs_iam_console), ou mettez à jour une fonction du service IAM existant. Utilisez les informations suivantes pour créer la fonction du service IAM :

   1. Choisissez **Rekognition** pour le nom du service.

   1. Choisissez **Rekognition** pour le cas d’utilisation de la fonction de service.

   1. Attachez la stratégie d’autorisations que vous avez créée à l’étape 1.

1. Notez l’ARN de la fonction du service. Vous en aurez besoin pour démarrer les opérations d’analyse vidéo.

## Donner accès aux streams à l'aide de AmazonRekognitionServiceRole
<a name="api-streaming-video-roles-all-stream"></a>

 Vous pouvez utiliser la politique d’autorisation `AmazonRekognitionServiceRole` comme option alternative pour configurer l’accès aux flux vidéo et aux flux de données Kinesis. IAM présente le cas d’utilisation de la fonction du service *Rekognition* qui, lorsqu’elle est utilisée avec la stratégie d’autorisations `AmazonRekognitionServiceRole`, peut écrire dans plusieurs flux de données Kinesis et lire à partir de tous vos flux de données Kinesis. Pour permettre à Amazon Rekognition Video d'accéder en écriture à plusieurs flux de données Kinesis, vous pouvez ajouter, par exemple, au début des noms des flux de données Kinesis. *AmazonRekognition*`AmazonRekognitionMyDataStreamName` 

**Pour autoriser Vidéo Amazon Rekognition à accéder à votre flux vidéo Kinesis et à votre flux de données Kinesis**

1. [Créez une fonction du service IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html?icmpid=docs_iam_console). Utilisez les informations suivantes pour créer la fonction du service IAM :

   1. Choisissez **Rekognition** pour le nom du service.

   1. Choisissez **Rekognition** pour le cas d’utilisation de la fonction de service.

   1. Choisissez la politique **AmazonRekognitionServiceRole**d'autorisation, qui donne à Amazon Rekognition Video un accès en écriture aux flux de données Kinesis préfixés *AmazonRekognition*et un accès en lecture à tous vos flux vidéo Kinesis.

1. Pour garantir votre Compte AWS sécurité, limitez l'étendue de l'accès de Rekognition aux seules ressources que vous utilisez. Pour ce faire, attachez une politique de confiance à votre fonction du service IAM. Pour plus d’informations sur la procédure à utiliser, consultez [Prévention du problème de l’adjoint confus entre services](cross-service-confused-deputy-prevention.md).

1. Notez l’Amazon Resource Name (ARN) de la fonction du service. Vous en aurez besoin pour démarrer les opérations d’analyse vidéo.

# Recherche de visages dans une vidéo en streaming
<a name="rekognition-video-stream-processor-search-faces"></a>

Vidéo Amazon Rekognition peut rechercher, dans une collection, des visages qui correspondent à des visages ayant été détectés dans une vidéo en streaming. Pour en savoir plus sur les collections, consultez [Recherche de visages dans une collection](collections.md).

**Topics**
+ [Création du processeur de flux de recherche faciale Vidéo Amazon Rekognition](#streaming-video-creating-stream-processor)
+ [Démarrage du processeur de flux de recherche faciale Vidéo Amazon Rekognition](#streaming-video-starting-stream-processor)
+ [Utilisation de processeurs de flux pour la recherche faciale (exemple Java V2)](#using-stream-processors-v2)
+ [Utilisation de processeurs de flux pour la recherche faciale (exemple Java V1)](#using-stream-processors)
+ [Lecture des résultats d’analyse de vidéo en streaming](streaming-video-kinesis-output.md)
+ [Afficher les résultats de Rekognition avec Kinesis Video Streams en local](displaying-rekognition-results-locally.md)
+ [Comprendre l'enregistrement de trame JSON de reconnaissance faciale Kinesis](streaming-video-kinesis-output-reference.md)

Le diagramme suivant montre comment Vidéo Amazon Rekognition; détecte et reconnaît les visages dans une vidéo en streaming.

![\[Schéma du flux de travail pour l'utilisation d'Amazon Rekognition Video pour traiter des flux vidéo provenant d'Amazon Kinesis.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/dg/images/VideoRekognitionStream.png)


## Création du processeur de flux de recherche faciale Vidéo Amazon Rekognition
<a name="streaming-video-creating-stream-processor"></a>

Avant de pouvoir analyser une vidéo en streaming, vous devez créer un processeur de streaming Amazon Rekognition Video (). [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html) Le processeur de flux contient des informations sur le flux de données Kinesis et le flux vidéo Kinesis. Il comprend également l’identifiant de la collection contenant les visages que vous voulez reconnaître dans la vidéo en streaming d’entrée. Vous définissez aussi un nom pour le processeur de flux. L’exemple suivant est un exemple JSON de requête `CreateStreamProcessor`.

```
{
       "Name": "streamProcessorForCam",
       "Input": {
              "KinesisVideoStream": {
                     "Arn": "arn:aws:kinesisvideo:us-east-1:nnnnnnnnnnnn:stream/inputVideo"
              }
       },
       "Output": {
              "KinesisDataStream": {
                     "Arn": "arn:aws:kinesis:us-east-1:nnnnnnnnnnnn:stream/outputData"
              }
       },
       "RoleArn": "arn:aws:iam::nnnnnnnnnnn:role/roleWithKinesisPermission",
       "Settings": {
              "FaceSearch": {
                     "CollectionId": "collection-with-100-faces",
                     "FaceMatchThreshold": 85.5
              }
       }
}
```

Voici un exemple de réponse de `CreateStreamProcessor`.

```
{
       “StreamProcessorArn”: “arn:aws:rekognition:us-east-1:nnnnnnnnnnnn:streamprocessor/streamProcessorForCam”
}
```

## Démarrage du processeur de flux de recherche faciale Vidéo Amazon Rekognition
<a name="streaming-video-starting-stream-processor"></a>

Pour démarrer l'analyse de vidéo en streaming, appelez [StartStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartStreamProcessor.html) avec le nom de processeur de flux que vous avez spécifié dans `CreateStreamProcessor`. L’exemple suivant est un exemple JSON de requête `StartStreamProcessor`.

```
{
       "Name": "streamProcessorForCam"
}
```

Si le processeur de flux démarre avec succès, une réponse HTTP 200 est renvoyée avec un corps de JSON vide.

## Utilisation de processeurs de flux pour la recherche faciale (exemple Java V2)
<a name="using-stream-processors-v2"></a>

L'exemple de code suivant montre comment appeler diverses opérations du processeur de flux, telles que [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html)et [StartStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartStreamProcessor.html), à l'aide du AWS SDK pour Java version 2.

Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet [ici](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/CreateStreamProcessor.java).

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.rekognition.RekognitionClient;
import software.amazon.awssdk.services.rekognition.model.CreateStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.CreateStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.FaceSearchSettings;
import software.amazon.awssdk.services.rekognition.model.KinesisDataStream;
import software.amazon.awssdk.services.rekognition.model.KinesisVideoStream;
import software.amazon.awssdk.services.rekognition.model.ListStreamProcessorsRequest;
import software.amazon.awssdk.services.rekognition.model.ListStreamProcessorsResponse;
import software.amazon.awssdk.services.rekognition.model.RekognitionException;
import software.amazon.awssdk.services.rekognition.model.StreamProcessor;
import software.amazon.awssdk.services.rekognition.model.StreamProcessorInput;
import software.amazon.awssdk.services.rekognition.model.StreamProcessorSettings;
import software.amazon.awssdk.services.rekognition.model.StreamProcessorOutput;
import software.amazon.awssdk.services.rekognition.model.StartStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeStreamProcessorResponse;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 * <p>
 * For more information, see the following documentation topic:
 * <p>
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class CreateStreamProcessor {
    public static void main(String[] args) {
        final String usage = """
                
                Usage:    <role> <kinInputStream> <kinOutputStream> <collectionName> <StreamProcessorName>
                
                Where:
                   role - The ARN of the AWS Identity and Access Management (IAM) role to use. \s
                   kinInputStream - The ARN of the Kinesis video stream.\s
                   kinOutputStream - The ARN of the Kinesis data stream.\s
                   collectionName - The name of the collection to use that contains content. \s
                   StreamProcessorName - The name of the Stream Processor. \s
                """;

        if (args.length != 5) {
            System.out.println(usage);
            System.exit(1);
        }

        String role = args[0];
        String kinInputStream = args[1];
        String kinOutputStream = args[2];
        String collectionName = args[3];
        String streamProcessorName = args[4];

        Region region = Region.US_EAST_1;
        RekognitionClient rekClient = RekognitionClient.builder()
                .region(region)
                .build();

        processCollection(rekClient, streamProcessorName, kinInputStream, kinOutputStream, collectionName,
                role);
        startSpecificStreamProcessor(rekClient, streamProcessorName);
        listStreamProcessors(rekClient);
        describeStreamProcessor(rekClient, streamProcessorName);
        deleteSpecificStreamProcessor(rekClient, streamProcessorName);
    }

    public static void listStreamProcessors(RekognitionClient rekClient) {
        ListStreamProcessorsRequest request = ListStreamProcessorsRequest.builder()
                .maxResults(15)
                .build();

        ListStreamProcessorsResponse listStreamProcessorsResult = rekClient.listStreamProcessors(request);
        for (StreamProcessor streamProcessor : listStreamProcessorsResult.streamProcessors()) {
            System.out.println("StreamProcessor name - " + streamProcessor.name());
            System.out.println("Status - " + streamProcessor.status());
        }
    }

    private static void describeStreamProcessor(RekognitionClient rekClient, String StreamProcessorName) {
        DescribeStreamProcessorRequest streamProcessorRequest = DescribeStreamProcessorRequest.builder()
                .name(StreamProcessorName)
                .build();

        DescribeStreamProcessorResponse describeStreamProcessorResult = rekClient
                .describeStreamProcessor(streamProcessorRequest);
        System.out.println("Arn - " + describeStreamProcessorResult.streamProcessorArn());
        System.out.println("Input kinesisVideo stream - "
                + describeStreamProcessorResult.input().kinesisVideoStream().arn());
        System.out.println("Output kinesisData stream - "
                + describeStreamProcessorResult.output().kinesisDataStream().arn());
        System.out.println("RoleArn - " + describeStreamProcessorResult.roleArn());
        System.out.println(
                "CollectionId - "
                        + describeStreamProcessorResult.settings().faceSearch().collectionId());
        System.out.println("Status - " + describeStreamProcessorResult.status());
        System.out.println("Status message - " + describeStreamProcessorResult.statusMessage());
        System.out.println("Creation timestamp - " + describeStreamProcessorResult.creationTimestamp());
        System.out.println("Last update timestamp - " + describeStreamProcessorResult.lastUpdateTimestamp());
    }

    private static void startSpecificStreamProcessor(RekognitionClient rekClient, String StreamProcessorName) {
        try {
            StartStreamProcessorRequest streamProcessorRequest = StartStreamProcessorRequest.builder()
                    .name(StreamProcessorName)
                    .build();

            rekClient.startStreamProcessor(streamProcessorRequest);
            System.out.println("Stream Processor " + StreamProcessorName + " started.");

        } catch (RekognitionException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }

    private static void processCollection(RekognitionClient rekClient, String StreamProcessorName,
                                          String kinInputStream, String kinOutputStream, String collectionName, String role) {
        try {
            KinesisVideoStream videoStream = KinesisVideoStream.builder()
                    .arn(kinInputStream)
                    .build();

            KinesisDataStream dataStream = KinesisDataStream.builder()
                    .arn(kinOutputStream)
                    .build();

            StreamProcessorOutput processorOutput = StreamProcessorOutput.builder()
                    .kinesisDataStream(dataStream)
                    .build();

            StreamProcessorInput processorInput = StreamProcessorInput.builder()
                    .kinesisVideoStream(videoStream)
                    .build();

            FaceSearchSettings searchSettings = FaceSearchSettings.builder()
                    .faceMatchThreshold(75f)
                    .collectionId(collectionName)
                    .build();

            StreamProcessorSettings processorSettings = StreamProcessorSettings.builder()
                    .faceSearch(searchSettings)
                    .build();

            CreateStreamProcessorRequest processorRequest = CreateStreamProcessorRequest.builder()
                    .name(StreamProcessorName)
                    .input(processorInput)
                    .output(processorOutput)
                    .roleArn(role)
                    .settings(processorSettings)
                    .build();

            CreateStreamProcessorResponse response = rekClient.createStreamProcessor(processorRequest);
            System.out.println("The ARN for the newly create stream processor is "
                    + response.streamProcessorArn());

        } catch (RekognitionException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }

    private static void deleteSpecificStreamProcessor(RekognitionClient rekClient, String StreamProcessorName) {
        rekClient.stopStreamProcessor(a -> a.name(StreamProcessorName));
        rekClient.deleteStreamProcessor(a -> a.name(StreamProcessorName));
        System.out.println("Stream Processor " + StreamProcessorName + " deleted.");
    }
}
```

## Utilisation de processeurs de flux pour la recherche faciale (exemple Java V1)
<a name="using-stream-processors"></a>

L'exemple de code suivant montre comment appeler diverses opérations du processeur de flux, telles que [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html)et [StartStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartStreamProcessor.html), à l'aide de Java V1. L'exemple inclut une classe de gestionnaire de processeur de flux (StreamManager) qui fournit des méthodes pour appeler les opérations du processeur de flux. La classe de démarrage (Starter) crée un StreamManager objet et appelle diverses opérations. 

**Pour configurer l’exemple:**

1. Attribuez les valeurs souhaitées aux champs de membre de la classe Starter.

1. Dans la fonction `main` de la classe Starter, supprimez la mise en commentaire de l’appel de fonction souhaité.

### Classe Starter
<a name="streaming-started"></a>

```
//Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)

// Starter class. Use to create a StreamManager class
// and call stream processor operations.
package com.amazonaws.samples;
import com.amazonaws.samples.*;

public class Starter {

	public static void main(String[] args) {
		
		
    	String streamProcessorName="Stream Processor Name";
    	String kinesisVideoStreamArn="Kinesis Video Stream Arn";
    	String kinesisDataStreamArn="Kinesis Data Stream Arn";
    	String roleArn="Role Arn";
    	String collectionId="Collection ID";
    	Float matchThreshold=50F;

		try {
			StreamManager sm= new StreamManager(streamProcessorName,
					kinesisVideoStreamArn,
					kinesisDataStreamArn,
					roleArn,
					collectionId,
					matchThreshold);
			//sm.createStreamProcessor();
			//sm.startStreamProcessor();
			//sm.deleteStreamProcessor();
			//sm.deleteStreamProcessor();
			//sm.stopStreamProcessor();
			//sm.listStreamProcessors();
			//sm.describeStreamProcessor();
		}
		catch(Exception e){
			System.out.println(e.getMessage());
		}
	}
}
```

### StreamManager classe
<a name="streaming-manager"></a>

```
//Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)

// Stream manager class. Provides methods for calling
// Stream Processor operations.
package com.amazonaws.samples;

import com.amazonaws.services.rekognition.AmazonRekognition;
import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
import com.amazonaws.services.rekognition.model.CreateStreamProcessorRequest;
import com.amazonaws.services.rekognition.model.CreateStreamProcessorResult;
import com.amazonaws.services.rekognition.model.DeleteStreamProcessorRequest;
import com.amazonaws.services.rekognition.model.DeleteStreamProcessorResult;
import com.amazonaws.services.rekognition.model.DescribeStreamProcessorRequest;
import com.amazonaws.services.rekognition.model.DescribeStreamProcessorResult;
import com.amazonaws.services.rekognition.model.FaceSearchSettings;
import com.amazonaws.services.rekognition.model.KinesisDataStream;
import com.amazonaws.services.rekognition.model.KinesisVideoStream;
import com.amazonaws.services.rekognition.model.ListStreamProcessorsRequest;
import com.amazonaws.services.rekognition.model.ListStreamProcessorsResult;
import com.amazonaws.services.rekognition.model.StartStreamProcessorRequest;
import com.amazonaws.services.rekognition.model.StartStreamProcessorResult;
import com.amazonaws.services.rekognition.model.StopStreamProcessorRequest;
import com.amazonaws.services.rekognition.model.StopStreamProcessorResult;
import com.amazonaws.services.rekognition.model.StreamProcessor;
import com.amazonaws.services.rekognition.model.StreamProcessorInput;
import com.amazonaws.services.rekognition.model.StreamProcessorOutput;
import com.amazonaws.services.rekognition.model.StreamProcessorSettings;

public class StreamManager {

    private String streamProcessorName;
    private String kinesisVideoStreamArn;
    private String kinesisDataStreamArn;
    private String roleArn;
    private String collectionId;
    private float matchThreshold;

    private AmazonRekognition rekognitionClient;
    

    public StreamManager(String spName,
    		String kvStreamArn,
    		String kdStreamArn,
    		String iamRoleArn,
    		String collId,
    		Float threshold){
    	streamProcessorName=spName;
    	kinesisVideoStreamArn=kvStreamArn;
    	kinesisDataStreamArn=kdStreamArn;
    	roleArn=iamRoleArn;
    	collectionId=collId;
    	matchThreshold=threshold;
    	rekognitionClient=AmazonRekognitionClientBuilder.defaultClient();
    	
    }
    
    public void createStreamProcessor() {
    	//Setup input parameters
        KinesisVideoStream kinesisVideoStream = new KinesisVideoStream().withArn(kinesisVideoStreamArn);
        StreamProcessorInput streamProcessorInput =
                new StreamProcessorInput().withKinesisVideoStream(kinesisVideoStream);
        KinesisDataStream kinesisDataStream = new KinesisDataStream().withArn(kinesisDataStreamArn);
        StreamProcessorOutput streamProcessorOutput =
                new StreamProcessorOutput().withKinesisDataStream(kinesisDataStream);
        FaceSearchSettings faceSearchSettings =
                new FaceSearchSettings().withCollectionId(collectionId).withFaceMatchThreshold(matchThreshold);
        StreamProcessorSettings streamProcessorSettings =
                new StreamProcessorSettings().withFaceSearch(faceSearchSettings);

        //Create the stream processor
        CreateStreamProcessorResult createStreamProcessorResult = rekognitionClient.createStreamProcessor(
                new CreateStreamProcessorRequest().withInput(streamProcessorInput).withOutput(streamProcessorOutput)
                        .withSettings(streamProcessorSettings).withRoleArn(roleArn).withName(streamProcessorName));

        //Display result
        System.out.println("Stream Processor " + streamProcessorName + " created.");
        System.out.println("StreamProcessorArn - " + createStreamProcessorResult.getStreamProcessorArn());
    }

    public void startStreamProcessor() {
        StartStreamProcessorResult startStreamProcessorResult =
                rekognitionClient.startStreamProcessor(new StartStreamProcessorRequest().withName(streamProcessorName));
        System.out.println("Stream Processor " + streamProcessorName + " started.");
    }

    public void stopStreamProcessor() {
        StopStreamProcessorResult stopStreamProcessorResult =
                rekognitionClient.stopStreamProcessor(new StopStreamProcessorRequest().withName(streamProcessorName));
        System.out.println("Stream Processor " + streamProcessorName + " stopped.");
    }

    public void deleteStreamProcessor() {
        DeleteStreamProcessorResult deleteStreamProcessorResult = rekognitionClient
                .deleteStreamProcessor(new DeleteStreamProcessorRequest().withName(streamProcessorName));
        System.out.println("Stream Processor " + streamProcessorName + " deleted.");
    }

    public void describeStreamProcessor() {
        DescribeStreamProcessorResult describeStreamProcessorResult = rekognitionClient
                .describeStreamProcessor(new DescribeStreamProcessorRequest().withName(streamProcessorName));

        //Display various stream processor attributes.
        System.out.println("Arn - " + describeStreamProcessorResult.getStreamProcessorArn());
        System.out.println("Input kinesisVideo stream - "
                + describeStreamProcessorResult.getInput().getKinesisVideoStream().getArn());
        System.out.println("Output kinesisData stream - "
                + describeStreamProcessorResult.getOutput().getKinesisDataStream().getArn());
        System.out.println("RoleArn - " + describeStreamProcessorResult.getRoleArn());
        System.out.println(
                "CollectionId - " + describeStreamProcessorResult.getSettings().getFaceSearch().getCollectionId());
        System.out.println("Status - " + describeStreamProcessorResult.getStatus());
        System.out.println("Status message - " + describeStreamProcessorResult.getStatusMessage());
        System.out.println("Creation timestamp - " + describeStreamProcessorResult.getCreationTimestamp());
        System.out.println("Last update timestamp - " + describeStreamProcessorResult.getLastUpdateTimestamp());
    }

    public void listStreamProcessors() {
        ListStreamProcessorsResult listStreamProcessorsResult =
                rekognitionClient.listStreamProcessors(new ListStreamProcessorsRequest().withMaxResults(100));

        //List all stream processors (and state) returned from Rekognition
        for (StreamProcessor streamProcessor : listStreamProcessorsResult.getStreamProcessors()) {
            System.out.println("StreamProcessor name - " + streamProcessor.getName());
            System.out.println("Status - " + streamProcessor.getStatus());
        }
    }
}
```

# Lecture des résultats d’analyse de vidéo en streaming
<a name="streaming-video-kinesis-output"></a>

Vous pouvez utiliser la bibliothèque client Amazon Kinesis Data Streams pour consommer des résultats d’analyse envoyés vers le flux de sortie Amazon Kinesis Data Streams. Pour en savoir plus, consultez [Lecture de données d’un flux de données Kinesis](https://docs.aws.amazon.com/streams/latest/dev/building-consumers.html). Vidéo Amazon Rekognition place un enregistrement de trame JSON pour chaque trame analysée dans le flux de sortie Kinesis. Vidéo Amazon Rekognition n’analyse pas toutes les images qui lui sont transmises via le flux vidéo Kinesis. 

Un enregistrement de trame envoyé à un flux de données Kinesis comprend des informations sur le fragment de flux vidéo Kinesis où se trouve la trame dans le fragment et les visages reconnus dans la trame. Il inclut également des informations de statut pour le processeur de flux. Pour de plus amples informations, veuillez consulter [Comprendre l'enregistrement de trame JSON de reconnaissance faciale Kinesis](streaming-video-kinesis-output-reference.md).

La bibliothèque d’analyseurs Amazon Kinesis Video Streams contient des exemples de tests qui utilisent les résultats de Vidéo Amazon Rekognition et les intègre au flux vidéo Kinesis d’origine. Pour de plus amples informations, veuillez consulter [Afficher les résultats de Rekognition avec Kinesis Video Streams en local](displaying-rekognition-results-locally.md).

Vidéo Amazon Rekognition diffuse les informations d’analyse Vidéo Amazon Rekognition vers le flux de données Kinesis. L’exemple suivant est un exemple JSON pour un enregistrement unique. 

```
{
  "InputInformation": {
    "KinesisVideo": {
      "StreamArn": "arn:aws:kinesisvideo:us-west-2:nnnnnnnnnnnn:stream/stream-name",
      "FragmentNumber": "91343852333289682796718532614445757584843717598",
      "ServerTimestamp": 1510552593.455,
      "ProducerTimestamp": 1510552593.193,
      "FrameOffsetInSeconds": 2
    }
  },
  "StreamProcessorInformation": {
    "Status": "RUNNING"
  },
  "FaceSearchResponse": [
    {
      "DetectedFace": {
        "BoundingBox": {
          "Height": 0.075,
          "Width": 0.05625,
          "Left": 0.428125,
          "Top": 0.40833333
        },
        "Confidence": 99.975174,
        "Landmarks": [
          {
            "X": 0.4452057,
            "Y": 0.4395594,
            "Type": "eyeLeft"
          },
          {
            "X": 0.46340984,
            "Y": 0.43744427,
            "Type": "eyeRight"
          },
          {
            "X": 0.45960626,
            "Y": 0.4526856,
            "Type": "nose"
          },
          {
            "X": 0.44958648,
            "Y": 0.4696949,
            "Type": "mouthLeft"
          },
          {
            "X": 0.46409217,
            "Y": 0.46704912,
            "Type": "mouthRight"
          }
        ],
        "Pose": {
          "Pitch": 2.9691637,
          "Roll": -6.8904796,
          "Yaw": 23.84388
        },
        "Quality": {
          "Brightness": 40.592964,
          "Sharpness": 96.09616
        }
      },
      "MatchedFaces": [
        {
          "Similarity": 88.863960,
          "Face": {
            "BoundingBox": {
              "Height": 0.557692,
              "Width": 0.749838,
              "Left": 0.103426,
              "Top": 0.206731
            },
            "FaceId": "ed1b560f-d6af-5158-989a-ff586c931545",
            "Confidence": 99.999201,
            "ImageId": "70e09693-2114-57e1-807c-50b6d61fa4dc",
            "ExternalImageId": "matchedImage.jpeg"
          }
        }
      ]
    }
  ]
}
```

Dans l’exemple JSON, notez les éléments suivants :
+ **InputInformation**— Informations sur le flux vidéo Kinesis utilisé pour diffuser des vidéos sur Amazon Rekognition Video. Pour de plus amples informations, veuillez consulter [InputInformation](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-inputinformation).
+ **StreamProcessorInformation**— Informations sur l'état du processeur de streaming Amazon Rekognition Video. La seule valeur possible pour le champ `Status` est RUNNING. Pour de plus amples informations, veuillez consulter [StreamProcessorInformation](streaming-video-kinesis-output-reference-streamprocessorinformation.md).
+ **FaceSearchResponse**— Contient des informations sur les visages de la vidéo en streaming qui correspondent aux visages de la collection d'entrées. [FaceSearchResponse](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-facesearchresponse)contient un [DetectedFace](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-detectedface) objet, qui est un visage détecté dans l'image vidéo analysée. Pour chaque visage détecté, le tableau `MatchedFaces` contient une série d’objets visage correspondants ([MatchedFace](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-facematch)) trouvés dans la collection d’entrée, avec un pourcentage de similarité. 

## Mappage du flux vidéo Kinesis au flux de données Kinesis
<a name="mapping-streams"></a>

Vous pouvez vouloir mapper les trames de flux vidéo Kinesis aux trames analysées envoyées au flux de données Kinesis. Par exemple, lors de l’affichage d’une vidéo en streaming, vous pouvez souhaiter afficher des cadres autour des visages des personnes reconnues. Les coordonnées du cadre de délimitation sont envoyées au flux de données Kinesis comme faisant partie de l’enregistrement de reconnaissance faciale Kinesis. Pour afficher correctement le cadre de délimitation, vous devez mapper les informations horaires qui sont envoyées avec l’enregistrement de reconnaissance faciale Kinesis aux trames correspondantes dans le flux vidéo Kinesis.

La technique que vous utilisez pour mapper le flux vidéo Kinesis au flux de données Kinesis varie selon que vous diffusez du contenu multimédia en direct (vidéo de streaming en direct) ou du contenu multimédia archivé (vidéo stockée).

### Mappage en cas de diffusion de contenu multimédia en direct
<a name="mapping-streaming-video"></a>

**Pour mapper une trame de flux vidéo Kinesis à une trame de flux de données Kinesis**

1. Définissez le paramètre d'entrée `FragmentTimeCodeType` de l'[PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)opération sur`RELATIVE`. 

1. Appelez `PutMedia` pour diffuser du contenu multimédia en direct dans le flux vidéo Kinesis.

1. Lorsque vous recevez un enregistrement de reconnaissance faciale Kinesis du flux de données Kinesis, stockez les valeurs de `ProducerTimestamp` et `FrameOffsetInSeconds` du champ [KinesisVideo](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-kinesisvideostreams-kinesisvideo).

1. Calculez l’horodatage système qui correspond à la trame du flux vidéo Kinesis en ajoutant les valeurs des champs `ProducerTimestamp` et `FrameOffsetInSeconds`. 

### Mappage en cas de diffusion de contenu multimédia archivé
<a name="map-stored-video"></a>

**Pour mapper une trame de flux vidéo Kinesis à une trame de flux de données Kinesis**

1. Appelez [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)pour transférer du contenu multimédia archivé dans le flux vidéo Kinesis.

1. Lorsque vous recevez un objet `Acknowledgement` dans la réponse de l’opération `PutMedia`, stockez la valeur du champ `FragmentNumber` à partir du champ [Payload](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html#API_dataplane_PutMedia_ResponseSyntax). `FragmentNumber` est le numéro de fragment du cluster MKV. 

1. Lorsque vous recevez un enregistrement de reconnaissance faciale Kinesis du flux de données Kinesis, stockez les valeurs de champ `FrameOffsetInSeconds` du champ [KinesisVideo](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-kinesisvideostreams-kinesisvideo). 

1. Calculez le mappage en utilisant les valeurs `FrameOffsetInSeconds` et `FragmentNumber` stockées aux étapes 2 et 3. `FrameOffsetInSeconds` est le décalage dans le fragment avec le paramètre spécifique `FragmentNumber` qui est envoyé au Amazon Kinesis Data Streams. Pour plus d’informations sur l’obtention des trames vidéo pour un numéro de fragment donné, consultez le [contenu multimédia archivé Amazon Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Operations_Amazon_Kinesis_Video_Streams_Archived_Media.html).

# Afficher les résultats de Rekognition avec Kinesis Video Streams en local
<a name="displaying-rekognition-results-locally"></a>

 [Vous pouvez consulter les résultats d'Amazon Rekognition Video Video Streams affichés dans votre flux d'Amazon Kinesis Video Streams à l'aide des exemples de tests de la bibliothèque d'analyseurs Amazon Kinesis Video Streams fournis sur - Rekognition Examples. KinesisVideo ](https://github.com/aws/amazon-kinesis-video-streams-parser-library#kinesisvideo---rekognition-examples) Il `KinesisVideoRekognitionIntegrationExample` affiche des zones de délimitation au-dessus des visages détectés et restitue la vidéo localement. JFrame Ce processus suppose que vous avez correctement connecté une entrée multimédia provenant de la caméra de l’appareil à un flux vidéo Kinesis, et que vous avez démarré un processeur de flux Amazon Rekognition. Pour de plus amples informations, veuillez consulter [Streaming à l'aide d'un GStreamer plugin](streaming-using-gstreamer-plugin.md). 

## Étape 1 : installation de la bibliothèque d’analyseurs Kinesis Video Streams
<a name="step-1-install-parser-library"></a>

 Pour créer un répertoire et télécharger le référentiel Github, exécutez la commande suivante : 

```
$ git clone https://github.com/aws/amazon-kinesis-video-streams-parser-library.git
```

 Accédez au répertoire de la bibliothèque et exécutez la commande Maven suivante pour effectuer une installation propre : 

```
$ mvn clean install
```

## Étape 2 : configuration de l’exemple de test d’intégration de Kinesis Video Streams et Rekognition
<a name="step-2-configure-kinesis-video-rekognition-example-test"></a>

 Ouvrez le fichier `KinesisVideoRekognitionIntegrationExampleTest.java`. Supprimez le `@Ignore` juste après l’en-tête de la classe. Renseignez les champs de données avec les informations provenant de vos ressources Amazon Kinesis et Amazon Rekognition. Pour de plus amples informations, veuillez consulter [Configuration de vos ressources Vidéo Amazon Rekognition et Amazon Kinesis](setting-up-your-amazon-rekognition-streaming-video-resources.md). Si vous diffusez une vidéo sur votre flux vidéo Kinesis, supprimez le paramètre `inputStream`. 

 Consultez l’exemple de code suivant : 

```
RekognitionInput rekognitionInput = RekognitionInput.builder()
  .kinesisVideoStreamArn("arn:aws:kinesisvideo:us-east-1:123456789012:stream/rekognition-test-video-stream")
  .kinesisDataStreamArn("arn:aws:kinesis:us-east-1:123456789012:stream/AmazonRekognition-rekognition-test-data-stream")
  .streamingProcessorName("rekognition-test-stream-processor")
  // Refer how to add face collection :
  // https://docs.aws.amazon.com/rekognition/latest/dg/add-faces-to-collection-procedure.html
  .faceCollectionId("rekognition-test-face-collection")
  .iamRoleArn("rekognition-test-IAM-role")
  .matchThreshold(0.95f)
  .build();                
            
KinesisVideoRekognitionIntegrationExample example = KinesisVideoRekognitionIntegrationExample.builder()
  .region(Regions.US_EAST_1)
  .kvsStreamName("rekognition-test-video-stream")
  .kdsStreamName("AmazonRekognition-rekognition-test-data-stream")
  .rekognitionInput(rekognitionInput)
  .credentialsProvider(new ProfileCredentialsProvider())
  // NOTE: Comment out or delete the inputStream parameter if you are streaming video, otherwise
  // the test will use a sample video. 
  //.inputStream(TestResourceUtil.getTestInputStream("bezos_vogels.mkv"))
  .build();
```

## Étape 3 : exécution de l’exemple de test d’intégration de Kinesis Video Streams et Rekognition
<a name="step-3-run-kinesis-video-rekognition-example-test"></a>

 Assurez-vous que votre flux vidéo Kinesis reçoit une entrée multimédia si vous le diffusez, et commencez à analyser votre flux avec un processeur de diffusion vidéo Amazon Rekognition en cours d’exécution. Pour de plus amples informations, veuillez consulter [Présentation des opérations du processeur de flux Vidéo Amazon Rekognition](streaming-video.md#using-rekognition-video-stream-processor). Exécutez la `KinesisVideoRekognitionIntegrationExampleTest` classe en tant que JUnit test. Après un court laps de temps, une nouvelle fenêtre s’ouvre avec un flux vidéo issu de votre flux vidéo Kinesis, avec des cadres de délimitation dessinés au-dessus des visages détectés. 

**Note**  
 Les visages de la collection utilisée dans cet exemple doivent avoir un ID d'image externe (le nom du fichier) spécifié dans ce format pour que les étiquettes des encadrés affichent un texte significatif : PersonName 1-Trusted, PersonName 2-Intruder, 3-Neutral, etc. PersonName Les étiquettes peuvent également être codées par couleur et sont personnalisables dans le FaceType fichier .java. 

# Comprendre l'enregistrement de trame JSON de reconnaissance faciale Kinesis
<a name="streaming-video-kinesis-output-reference"></a>

Vidéo Amazon Rekognition peut reconnaître des visages dans une vidéo diffusée en streaming. Pour chaque trame analysée, Vidéo Amazon Rekognition transmet un enregistrement de trame JSON à un flux de données . Vidéo Amazon Rekognition n’analyse pas toutes les images qui lui sont transmises via le flux vidéo Kinesis. 

L’enregistrement de trame JSON contient des informations sur les flux d’entrée et de sortie, le statut du processeur de flux, ainsi que des informations sur les visages reconnus dans les trames analysées. Cette section contient des informations de référence pour l’enregistrement de fréquence JSON.

Voici la syntaxe JSON pour un enregistrement de flux de données Kinesis. Pour de plus amples informations, veuillez consulter [Utilisation des vidéos streaming](streaming-video.md).

**Note**  
L’API de Vidéo Amazon Rekognition compare les visages de votre flux d’entrée à une collection de visages, puis renvoie les correspondances les plus proches trouvées, ainsi qu’un score de similarité.

```
{
    "InputInformation": {
        "KinesisVideo": {
            "StreamArn": "string",
            "FragmentNumber": "string",
            "ProducerTimestamp": number,
            "ServerTimestamp": number,
            "FrameOffsetInSeconds": number
        }
    },
    "StreamProcessorInformation": {
        "Status": "RUNNING"
    },
    "FaceSearchResponse": [
        {
            "DetectedFace": {
                "BoundingBox": {
                    "Width": number,
                    "Top": number,
                    "Height": number,
                    "Left": number
                },
                "Confidence": number,
                "Landmarks": [
                    {
                        "Type": "string",
                        "X": number,
                        "Y": number
                    }
                ],
                "Pose": {
                    "Pitch": number,
                    "Roll": number,
                    "Yaw": number
                },
                "Quality": {
                    "Brightness": number,
                    "Sharpness": number
                }
            },
            "MatchedFaces": [
                {
                    "Similarity": number,
                    "Face": {
                        "BoundingBox": {
                            "Width": number,
                            "Top": number,
                            "Height": number,
                            "Left": number
                        },
                        "Confidence": number,
                        "ExternalImageId": "string",
                        "FaceId": "string",
                        "ImageId": "string"
                    }
                }
            ]
        }
    ]
}
```

## Enregistrement JSON
<a name="streaming-video-kinesis-output-reference-processorresult"></a>

L’enregistrement JSON contient inclut des informations sur une trame traitée par Vidéo Amazon Rekognition. L’enregistrement contient des informations sur la vidéo streaming, le statut de la trame analysée et les visages reconnus dans la trame.

**InputInformation**

Informations sur le flux vidéo Kinesis utilisé pour diffuser des vidéos dans Vidéo Amazon Rekognition.

Type : objet [InputInformation](#streaming-video-kinesis-output-reference-inputinformation)

**StreamProcessorInformation**

Informations sur le processeur de flux Vidéo Amazon Rekognition. Comprend des informations sur le statut en cours du processeur de flux.

Type : objet [StreamProcessorInformation](streaming-video-kinesis-output-reference-streamprocessorinformation.md) 

**FaceSearchResponse**

Informations sur les visages détectés dans la trame vidéo en streaming et sur les visages correspondants trouvés dans la collection d’entrée.

Type : tableau d’objets [FaceSearchResponse](#streaming-video-kinesis-output-reference-facesearchresponse)

## InputInformation
<a name="streaming-video-kinesis-output-reference-inputinformation"></a>

Informations sur un flux vidéo source utilisé par Vidéo Amazon Rekognition. Pour de plus amples informations, veuillez consulter [Utilisation des vidéos streaming](streaming-video.md).

**KinesisVideo**

Type : objet [KinesisVideo](#streaming-video-kinesis-output-reference-kinesisvideostreams-kinesisvideo)

## KinesisVideo
<a name="streaming-video-kinesis-output-reference-kinesisvideostreams-kinesisvideo"></a>

Informations sur le flux vidéo Kinesis qui diffuse la vidéo source sur Vidéo Amazon Rekognition. Pour de plus amples informations, veuillez consulter [Utilisation des vidéos streaming](streaming-video.md).

**StreamArn**

Le Amazon Resource Name (ARN) du flux vidéo Kinesis.

Type : Chaîne 

**FragmentNumber**

Le fragment de vidéo streaming qui contient la trame que cet enregistrement représente.

Type : Chaîne

**ProducerTimestamp**

L’horodatage Unix côté producteur du fragment. Pour de plus amples informations, veuillez consulter [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html).

Type : Number

**ServerTimestamp**

L’horodatage Unix côté serveur du fragment. Pour de plus amples informations, veuillez consulter [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html).

Type : Number

**FrameOffsetInSeconds**

Le décalage de la trame (en secondes) dans le fragment.

Type : Number 

# StreamProcessorInformation
<a name="streaming-video-kinesis-output-reference-streamprocessorinformation"></a>

Informations de statut sur le processeur de flux.

**Statut**

Le statut en cours du processeur de flux. La seule valeur possible est RUNNING.

Type : Chaîne

## FaceSearchResponse
<a name="streaming-video-kinesis-output-reference-facesearchresponse"></a>

Informations sur un visage détecté dans la trame vidéo en streaming et sur les visages dans une collection qui correspondent au visage détecté. Vous spécifiez la collection dans un appel à [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html). Pour de plus amples informations, veuillez consulter [Utilisation des vidéos streaming](streaming-video.md). 

**DetectedFace**

Détails d’un visage détecté dans une trame vidéo analysée.

Type : objet [DetectedFace](#streaming-video-kinesis-output-reference-detectedface)

**MatchedFaces**

Tableau de détails de visages pour des visages dans une collection qui correspond au visage détecté dans `DetectedFace`.

Type : tableau d’objets [MatchedFace](#streaming-video-kinesis-output-reference-facematch)

## DetectedFace
<a name="streaming-video-kinesis-output-reference-detectedface"></a>

Informations sur un visage détecté dans une trame vidéo en streaming. Les visages correspondants dans la collection d’entrée sont disponibles dans le champ d’objet [MatchedFace](#streaming-video-kinesis-output-reference-facematch).

**BoundingBox**

Le cadre de délimitation s’accorde avec un visage détecté dans une trame vidéo analysée. L' BoundingBox objet possède les mêmes propriétés que l' BoundingBox objet utilisé pour l'analyse d'image.

Type : objet [BoundingBox](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_BoundingBox.html) 

**Fiabilité**

Correspond au niveau de confiance (1 à 100) de Vidéo Amazon Rekognition quant au fait que le visage détecté est bien un visage. 1 correspond au niveau de confiance le plus faible, 100 au niveau le plus élevé.

Type : Number

**Traits caractéristiques**

Un tableau de traits caractéristiques de visage.

Type : tableau d’objets [repères](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_Landmark.html)

**Expression**

Indique l’expression du visage selon les axes vertical, horizontal, et l’orientation.

Type : objet [d’expression](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_Pose.html)

**Qualité**

Identifie la luminosité et la netteté de l’image du visage. 

Type : objet [ImageQuality](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ImageQuality.html)

## MatchedFace
<a name="streaming-video-kinesis-output-reference-facematch"></a>

Informations sur un visage correspondant à un visage détecté dans une trame vidéo analysée.

**Visage**

Informations de correspondance de visages pour un visage de la collection d’entrée qui correspond au visage dans l’objet [DetectedFace](#streaming-video-kinesis-output-reference-detectedface). 

Type : objet [facial](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_Face.html) 

**Similarité**

Le niveau de confiance (1 à 100) auquel les visages correspondent. 1 est le niveau de confiance le plus faible, 100 le plus élevé.

Type : Number 

# Streaming à l'aide d'un GStreamer plugin
<a name="streaming-using-gstreamer-plugin"></a>

Vidéo Amazon Rekognition peut analyser une vidéo diffusée en direct à partir de la caméra d’un appareil. Pour accéder à l'entrée multimédia à partir d'une source de périphérique, vous devez procéder à l'installation GStreamer. GStreamer est un logiciel de framework multimédia tiers qui connecte les sources multimédia et les outils de traitement dans des pipelines de flux de travail. Vous devez également installer le plugin [Amazon Kinesis Video Streams Producer](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/) pour Gstreamer. Ce processus suppose que vous avez correctement configuré vos ressources Vidéo Amazon Rekognition et Amazon Kinesis. Pour de plus amples informations, veuillez consulter [Configuration de vos ressources Vidéo Amazon Rekognition et Amazon Kinesis](setting-up-your-amazon-rekognition-streaming-video-resources.md).

## Étape 1 : installer Gstreamer
<a name="step-1-install-gstreamer"></a>

 Téléchargez et installez Gstreamer, un logiciel de plateforme multimédia tiers. Vous pouvez utiliser un logiciel de gestion de paquets tel que Homebrew ([Gstreamer sur Homebrew](https://formulae.brew.sh/formula/gstreamer)) ou vous le procurer directement depuis le [site Web de Freedesktop.](https://gstreamer.freedesktop.org/download/) 

 Vérifiez la réussite de l’installation de Gstreamer en lançant un flux vidéo avec une source de test depuis votre terminal de ligne de commande. 

```
$ gst-launch-1.0 videotestsrc ! autovideosink
```

## Étape 2 : installation du plugin Kinesis Video Streams Producer
<a name="step-2-install-kinesis-video-plugin"></a>

 Dans cette section, vous allez télécharger la bibliothèque [Amazon Kinesis Video Streams Producer](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/) et installer le plugin Kinesis Video Streams Gstreamer. 

 Créez un répertoire et clonez l’exemple de code source à partir du référentiel GitHub. Assurez-vous d’inclure le paramètre `--recursive`. 

```
$ git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
```

Suivez les [instructions fournies par la bibliothèque](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/README.md) pour configurer et créer le projet. Assurez-vous d’utiliser les commandes spécifiques à la plate-forme pour votre système d’exploitation. Utilisez le paramètre `-DBUILD_GSTREAMER_PLUGIN=ON` lorsque vous exécutez `cmake` pour installer le plug-in Kinesis Video Streams Gstreamer. Ce projet nécessite les packages supplémentaires suivants inclus dans l’installation : GCC ou Clang, Curl, Openssl et Log4CPlus. Si votre compilation échoue à cause d’un package manquant, vérifiez que le package est installé et qu’il figure dans votre PATH. Si vous rencontrez une erreur « Impossible d’exécuter le programme compilé en C » lors de la construction, réexécutez la commande de construction. Parfois, le compilateur C correct n’est pas trouvé. 

 Vérifiez l’installation du plug-in Kinesis Video Streams en exécutant la commande suivante. 

```
$ gst-inspect-1.0 kvssink
```

 Les informations suivantes, telles que les informations relatives à l’usine et au plug-in, doivent apparaître : 

```
Factory Details:
  Rank                     primary + 10 (266)
  Long-name                KVS Sink
  Klass                    Sink/Video/Network
  Description              GStreamer AWS KVS plugin
  Author                   AWS KVS <kinesis-video-support@amazon.com>
                
Plugin Details:
  Name                     kvssink
  Description              GStreamer AWS KVS plugin
  Filename                 /Users/YOUR_USER/amazon-kinesis-video-streams-producer-sdk-cpp/build/libgstkvssink.so
  Version                  1.0
  License                  Proprietary
  Source module            kvssinkpackage
  Binary package           GStreamer
  Origin URL               http://gstreamer.net/
  
  ...
```

## Étape 3 : Exécuter Gstreamer avec le plug-in Kinesis Video Streams
<a name="step-3-run-gstreamer-with-kinesis-video-plugin"></a>

 Avant de commencer le streaming depuis la caméra d’un appareil vers Kinesis Video Streams, vous devrez peut-être convertir la source multimédia en un codec acceptable pour Kinesis Video Streams. Pour déterminer les spécifications et les capacités de formatage des appareils actuellement connectés à votre machine, exécutez la commande suivante.

```
$ gst-device-monitor-1.0
```

 Pour commencer le streaming, lancez Gstreamer à l’aide de l’exemple de commande suivant, et ajoutez vos informations d’identification et les informations Amazon Kinesis Video Streams. Vous devez utiliser les clés d’accès et la région correspondant à la fonction du service IAM que vous avez créée lorsque vous autorisez [Amazon Rekognition à accéder à vos flux Kinesis.](https://docs.aws.amazon.com/rekognition/latest/dg/api-streaming-video-roles.html#api-streaming-video-roles-all-stream) Pour de plus amples informations sur les clés d’accès, veuillez consulter [Gestion des clés d’accès pour les utilisateurs IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) dans le *Guide de l’utilisateur IAM*. Vous pouvez également ajuster les paramètres des arguments du format vidéo en fonction de votre utilisation et de leur disponibilité sur votre appareil. 

```
$ gst-launch-1.0 autovideosrc device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! 
                x264enc bframes=0 key-int-max=45 bitrate=500 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! 
                kvssink stream-name="YOUR_STREAM_NAME" storage-size=512 access-key="YOUR_ACCESS_KEY" secret-key="YOUR_SECRET_ACCESS_KEY" aws-region="YOUR_AWS_REGION"
```

 Pour plus de commandes de lancement, voir [Exemples de commandes de GStreamer lancement](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-gstreamer-plugin.html#examples-gstreamer-plugin-launch). 

**Note**  
 Si votre commande de lancement se termine par une erreur non liée à la négociation, vérifiez le résultat du Device Monitor, et assurez-vous que les valeurs des paramètres `videoconvert`correspondent aux fonctionnalités valides de votre appareil. 

 Au bout de quelques secondes, un flux vidéo provenant de la caméra de votre appareil s’affiche sur votre flux vidéo Kinesis. Pour commencer à détecter et à associer des visages avec Amazon Rekognition, démarrez votre processeur de streaming Vidéo Amazon Rekognition. Pour de plus amples informations, veuillez consulter [Présentation des opérations du processeur de flux Vidéo Amazon Rekognition](streaming-video.md#using-rekognition-video-stream-processor). 

# Résolution des problèmes de streaming vidéo
<a name="streaming-video-troubleshooting"></a>

Cette rubrique fournit des informations permettant de résoudre les problèmes d’utilisation de Vidéo Amazon Rekognition avec des vidéos en streaming.

**Topics**
+ [Je ne sais pas si mon processeur de flux a été créé avec succès](#ts-streaming-video-create-sp)
+ [Je ne sais pas si j’ai configuré mon processeur de flux correctement](#ts-configured-sp)
+ [Mon processeur de flux ne renvoie pas de résultats.](#ts-streaming-video-no-results-from-sp)
+ [L’état de mon processeur de flux est FAILED](#ts-failed-state)
+ [Mon processeur de flux ne renvoie pas les résultats attendus](#w2aac27c79c27c15)

## Je ne sais pas si mon processeur de flux a été créé avec succès
<a name="ts-streaming-video-create-sp"></a>

Utilisez la AWS CLI commande suivante pour obtenir la liste des processeurs de flux et leur état actuel.

```
aws rekognition list-stream-processors
```

Vous pouvez obtenir des informations supplémentaires à l'aide de la AWS CLI commande suivante. Remplacez `stream-processor-name` par le nom du processeur de flux requis.

```
aws rekognition describe-stream-processor --name stream-processor-name
```

## Je ne sais pas si j’ai configuré mon processeur de flux correctement
<a name="ts-configured-sp"></a>

Si votre code ne donne pas des résultats d’analyse à partir de Vidéo Amazon Rekognition, votre processeur de flux n’est peut-être pas configuré correctement. Procédez comme suit pour vérifier que votre processeur de flux est configuré correctement et capable de produire des résultats.

**Pour déterminer si votre solution est configurée correctement**

1. Exécutez la commande suivante pour vérifier que votre processeur de flux est en cours d’exécution. Remplacez `stream-processor-name` par le nom de votre processeur de flux. Le processeur de flux est en cours d’exécution si la valeur de `Status` est `RUNNING`. Si le statut est `RUNNING` et que vous n’obtenez pas de résultats, consultez [Mon processeur de flux ne renvoie pas de résultats.](#ts-streaming-video-no-results-from-sp). Si l’état est `FAILED`, consultez [L’état de mon processeur de flux est FAILED](#ts-failed-state).

   ```
   aws rekognition describe-stream-processor --name stream-processor-name
   ```

1. Si votre processeur de flux est en cours d'exécution, exécutez le Bash ou la PowerShell commande suivante pour lire les données du flux de données Kinesis en sortie. 

   **Bash**

   ```
   SHARD_ITERATOR=$(aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name kinesis-data-stream-name --query 'ShardIterator')
                           aws kinesis get-records --shard-iterator $SHARD_ITERATOR
   ```

   **PowerShell**

   ```
   aws kinesis get-records --shard-iterator ((aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name kinesis-data-stream-name).split('"')[4])
   ```

1. Utilisez l’[outil de décodage](https://www.base64decode.org/) sur le site web Base64 Decode pour décoder la sortie en chaîne compréhensible par les utilisateurs. Pour plus d’informations, consultez [Etape 3 : Obtenir l’enregistrement](https://docs.aws.amazon.com/streams/latest/dev/fundamental-stream.html#get-records).

1. Si les commandes fonctionnent et que vous voyez des résultats de détection de visages dans les flux de données Kinesis, cela signifie que votre solution a été configurée correctement. Si la commande échoue, vérifiez les autres suggestions de résolution de problèmes et consultez [Octroi à Vidéo Amazon Rekognition d’un accès à vos ressources](api-streaming-video-roles.md).

Vous pouvez également utiliser le AWS Lambda plan « kinesis-process-record » pour enregistrer les messages provenant du flux de données Kinesis CloudWatch afin de les visualiser en continu. Cela entraîne des coûts supplémentaires pour AWS Lambda et. CloudWatch 

## Mon processeur de flux ne renvoie pas de résultats.
<a name="ts-streaming-video-no-results-from-sp"></a>

Plusieurs raisons peuvent expliquer pourquoi votre processeur de flux ne renvoie pas de résultats. 

### Raison 1 : votre processeur de flux n’est pas configuré correctement
<a name="w2aac27c79c27c11b5"></a>

Il est possible que votre processeur de flux ne soit pas configuré correctement. Pour de plus amples informations, veuillez consulter [Je ne sais pas si j’ai configuré mon processeur de flux correctement](#ts-configured-sp).

### Raison 2 : votre processeur de flux n’est pas dans l’état RUNNING
<a name="w2aac27c79c27c11b7"></a>

**Pour résoudre un problème d’état du processeur de flux**

1. Vérifiez l'état du processeur de flux à l'aide de la AWS CLI commande suivante.

   ```
   aws rekognition describe-stream-processor --name stream-processor-name
   ```

1. Si la valeur de `Status` est `STOPPED`, démarrez votre processeur de flux à l’aide de la commande suivante :

   ```
   aws rekognition start-stream-processor --name stream-processor-name
   ```

1. Si la valeur de `Status` est `FAILED`, consultez [L’état de mon processeur de flux est FAILED](#ts-failed-state).

1. Si la valeur de `Status` est `STARTING`, attendez 2 minutes et vérifiez l’état en répétant l’étape 1. Si la valeur de l’état est toujours `STARTING`, procédez comme suit :

   1. Supprimez le processeur de flux à l’aide de la commande suivante.

      ```
      aws rekognition delete-stream-processor --name stream-processor-name
      ```

   1. Créez processeur de flux avec la même configuration. Pour de plus amples informations, veuillez consulter [Utilisation des vidéos streaming](streaming-video.md).

   1. Si le problème persiste, contactez le AWS Support.

1. Si la valeur de `Status` est `RUNNING`, consultez [Raison 3 : il n’y a pas de données actives dans le flux vidéo Kinesis](#ts-no-data).

### Raison 3 : il n’y a pas de données actives dans le flux vidéo Kinesis
<a name="ts-no-data"></a>

**Pour vérifier s’il n’y a pas de données actives dans le flux vidéo Kinesis**

1. Connectez-vous à la AWS Management Console console [https://console.aws.amazon.com/kinesisvideo/](https://console.aws.amazon.com/kinesisvideo/)Amazon Kinesis Video Streams et ouvrez-la à l'adresse.

1. Sélectionnez le flux vidéo Kinesis qui est l’entrée du processeur de flux Amazon Rekognition.

1. Si l’aperçu indique **No data on stream**, cela signifie qu’il n’y a pas de données à traiter dans le flux d’entrée par Vidéo Amazon Rekognition.

Pour plus d’informations sur la production de vidéos avec Kinesis Video Streams, consultez [Bibliothèques de production de flux vidéo Kinesis](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html). 

## L’état de mon processeur de flux est FAILED
<a name="ts-failed-state"></a>

Vous pouvez vérifier l'état d'un processeur de flux à l'aide de la AWS CLI commande suivante.

```
aws rekognition describe-stream-processor --name stream-processor-name
```

Si la valeur de l’état est FAILED, vérifiez les informations de résolution de problèmes pour les messages d’erreur suivants.

### Erreur : « Access denied to Role »
<a name="w2aac27c79c27c13b9"></a>

Le rôle IAM qui est utilisé par le processeur de flux n’existe pas ou Vidéo Amazon Rekognition n’a pas l’autorisation d’assumer ce rôle.

**Pour résoudre les problèmes d’accès au rôle IAM**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le panneau de navigation gauche, choisissez **Roles (Rôles)** et vérifiez que le rôle existe. 

1. Si le rôle existe, vérifiez qu'il est conforme à la politique *AmazonRekognitionServiceRole*d'autorisation.

1. Si le rôle n’existe pas ou n’a pas les autorisations appropriées, consultez [Octroi à Vidéo Amazon Rekognition d’un accès à vos ressources](api-streaming-video-roles.md).

1. Démarrez le processeur de flux à l'aide de la AWS CLI commande suivante.

   ```
   aws rekognition start-stream-processor --name stream-processor-name
   ```

### Erreur : « Access denied to Kinesis Video *ou* Access denied to Kinesis Data »
<a name="w2aac27c79c27c13c11"></a>

Le rôle n’a pas accès aux opérations d’API Kinesis Video Streams `GetMedia` et `GetDataEndpoint`. Il est également possible qu’il n’ait pas accès aux opérations d’API flux de données Kinesis `PutRecord` et `PutRecords`. 

**Pour résoudre les problèmes relatifs aux autorisations d’API**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Ouvrez le rôle et assurez-vous que la stratégie d’autorisations suivante lui est attachée.

1. S’il manque l’une des autorisations, mettez à jour la stratégie. Pour de plus amples informations, veuillez consulter [Octroi à Vidéo Amazon Rekognition d’un accès à vos ressources](api-streaming-video-roles.md).

### Erreur : « Le flux *input-video-stream-name* n'existe pas »
<a name="w2aac27c79c27c13c13"></a>

L’entrée flux vidéo Kinesis du processeur de flux n’existe pas ou n’a pas été configurée correctement. 

**Pour résoudre les problèmes de flux de vidéo Kinesis**

1. Utilisez la commande suivante pour vérifier que le flux existe. 

   ```
   aws kinesisvideo list-streams
   ```

1. Si le flux existe, vérifiez les points suivants.
   + L’Amazon Resource Name (ARN) est identique à l’ARN du flux d’entrée pour le processeur de flux.
   + Le flux vidéo Kinesis doit se trouver dans la même région que le processeur de flux.

   Si le processeur de flux n'est pas configuré correctement, supprimez-le à l'aide de la AWS CLI commande suivante.

   ```
   aws rekognition delete-stream-processor --name stream-processor-name
   ```

1. Créez un processeur de flux avec les flux vidéo Kinesis. Pour de plus amples informations, veuillez consulter [Création du processeur de flux de recherche faciale Vidéo Amazon Rekognition](rekognition-video-stream-processor-search-faces.md#streaming-video-creating-stream-processor).

### Erreur  : « Collection non trouvée »
<a name="w2aac27c79c27c13c15"></a>

La collection Amazon Rekognition utilisée par le processeur de flux pour trouver les correspondances de visages n’existe pas ou la mauvaise collection est utilisée.

**Pour vérifier qu’il s’agit de la bonne collection**

1. Utilisez la AWS CLI commande suivante pour déterminer si la collection requise existe. Passez `region` à la AWS région dans laquelle vous utilisez votre processeur de streaming.

   ```
   aws rekognition list-collections --region region
   ```

   Si la collection requise n’existe pas, créez-en une nouvelle et ajoutez des informations sur le visage. Pour de plus amples informations, veuillez consulter [Recherche de visages dans une collection](collections.md).

1. Dans votre appel à [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html), vérifiez que la valeur du paramètre d'entrée `CollectionId` est correcte.

1. Démarrez le processeur de flux à l'aide de la AWS CLI commande suivante.

   ```
   aws rekognition start-stream-processor --name stream-processor-name
   ```

### Erreur : « Impossible de trouver *output-kinesis-data-stream-name* le stream sous le compte *account-id* »
<a name="w2aac27c79c27c13c17"></a>

Le flux de données Kinesis de sortie utilisé par le processeur de flux n'existe pas dans votre région Compte AWS ou ne se trouve pas dans la même AWS région que votre processeur de flux.

**Pour résoudre les problèmes de flux de données Kinesis**

1. Utilisez la AWS CLI commande suivante pour déterminer si le flux de données Kinesis existe. Passez `region` à la AWS région dans laquelle vous utilisez votre processeur de streaming.

   ```
   aws kinesis list-streams --region region
   ```

1. Si le flux de données Kinesis existe, vérifiez que le nom de flux de données Kinesis est le même que celui du flux de sortie qui est utilisé par le processeur de flux.

1. Si le flux de données Kinesis n'existe pas, il se peut qu'il existe dans une autre AWS région. Le flux de données Kinesis doit se trouver dans la même région que le processeur de flux.

1. Le cas échéant, créez un flux de données Kinesis. 

   1. Créez un flux de données Kinesis avec le même nom que celui utilisé par le processeur de flux. Pour plus d’informations, consultez [Etape 1 : Création d’un flux de données](https://docs.aws.amazon.com/streams/latest/dev/learning-kinesis-module-one-create-stream.html).

   1. Démarrez le processeur de flux à l'aide de la AWS CLI commande suivante.

      ```
      aws rekognition start-stream-processor --name stream-processor-name
      ```

## Mon processeur de flux ne renvoie pas les résultats attendus
<a name="w2aac27c79c27c15"></a>

Si votre processeur de flux ne renvoie pas les correspondances de visages attendues, utilisez les informations suivantes.
+ [Recherche de visages dans une collection](collections.md)
+ [Recommandations pour la configuration de la caméra (vidéo en streaming)](recommendations-camera-streaming-video.md)