Cette fois, j'aimerais créer une application simple utilisant le service de reconnaissance faciale Rekognition d'Amazon. Lorsque vous entendez la reconnaissance faciale, vous pouvez avoir une image difficile, mais si vous utilisez cette Rekoginition, vous pouvez facilement la faire, alors essayez de l'utiliser à travers un échantillon.
Seule la source extraite est publiée dans l'article, donc si vous êtes intéressé, je publierai la source que j'ai créée cette fois dans ici. se il vous plaît se référer.
Ceci est l'écran de l'application que j'ai créée cette fois.
Création de collection
ListCollectionsResult listCollectionsResult = rekognitionClient.listCollections(new ListCollectionsRequest());
if (!listCollectionsResult.getCollectionIds().contains(COLLECTION_ID)) {
rekognitionClient.createCollection(new CreateCollectionRequest().withCollectionId(COLLECTION_ID));
}
Au lieu de simplement créer une collection, j'essaie d'en créer une si elle n'existe pas.
Rekognition API | Contenu |
---|---|
listCollections | La liste des collections sera retournée. |
createCollection | Créez une collection. |
Stocker l'image source de comparaison
IndexFacesRequest indexFacesRequest = new IndexFacesRequest()
.withCollectionId(COLLECTION_ID)
.withExternalImageId(id)
.withImage(new Image().withBytes(ByteBuffer.wrap(multipartFile.getBytes())));
IndexFacesResult indexFacesResult = rekognitionClient.indexFaces(indexFacesRequest);
Rekognition API | Contenu |
---|---|
indexFaces | Stockez votre photo de visage dans la collection. |
Propriété | La description | Caractères disponibles |
---|---|---|
collectionId | Nom de la collection créée | a-zA-Z0-9_.- |
externalImageId | Données arbitraires | a-zA-Z0-9_.-: |
image | Image source de comparaison (binaire) |
Cette fois, nous allons gérer l'ID qui identifie de manière unique l'utilisateur dans externalImageId
.
SearchFacesByImageRequest searchFacesByImageRequest = new SearchFacesByImageRequest()
.withCollectionId(COLLECTION_ID)
.withImage(new Image().withBytes(ByteBuffer.wrap(multipartFile.getBytes())))
.withFaceMatchThreshold(90F)
.withMaxFaces(1);
try {
SearchFacesByImageResult searchFacesByImageResult = rekognitionClient.searchFacesByImage(searchFacesByImageRequest);
} catch (InvalidParameterException e) {
//La gestion des erreurs
}
Veuillez noter que InvalidParameterException
se produira si le visage ne peut pas être reconnu à partir de l'image téléchargée.
Rekognition API | Contenu |
---|---|
searchFacesByImage | Recherchez dans la collection en fonction des photos de visage à comparer. |
Propriété | La description | Caractères disponibles |
---|---|---|
collectionId | Nom de la collection créée | a-zA-Z0-9_.- |
image | Image source de comparaison (binaire) | |
faceMatchThreshold | Seuil de similarité. 70 par défaut% | |
maxFaces | Nombre de faces correspondantes à acquérir par ordre décroissant de similitude |
Dans cet échantillon, nous avons essayé d'obtenir celui avec la plus grande similitude de ceux avec 90% ou plus de similitude.
SearchFacesByImageResult peut être obtenu dans le format suivant, alors récupérez-en externalFaceId
.
{
"FaceMatches": [
{
"Face": {
"BoundingBox": {
"Height": number,
"Left": number,
"Top": number,
"Width": number
},
"Confidence": number,
"ExternalImageId": "string", <--cette
"FaceId": "string",
"ImageId": "string"
},
"Similarity": number
}
],
"FaceModelVersion": "string",
"SearchedFaceBoundingBox": {
"Height": number,
"Left": number,
"Top": number,
"Width": number
},
"SearchedFaceConfidence": number
}
S'il correspond à l'ID saisi à l'écran, l'authentification est OK, sinon elle est NG.
Recommended Posts