AWSの画像認識で、詳細な顔認識結果を得るには【Python】

AWSの画像認識AI(Amazon Rekognition)にて、detect_facesで詳細な顔認識結果を得るには、AttributesパラメータでAllを指定します。

detect_facesで詳細な顔認識結果を得るには【AWS】

入力画像・顔認識画像

1つ目の画像は、笑顔で泳ぐ女性です。
2つ目の画像は、その顔認識結果の画像です。

Pythonサンプル

import boto3

#boto3のclient作成、AWSサービス名とリージョンを指定
client = boto3.client('rekognition','ap-northeast-1')

# 画像ファイルを読み込んでバイト列を取得
with open('./泳ぐ女性.jpg', 'rb') as source_image:
    source_bytes = source_image.read()

# AWSへバイト列を渡し、顔分析結果を受け取る
response = client.detect_faces(Image={ 'Bytes': source_bytes},Attributes=['ALL'])
print(response)

上記が実際に、入力画像から詳細な顔認識結果を得るためのPythonサンプルです。
11行目のdetect_facesで、AttributesパラメータにAllを指定します。

実行結果(レスポンス)

{
	'FaceDetails': [
		{
			'BoundingBox': {
				'Width': 0.10961852222681046,
				 'Height': 0.16975530982017517,
				 'Left': 0.5423860549926758,
				 'Top': 0.3526102900505066
			},
			 'AgeRange': {
				'Low': 6,
				 'High': 14
			},
			 'Smile': {
				'Value': True,
				 'Confidence': 96.2066421508789
			},
			 'Eyeglasses': {
				'Value': False,
				 'Confidence': 97.6272964477539
			},
			 'Sunglasses': {
				'Value': False,
				 'Confidence': 99.9966812133789
			},
			 'Gender': {
				'Value': 'Female',
				 'Confidence': 99.99646759033203
			},
			 'Beard': {
				'Value': False,
				 'Confidence': 93.72439575195312
			},
			 'Mustache': {
				'Value': False,
				 'Confidence': 98.21497344970703
			},
			 'EyesOpen': {
				'Value': False,
				 'Confidence': 62.69801712036133
			},
			 'MouthOpen': {
				'Value': True,
				 'Confidence': 94.70932006835938
			},
			 'Emotions': [
				{
					'Type': 'HAPPY',
					 'Confidence': 99.65362548828125
				},
				 {
					'Type': 'SURPRISED',
					 'Confidence': 6.299189567565918
				},
				 {
					'Type': 'FEAR',
					 'Confidence': 5.884213924407959
				},
				 {
					'Type': 'SAD',
					 'Confidence': 2.1580452919006348
				},
				 {
					'Type': 'CONFUSED',
					 'Confidence': 0.0657760351896286
				},
				 {
					'Type': 'DISGUSTED',
					 'Confidence': 0.05785580724477768
				},
				 {
					'Type': 'ANGRY',
					 'Confidence': 0.04922771453857422
				},
				 {
					'Type': 'CALM',
					 'Confidence': 0.017044730484485626
				}
			],
			 'Landmarks': [
				{
					'Type': 'eyeLeft',
					 'X': 0.5825510621070862,
					 'Y': 0.3998590409755707
				},
				 {
					'Type': 'eyeRight',
					 'X': 0.6174367666244507,
					 'Y': 0.4314084053039551
				},
				 {
					'Type': 'mouthLeft',
					 'X': 0.5621569752693176,
					 'Y': 0.45807960629463196
				},
				 {
					'Type': 'mouthRight',
					 'X': 0.5910769104957581,
					 'Y': 0.4845644533634186
				},
				 {
					'Type': 'nose',
					 'X': 0.5814960598945618,
					 'Y': 0.43160295486450195
				},
				 {
					'Type': 'leftEyeBrowLeft',
					 'X': 0.5767808556556702,
					 'Y': 0.3797701299190521
				},
				 {
					'Type': 'leftEyeBrowRight',
					 'X': 0.5943266749382019,
					 'Y': 0.3850482106208801
				},
				 {
					'Type': 'leftEyeBrowUp',
					 'X': 0.5865024924278259,
					 'Y': 0.37545496225357056
				},
				 {
					'Type': 'rightEyeBrowLeft',
					 'X': 0.6144145727157593,
					 'Y': 0.4029627740383148
				},
				 {
					'Type': 'rightEyeBrowRight',
					 'X': 0.6374925374984741,
					 'Y': 0.4344621002674103
				},
				 {
					'Type': 'rightEyeBrowUp',
					 'X': 0.6269071102142334,
					 'Y': 0.411628395318985
				},
				 {
					'Type': 'leftEyeLeft',
					 'X': 0.5771717429161072,
					 'Y': 0.39566418528556824
				},
				 {
					'Type': 'leftEyeRight',
					 'X': 0.5891825556755066,
					 'Y': 0.4066116511821747
				},
				 {
					'Type': 'leftEyeUp',
					 'X': 0.5832312107086182,
					 'Y': 0.39622947573661804
				},
				 {
					'Type': 'leftEyeDown',
					 'X': 0.5816190242767334,
					 'Y': 0.40232759714126587
				},
				 {
					'Type': 'rightEyeLeft',
					 'X': 0.6102693676948547,
					 'Y': 0.4256235957145691
				},
				 {
					'Type': 'rightEyeRight',
					 'X': 0.6243975758552551,
					 'Y': 0.43844717741012573
				},
				 {
					'Type': 'rightEyeUp',
					 'X': 0.6182647943496704,
					 'Y': 0.427870512008667
				},
				 {
					'Type': 'rightEyeDown',
					 'X': 0.6161149144172668,
					 'Y': 0.43360966444015503
				},
				 {
					'Type': 'noseLeft',
					 'X': 0.5759546756744385,
					 'Y': 0.4401973485946655
				},
				 {
					'Type': 'noseRight',
					 'X': 0.5888327360153198,
					 'Y': 0.45193007588386536
				},
				 {
					'Type': 'mouthUp',
					 'X': 0.5763760805130005,
					 'Y': 0.45813649892807007
				},
				 {
					'Type': 'mouthDown',
					 'X': 0.5702818632125854,
					 'Y': 0.47684305906295776
				},
				 {
					'Type': 'leftPupil',
					 'X': 0.5825510621070862,
					 'Y': 0.3998590409755707
				},
				 {
					'Type': 'rightPupil',
					 'X': 0.6174367666244507,
					 'Y': 0.4314084053039551
				},
				 {
					'Type': 'upperJawlineLeft',
					 'X': 0.5705062747001648,
					 'Y': 0.4026917815208435
				},
				 {
					'Type': 'midJawlineLeft',
					 'X': 0.5517405867576599,
					 'Y': 0.46701860427856445
				},
				 {
					'Type': 'chinBottom',
					 'X': 0.561085045337677,
					 'Y': 0.5118287801742554
				},
				 {
					'Type': 'midJawlineRight',
					 'X': 0.6135259866714478,
					 'Y': 0.5230182409286499
				},
				 {
					'Type': 'upperJawlineRight',
					 'X': 0.646816611289978,
					 'Y': 0.471271276473999
				}
			],
			 'Pose': {
				'Roll': 28.84288215637207,
				 'Yaw': -16.315746307373047,
				 'Pitch': 13.813894271850586
			},
			 'Quality': {
				'Brightness': 96.46727752685547,
				 'Sharpness': 16.49492073059082
			},
			 'Confidence': 99.9798812866211
		}
	],
	 'ResponseMetadata': {
		'RequestId': 'c97f95e8-dc29-4b95-93f7-1f0f510a9d9d',
		 'HTTPStatusCode': 200,
		 'HTTPHeaders': {
			'x-amzn-requestid': 'c97f95e8-dc29-4b95-93f7-1f0f510a9d9d',
			 'content-type': 'application/x-amz-json-1.1',
			 'content-length': '3340',
			 'date': 'Sat,
			 11 Jun 2022 07 : 12 : 17 GMT'
		},
		 'RetryAttempts': 0
	}
}

かなり長いレスポンス(JSON)になりますが、詳細な顔認識結果を取得できます。

 

Pythonサンプル使用の前提

・AWSアカウント作成済み
・AWSキー情報を、自分のPCに初期設定済み

上記の準備の上、ご使用ください。

 

まとめ

Amazon Rekognitionで、詳細な顔認識結果を得る方法を解説しました。

みなさんもAmazon Rekognitionの、詳細な顔認識結果を分析して、皆さんならではの活用方法を考えてみてはどうでしょうか。

最後まで読んでいただき、ありがとうございます。
また、お会いしましょう。