AWSの画像認識で、笑顔検出するには【Python】

AWSの画像認識AI(Amazon Rekognition)で、画像から笑顔などの表情を検出するには、detect_facesを使用します。

AIで画像から笑顔を検出するには【AWS】

入力画像 笑顔の女性4人

入力画像は、笑顔の女性4人の画像です。
AWSのAIは、女性4人の笑顔を正しく検出できるでしょうか?

実際にAIで分析すると、次の結果になります。

検出画像

smilingスコア:①94.9 % ②96.2 % ③95.8 % ④83.7 %(左端から順)

女性4人の表情は、smilingスコア:80%以上と、笑顔スコアが高く検出できています。

したがって、AWSは笑顔をしっかり検出できています。
特に楽しそうな左側3人の女性は、smilingスコアも高くなっています。

Pythonサンプル

import boto3

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

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

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

# 画像の左側の顔から順にソートする
faces = response['FaceDetails']
faces_s = sorted(faces, key=lambda x: x['BoundingBox']['Left'])

# 笑顔の場合、smilingスコアを表示
for face in faces_s:
    if face['Smile']['Value'] == True:
        print('smiling:' + str(round(face['Smile']['Confidence'],1)) + '%')

入力画像から複数の顔を検出し、そのsmilingスコアを表示するPythonサンプルです。
入力画像の左側の顔から順に、笑顔の場合にsmilingスコアを表示します。

実行結果

smiling:94.9%
smiling:96.2%
smiling:95.9%
smiling:83.7%

入力画像の女性4人のsmilingスコアを、しっかり検出できています。

 

Pythonサンプル使用の前提

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

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

まとめ

Amazon Rekognitionで、画像から笑顔検出する方法を解説しました。
みなさんも、身近な人の写真で、いろいろな表情を検出してみてはどうでしょうか。

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