[PYTHON] Erkennung derselben Person durch Amazon Rekognition

Ausgehend von Letztes Mal habe ich versucht, dieselbe Person mithilfe von Amazon Rekogniton zu erkennen.

Überblick

Dieselbe Person wird mithilfe der API compare_faces von Amazon Rekognition erkannt. Ich gebe zwei Bilder in compare_faces ein, das erste ist das Bild der Person, die ich erkennen möchte, und das zweite ist das zu erkennende Bild.

Ausführungsumgebung

OS:Windows10 Sprache: Python 3.7

Vorbereitungen

Legen Sie die folgenden Anmeldeinformationen in AWS CLI fest (aws configure).

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

Quellcode (face_compare.py)

face_compare.py


import boto3
import sys
from PIL import Image,ImageDraw

#Argumentprüfung
if len(sys.argv) != 3:
	print('Bitte geben Sie zwei Bilddateien als Argumente an.')
	exit()

#Erstellen Sie einen Client für die Erkennung
client = boto3.client('rekognition')

#Vergleichen Sie mit zwei Bilddateien als Argumente_Gesichter laufen lassen
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()})

#Wird dieselbe Person nicht erkannt, endet der Vorgang
if len(response['FaceMatches'])==0:
	print('Dieselbe Person wurde nicht erkannt.')
else:
	#Erstellen Sie eine Bilddatei für einen rechteckigen Satz basierend auf der zweiten Bilddatei
	img = Image.open(sys.argv[2])
	imgWidth,imgHeight = img.size
	draw = ImageDraw.Draw(img)

	#Führt eine rechteckige Satzverarbeitung für die Anzahl der erkannten Gesichter durch
	for faceMatch in response['FaceMatches']:

		#Informationen zur Position / Größe des Gesichts erhalten Sie von BoundingBox
		box = faceMatch['Face']['BoundingBox']
		left = imgWidth * box['Left']
		top = imgHeight * box['Top']
		width = imgWidth * box['Width']
		height = imgHeight * box['Height']		

		#Stellen Sie die Positions- und Größeninformationen des Rechtecks ein
		points = (
			(left,top),
			(left + width,top + height)
		)

		#Schließen Sie das Gesicht in ein Rechteck ein
		draw.rectangle(points,outline='lime')

		#Bilddatei speichern
		img.save('detected_' + sys.argv[2]) 	

		#Bilddatei anzeigen
		img.show()

Kurzer Kommentar

Der Umriss ist wie folgt.

(1) Beziehen Sie aus den Argumenten zum Zeitpunkt der Programmausführung zwei Bilddateien, die in Rekognition eingegeben werden sollen. (2) Führen Sie die compare_faces von Rekognition mit der Bilddatei in (1) oben als Argument aus. (3) Erhalten Sie die erkannten Informationen zu Gesichtsposition / -größe aus Jsons von Rekognition zurückgegebenen Face Matches / Bounding Box. ④ Erstellen Sie eine Bilddatei mit einem Rechteck von ③ oben und zeigen Sie sie an.

Ausführungsergebnis

Befehl

python face_compare.py ichiro1.jpg ichiro2.jpg

Eingabebild 1 (ichiro1.jpg)

ichiro2.jpg

Eingabebild 2 (ichiro2.jpg)

ichiro3.jpg

Ausgabebild (erkannt_ichiro2.jpg)

detected_ichiro3.jpg

Er entdeckte Ichiro.

Zusammenfassung

Ähnlich wie bei detect_faces in Last time können Sie die Bilderkennung mithilfe der API problemlos durchführen. Mit compare_faces können Sie die Person, die Sie finden möchten, einfach aus einer großen Anzahl von Bildern extrahieren. Laut der AWS-Site wird es von Zeitungsunternehmen und Fotodienstleistungsunternehmen in Japan verwendet.

Recommended Posts

Erkennung derselben Person durch Amazon Rekognition
Gesichtserkennung durch Amazon Rekognition
Maschinelle Übersetzung von Amazon Translate