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
関連記事
-
-
S3オブジェクトロックを試しました
S3オブジェクトロックが必要になる要件に今のところ、出会ってないのでまだ設定した …
-
-
静的と動的って何ですか?と営業さんに聞かれたので端的に説明してみました
AWS認定クラウドプラクティショナーの勉強をしている営業さんに、「S3で静的オブ …
-
-
オンプレミスに見立てたオハイオリージョンにVyOSインスタンスを起動して東京リージョンからVPN接続
AWSクイックスタートのActive Directory Domain Serv …
-
-
AWS Personal Health Dashboardのパブリックイベントの記録
東京リージョンで発生したので、スクリーンショットを取っておいたので記録しておきま …
-
-
AWS Lambda(Python)からAmazon Connectで電話を発信する
自動で電話を発信する必要がありまして、電話発信APIを開発することになりましたの …
-
-
AWSアカウントの解約
アカウント作成メニュー確認のために作成したAWSアカウントを解約しました。 使っ …
-
-
RDSの拡張モニタリングを有効にしました
RDS for MySQLです。 変更メニューで、[拡張モニタリングを有効にする …
-
-
EFSをEC2(Amazon Linux 2)からマウントする
Amazon Elastic File Systemが東京リージョンに来たことも …
-
-
AWSアカウント内のCloudWatchアラームを削除する
やりたいこと 特定アカウント特定リージョン内のCloudWatdchアラームを全 …
-
-
このブログをAWS大阪リージョンへ移行しました
大阪リージョン爆誕!! 朝起きて寝ぼけながらリージョンを見てると。 「大阪リージ …

