Amazon Rekognitionでイベント参加者の顔写真を解析して似ている人ランキングをその場で作る
2017/10/19
2017/9/21に開催されたAWS Cloud Roadshow 2017 大阪のナイトイベント「JAWS-UG in AWS Cloud Roadshow 2017 大阪」の一部の企画として、当日お越しいただいた参加者の顔写真と、事前に設定している6人の有名人の写真との顔比較を行って、一番似ている人に豪華景品、という催し物をしました。
前日までに準備しておけばよかったのですが、前日まで夜な夜なパーティーが続いていたため、当日の朝に1時間半で準備しました。
結論は、Amazon Rekognitionを使えば、こんなことも1時間半で実現出来てしまうんだと、感動とそしてかなりほっとしました。
構成はこちらです。
Amazon AthenaとQuickSightは15分程度で出来ました。
Lambda Function
ソースコードはこちらです。
ランタイムはPython 3.6です。
1 2 |
client = boto3.client('rekognition') |
Rekognitionクライアントをboto3.clientで作ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
response = client.compare_faces( SourceImage={ 'S3Object': { 'Bucket': bucket_name, 'Name': key } }, TargetImage={ 'S3Object': { 'Bucket': bucket_name, 'Name': target_key } }, SimilarityThreshold=0 ) |
compare_facesで比較します。
SourceImageとTargetImageを比較します。
両方ともS3にJPGとPNG形式で画像があるので、バケット名とキーを指定します。
SimilarityThresholdで最低の敷居値を指定します。
今回は類似値0.1%とかも全部拾って欲しいので0を指定しました。
1 2 |
similarity = response['FaceMatches'][0]['Similarity'] |
responseのFaceMatchesにSimilarityという値があるので、それ拾って別のS3バケットへJSONで格納します。
S3に格納した後はAthenaでクエリー発行してテーブル構造にしてQuickSihtで可視化します。
Athenaでテーブルを作ったときのQuery
GUIから設定してクエリーを生成することが出来ます。
1 2 3 4 5 6 7 8 9 10 11 |
CREATE EXTERNAL TABLE IF NOT EXISTS jawsugnight2017.compare_face ( `source` string, `target` string, `similarity` float ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://jawsugnight2017result/' TBLPROPERTIES ('has_encrypted_data'='false'); |
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
Lambda関数からAWS Systems Managerパラメータストアの値を取得して更新する
Lambda関数で自分自身の環境変数を更新する だと、Lambdaのエイリアスと …
-
VPCピア接続ではピア先VPCのセキュリティグループIDを指定できる
タイトルどおりです。 できることは知ってたのですが、試したことがなかったので、確 …
-
CloudFormationドリフト検出
CloudFormationスタックのドリフト検出を確認しました。 CloudF …
-
AWS ControlTowerで既存アカウントをまとめて追加
AWS Organizationsに新たに招待したアカウントをAWS Contr …
-
Route 53 の加重ラウンドロビンルーティングでロードバランサー
Route 53の加重ラウンドロビンで両方1に設定してみました。 上図はイメージ …
-
Amazon Location Service入門ワークショップ-マップの操作
関連記事 Amazon Location Service入門ワークショップの前提 …
-
IAMアイデンティティセンター(IIC)のList Assignment APIを確認しました
やりたいことは、IAMアイデンティティセンター(IIC)のユーザー名をキーにして …
-
Amazon Quantum Ledger Database(QLDB)でサンプル台帳の作成と検証
Quantum Ledger Database(QLDB)を触ったことなかったの …
-
Amazon Connectから問い合わせ追跡レコード(CTR)をエクスポート
Amazon Connectから発信した電話に出たのか、出なかったのかを確認した …
-
AWS Organizationsで組織全体のAWS CloudTrailを有効にしました
Organizationsのサービスメニューから、CloudTrailを選択して …