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®ガイド入門 新入社員 横山哲也 DX re:Invent セキュリティ AI(人工知能) PMP試験問題に挑戦 AWS認定トレーニング 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 CCNP Security Windows PowerShell クリエイティビティ コーチング AWS_DiscoveryDay AWSトレーニングイベント Google Cloud ITインフラ ITエンジニア PMP試験対策一問一答 ダイバーシティ プロジェクト プロトタイプビルダー 試験対策問題 GCP無料セミナー Google Cloud Platform G検定 Power Platform oVice アワード クリティカルシンキング サンプル問題 ステークホルダー ディープラーニング リーダー ワーケーション 女性活躍 新入社員研修 自律