catch-img

200枚のプロフィール写真から奇跡の1枚をAmazon Rekognitionに選んでもらいました

こんにちは。ラーニングサービス部 TT1チーム兼プロトタイプビルダーの山下です。
先日、プロフィール写真を撮影しまして、200枚少しの中から選ぶというタスクがありました。
せっかくなのでRekognitionさんに選んでもらいました。

Amazon Rekognitionとは

normal-Dec-05-2023-09-25-21-3836-AM

Amazon Rekognitionは、画像と動画を構築済みのモデルで分析する機械学習サービスです。
上のイメージ例では、私の2枚の写真を比較して、同一人物の可能性が93.3%という結果になりました。
このように写真の大きさやメガネの有無、髪型や背景などが違っていても分析してくれます。
他には、写真に何が写っているかを自動判定したり、わいせつな違反画像を自動検知したり、有名人の画像が勝手に使われていないか検知したり、写真の表情を解析したりすることができます。

以前、Pepperが自動撮影した写真をRekognitionによって分析して、結果をPepperに話してもらうというデモをしました。

  新宿ラーニングセンターのPepperにAmazon Rekognitionで顔の分析をしてもらいました 新宿ラーニングセンターのPepperが撮影した写真をAmazon Rekognitionで分析してその結果をしゃべるというデモをしました トレノケート公式ブログ

 

やったこと

今回はこの表情の分析機能を使って、200枚以上のプロフィール写真から最も幸せ度の高い写真を選んでもらいました。

normal (1)-Dec-05-2023-09-25-35-2159-AM

 

アーキテクチャはシンプルです。
S3に写真画像ファイルをマネジメントコンソールから一気に全部アップロードします。
S3のオブジェクト作成イベントで、Lambdaを実行してRekognitionにDetectFacesをリクエストして結果をDynamoDBにPutItemします。
DynamoDBテーブルでは、Smile属性とHappy属性のローカルセカンダリインデックスを用意しておいて、後で検索しやすくしておきました。
今回は最もHappy属性の数値が高い写真をプロフィール写真にしました。

ソースコードはこちらです。


import json
import boto3
from decimal import Decimal
from urllib.parse import unquote_plus
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all
patch_all()
def add_face_details (payload, face_details):
print(payload)
attributes = [
'Smile',
'Eyeglasses',
'Sunglasses',
'Gender',
'Beard',
'Mustache',
'EyesOpen',
'MouthOpen'
]

for attribute in attributes:
if attribute in face_details:
payload[attribute] = Decimal(face_details[attribute]['Confidence'])
return payload
def add_face_emotions (payload, emotions):
for emotion in emotions:
payload[emotion['Type']] = Decimal(emotion['Confidence'])
return payload
def lambda_handler (event, context):
rekognition = boto3.client('rekognition')
table = boto3.resource('dynamodb').Table('ProfilePhotos')
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = unquote_plus(record['s3']['object']['key'])
face_response = rekognition.detect_faces(
Image={
'S3Object': {
'Bucket': bucket,
'Name': key
}
},
Attributes=[
'ALL',
]
)
payload = {
'Prefix': key.split('/')[0],
'ObjectKey': key
}
payload = add_face_details(
payload,
face_response['FaceDetails'][0] )
if 'Emotions' in face_response['FaceDetails'][0]: payload = add_face_emotions(
payload,
face_response['FaceDetails'][0]['Emotions']
)
table.put_item(
Item=payload
)

 

 

結果発表

こちらがRekognitionさんが最もHappy属性が高い(99.601)とした写真です。
確かに幸せそうです。

normal (2)-Dec-05-2023-09-25-45-7049-AM

