AWSのAI画像認識AI(Amazon Rekognition)で、顔写真からその人の名前を判別するには、compare_facesを使用します。
目次
AI画像認識で、顔写真から名前を判別するには【AWS】
事前登録の写真(アリス、ボブ)
1枚目がアリスの事前登録写真、2枚目がボブの事前登録写真になります。
こちらの2枚の画像を、名前判定に使用します。
名前を判別したい写真1(アリス)
こちらも、アリスの写真になります。
事前の登録写真と雰囲気がかなり異なりますね。
さて、AWSのAIは、写真の人物の名前をアリスと、正しく判別できるでしょうか?
顔比較結果【AWS】
AWSの顔比較結果は、顔の一致度:99.9%と、高いスコアとなりました。
したがって、AWSのAIは、上記の2つの顔画像を同じアリスと判定できています。
Pythonサンプル
以下は実際に、判定したい写真1を登録写真と順に比較して、名前を判別するPythonサンプルです。
import boto3
#boto3のclient作成、AWSサービス名とリージョンを指定
client = boto3.client('rekognition','ap-northeast-1')
# 事前登録の顔写真を読み込んでバイト列を取得
source_bytes = {}
with open('./Alice.jpg', 'rb') as source_image:
source_bytes['Alice'] = source_image.read()
with open('./Bob.jpg', 'rb') as source_image:
source_bytes['Bob'] = source_image.read()
# 判定写真を読み込んでバイト列を取得
with open('./判定写真.jpg', 'rb') as target_image:
target_bytes = target_image.read()
# 判定写真と、事前登録の画像ファイルとを、順に比較する
for name in source_bytes:
# AWSへバイト列を渡し、顔比較結果を受け取る
response = client.compare_faces(SourceImage={'Bytes': source_bytes[name]},
TargetImage={'Bytes': target_bytes})
# レスポンスに顔の一致度があり、一致度95%以上なら本人と判断する
if len(response['FaceMatches']) > 0:
if(response['FaceMatches'][0]['Similarity'] > 95):
print('判定写真.jpg は、' + name + ' です')
break
実行結果
判定写真.jpg は、Alice です
判定写真1の人物はアリスと、名前をしっかり判別できています。
別の顔写真でも、名前判別できるか
では、判定写真を変えて上記のPythonサンプルを実行した場合でも、名前を正しく判別できるでしょうか。
名前を判別したい写真2(ボブ)
実行結果
判定写真.jpg は、Bob です
判定写真2の人物はボブ、とボブの写真でも名前をしっかり判別できました。
Pythonサンプル使用の前提
・AWSアカウント作成済み
・AWSキー情報を、自分のPCに初期設定済み
上記の準備の上、ご使用ください。
まとめ
Amazon Rekognitionで、写真の人物の名前を判別する方法を解説しました。
みなさんも、スマホで撮影した身近な人の写真で、名前判別のプログラムを作成して遊んでみてはどうでしょうか。
最後まで読んでいただき、ありがとうございます。
また、お会いしましょう。