[PYTHON] Détection de la même personne par Amazon Rekognition

Dans la continuité de Dernière fois, j'ai essayé de détecter la même personne en utilisant Amazon Rekogniton.

Aperçu

La même personne est détectée à l'aide de l'API appelée compare_faces d'Amazon Rekognition. J'entre deux images dans compare_faces, la première est l'image de la personne que je veux détecter, et la seconde est l'image à détecter.

Environnement d'exécution

OS:Windows10 Langage: Python 3.7

Préparation préalable

Définissez les informations d'identification suivantes dans AWS CLI (aws configure).

AWS Access Key ID AWS Secret Access Key Default region name Default output format

Code source (face_compare.py)

face_compare.py


import boto3
import sys
from PIL import Image,ImageDraw

#Vérification des arguments
if len(sys.argv) != 3:
	print('Veuillez spécifier deux fichiers image comme arguments.')
	exit()

#Créer un client pour Rekognition
client = boto3.client('rekognition')

#Comparer avec deux fichiers image comme arguments_Exécuter des visages
with open(sys.argv[1],'rb') as source:
	with open(sys.argv[2],'rb') as target:
		response = client.compare_faces(SourceImage={'Bytes':source.read()},TargetImage={'Bytes':target.read()})

#Si la même personne n'est pas détectée, le processus se termine
if len(response['FaceMatches'])==0:
	print('La même personne n'a pas été détectée.')
else:
	#Créer un fichier image pour un ensemble rectangulaire basé sur le deuxième fichier image
	img = Image.open(sys.argv[2])
	imgWidth,imgHeight = img.size
	draw = ImageDraw.Draw(img)

	#Effectue un traitement de jeu rectangulaire pour le nombre de visages détectés
	for faceMatch in response['FaceMatches']:

		#Obtenir des informations sur la position / la taille du visage de BoundingBox
		box = faceMatch['Face']['BoundingBox']
		left = imgWidth * box['Left']
		top = imgHeight * box['Top']
		width = imgWidth * box['Width']
		height = imgHeight * box['Height']		

		#Définir les informations de position et de taille du rectangle
		points = (
			(left,top),
			(left + width,top + height)
		)

		#Entourez le visage dans un rectangle
		draw.rectangle(points,outline='lime')

		#Enregistrer le fichier image
		img.save('detected_' + sys.argv[2]) 	

		#Afficher le fichier image
		img.show()

Bref commentaire

Le plan est comme suit.

(1) Obtenez deux fichiers image à entrer dans Rekognition à partir des arguments au moment de l'exécution du programme. (2) Exécutez compare_faces de Rekognition avec le fichier image dans (1) ci-dessus comme argument. (3) Obtenez les informations de position / taille du visage reconnues à partir des correspondances de visage / de la zone de délimitation de Json renvoyées par Rekognition. ④ Créez un fichier image avec un rectangle de ci-dessus et affichez-le.

Résultat d'exécution

commander

python face_compare.py ichiro1.jpg ichiro2.jpg

Image d'entrée 1 (ichiro1.jpg)

ichiro2.jpg

Image d'entrée 2 (ichiro2.jpg)

ichiro3.jpg

Image de sortie (found_ichiro2.jpg)

detected_ichiro3.jpg

Il a détecté Ichiro.

Résumé

Semblable à detect_faces dans Last time, vous pouvez facilement effectuer une reconnaissance d'image à l'aide de l'API. En utilisant compare_faces, vous pouvez facilement extraire la personne que vous souhaitez trouver à partir d'un grand nombre d'images. Selon le site AWS, il est utilisé par des sociétés de presse et des sociétés de services photo au Japon.

Recommended Posts

Détection de la même personne par Amazon Rekognition
Reconnaissance faciale par Amazon Rekognition
Traduction automatique par Amazon Translate