こちらのプロフィールで使用しています。

  アマゾン ウェブ サービス(AWS)認定トレーニング | IT研修のトレノケート 【オンライン研修も対応・AWS認定トレーニングならトレノケートへ】トレノケートはAWS認定トレーニングパートナー(ATP)として、AWS入門からAWS認定資格対応の研修まで多数開催しています。「AWS Authorized Instructor Champion」に認定された講師や複数の資格を所有した講師が、皆様のAWS知識修得をサポートいたします。 https://www.trainocate.co.jp/reference/aws/index.html

このように、手作業で1枚づつ確認するような気の遠くなる作業をしなくても、一瞬で結果を求められるのって幸せですね。
そして、人の好みが入らない評価で選ぶことができることで、公平性もあるのかもしれません。

ちなみに、最もHappy属性が低い(0.101)とされた写真です。

normal (3)-Dec-05-2023-09-26-00-0759-AM


​​​​​​​

トレノケートのAWS認定トレーニング

トレノケートのAWS認定トレーニングでは、AWS社の厳格なテクニカルスキル及びティーチングスキルチェックに合格した認定トレーナーがコースを担当します。
「AWS Authorized Instructor Champion」に認定された講師や、複数の資格を所有した講師が、
皆様のAWS知識習得をサポートいたします。

AWS認定トレーニングを見る ​​​​​​​

山下 光洋(やました みつひろ)

トレノケート株式会社 講師。AWS Authorized Instructor Champion / AWS認定インストラクター(AAI) / AWS 認定ソリューションアーキテクト - プロフェッショナル /AWS認定DevOpsエンジニア - プロフェッショナル / AWS 認定デベロッパー - アソシエイト / AWS 認定 SysOps アドミニストレーター - アソシエイト / AWS 認定クラウドプラクティショナー / kintone認定 カスタマイズスペシャリスト他。AWS認定インストラクターとしてAWS認定コースを実施。毎年1,500名以上に受講いただいている。AWS 認定インストラクターアワード2018, 2019を日本で唯一受賞。著書『AWSではじめるLinux入門ガイド』(マイナビ出版社)。共著書『AWS認定試験対策 AWS クラウドプラクティショナー』(SBクリエイティブ社)。前職では2016年にAWS Summitにパネラーとして参加。その前はLotus Technical Award 2009 for Best Architectとして表彰されている。また、各コミュニティの運営にも個人的に関わり、勉強会にてスピーカーや参加をしている。

無料ダウンロード

オススメコンテンツ

オススメ記事

プロジェクトマネジメント PMP AWS ビジネススキル Microsoft PMBOKⓇ 田中淳子 IT資格 人材育成 山下光洋 AMA Azure コミュニケーション 人材開発用語集 PMBOK®ガイド入門 クラウド ITスキル 新入社員 横山哲也 PMP試験問題に挑戦 re:Invent セキュリティ 人材育成応援ラジオ DX Cisco PMBOKⓇガイド 第6版 試験体験記 イベント・セミナー PMBOK®ガイド第6版の変更点 人材開発 CCIE CCNA テレワーク ネットワーク リモートワーク 研修 AI(人工知能) GCP PMP(R)試験問題 第6版対応 PMP合格体験記 Windows Server AWS_Q&A Active Directory IT人材 IT資格解説 アセスメント デジタルビジネス ヒューマンスキル リーダーシップ 人気コースランキング 大喜利 部下の育成 Conversations PMの心得 キャリア グローバル人材 新入社員研修といえば DX人材育成 IoT OJT reinvent2022 CCNP Security Windows PowerShell クリエイティビティ プログラミング リスキリング 人材トレンド 試験対策問題 PMP試験対策一問一答 コーチング プロジェクト プロトタイプビルダー 1on1 AWS_DiscoveryDay AWSトレーニングイベント GCP無料セミナー Google Cloud Google Cloud Platform G検定 ITインフラ oVice アワード クリティカルシンキング サンプル問題 ステークホルダー ダイバーシティ ディープラーニング ワーケーション 自律 試験Tips AI人材 Linux PMI Power Platform Python Teams Web会議 kintone アイデア