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
関連記事
-
-
RDS + VPC + Lambda + API Gateway + CloudFront + WAF + ACMでAPIを構築する
RDSのMySQLの情報を与えられたリクエストをキーにしてjsonで返すAPIを …
-
-
AWS EC2 でインスタンスにIPアドレスを紐付ける
AWS EC2で作ったサーバは何もしなければ起動するたびにIPアドレスが変わって …
-
-
AWSアカウント ルートユーザーのMFAが使えなくなったので復旧
AWSのルートユーザーどころか、MFAが使えるログインすべてが使えなくなって焦り …
-
-
WordPress、プラグインのアップデートしてBlue/Greenデプロイ
現在のブログの構成です。 WordPressとプラグインのアップデートをして、デ …
-
-
AWS Summit 2016 Tokyoに参加してきました (Day2)
馬込は非常に良い天気です。 泊まっている部屋が2Fでしたので窓を明けると歩いてい …
-
-
CodeGuru ProfilerでLambda関数(Python 3.9)のパフォーマンスを確認した
CodeGuru ProfilerでPython 3.9のLambda関数の推奨 …
-
-
EFSをEC2(Amazon Linux 2)からマウントする
Amazon Elastic File Systemが東京リージョンに来たことも …
-
-
AWS Lambdaで Unable to import module エラーが発生したときは
そもそも、Pycharmのナビゲーションペインでディレクトリごとドラッグ& …
-
-
AWS Secrets Manager交代ユーザーローテーション
AWS Secrets Managerの交代ユーザーローテーションを確認してみま …
-
-
AWS Lambda KMSを使って環境変数を暗号化、復号化する(Python)
Lambda内で外部APIを使用する場合などをユースケースとして、環境変数をKM …

