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_allpatch_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社の厳格なテクニカルスキル及びティーチングスキルチェックに合格した認定トレーナーがコースを担当します。AWS初心者向けの研修や、AWS認定資格を目指す人向けの研修をご提供し、皆様のAWS知識修得のサポートをいたします。
トレノケートのAWS研修(AWS認定トレーニング)はこちら


▼AWS初心者の方は、   AWS Cloud Practitioner Essentialsから!
座学中心の研修で、AWSを初めて学ぶ方や、営業などで提案に関わる方におすすめです。
「AWS Certified Cloud Practitioner」資格取得を目指す方の基礎知識修得にも最適です。
→ AWS Cloud Practitioner Essentials 詳細・日程はこちらから

​​​​​​​​​

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

トレノケート株式会社 講師。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として表彰されている。また、各コミュニティの運営にも個人的に関わり、勉強会にてスピーカーや参加をしている。

無料ダウンロード

オススメコンテンツ

オススメ記事

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