AWS(Rekognition)と
Pepperでご機嫌解析
#iotlt
IoT縛りの勉強会
/SIer主催
SIerIoTLT
vol9@サポータ
ーズ
2018/6/18
#iotlt
山下 光洋
自己紹介
山下光洋
@yamamanx
Blog : www.yamamanx.com
・ソフトウェア開発会社でIBMさんのBP
・ナイトレジャー会社,エネルギー会社で情シス
・AAI(AWS認定インストラクター)、
IT Terchnical Training Engineer@Trainocate
ヤマムギ(勉強会) , JAWS-UG,
JAWS-UG IoT関西支部, kintone Cafe大阪,
JP_Stripes, MasterCloud
The八番街ベース
緑のLv16 Lv35
ZOZOSUITS試してみました
Pointing Device User Groupはじめました
あいも変わらず呑んでおります
今日お話すること
PepperとAWSで顔認識
(全スライド撮影OKです)
(1)Pepperについて
(2)Amazon Rekognitionについて
(3)やったことの説明
#nsesaruru
1.Pepperについて
身長 : 121cm
体重 : 29kg
(小学校3~4年生)
OS : NaoqiOS
#nsesaruru
1.Pepperについて
アクション多彩
画像認識, 撮影
距離測定, 3D形状把握
身振り手振り
踊り(20自由度)
音声/言葉の認識
発話/音の再生
画像/動画の表示
WiFi
#nsesaruru
1.Pepperについて
センサー類合計 27
頭部タッチセンサー x 3
RGBカメラ x 2
マイク x 4
3Dセンサー x 1
ジャイロセンサー x 2
レーザーセンサー x 6
手部タッチセンサー x 2
ソナーセンサー x 2
バンパーセンサー x 3
赤外線センサー x 2
#nsesaruru
1. Pepperについて
開発するときに使うのがChoregraphe
#nsesaruru
2. Amazon Rekognitionについて #nsesaruru
2. Amazon Rekognitionについて
ディープラーニングベースの視覚分析サービス。
数百万ものイメージとビデオを検索、検証、整理。
強力な視覚分析をアプリケー
ションに容易に統合
ディープラーニングの専門知
識なしにイメージやビデオ分
析を行える。
簡単なAPIで強力で正確な分
析を利用可能。
継続的学習
毎日膨大な数のイメージやビデ
オを分析するように設計。
新機能、学習対象のデータの増
大に伴って継続的に学習。
AWSのサービスと統合
他のAWSのサービスとシーム
レスに設計。
S3、Lambdaと直接統合。
低コストで構築。
Kinesis動画ストリームに対し
てもリアルタイムにビデオ分
析。
#nsesaruru
2. Amazon Rekognitionについて #nsesaruru
2. Amazon Rekognitionについて #nsesaruru
2. Amazon Rekognitionについて #nsesaruru
2. Amazon Rekognitionについて #nsesaruru
2. Amazon Rekognitionについて #nsesaruru
2. Amazon Rekognitionについて #nsesaruru
2. Amazon Rekognitionについて #nsesaruru
2. Amazon Rekognitionについて
● can_paginate()
● compare_faces()
● create_collection()
● create_stream_processor()
● delete_collection()
● delete_faces()
● delete_stream_processor()
● describe_stream_processor()
● detect_faces()
● detect_labels()
● detect_moderation_labels()
● detect_text()
● generate_presigned_url()
● get_celebrity_info()
● get_celebrity_recognition()
● get_content_moderation()
● get_face_detection()
● get_face_search()
● get_label_detection()
● get_paginator()
● get_person_tracking()
● get_waiter()
● index_faces()
● list_collections()
● list_faces()
● list_stream_processors()
● recognize_celebrities()
● search_faces()
● search_faces_by_image()
● start_celebrity_recognition()
● start_content_moderation()
● start_face_detection()
● start_face_search()
● start_label_detection()
● start_person_tracking()
● start_stream_processor()
● stop_stream_processor()
Boto3
Rekognition Client
#nsesaruru
2. Amazon Rekognitionについて
アカウント作成後12ヶ月の無料利用枠
1ヶ月あたり5,000枚の画像分析
1ヶ月あたり1,000個の顔メタデータ保存
1ヶ月あたり1,000分の動画分析
処理画像数 1,000枚あたりの課金
1.30USD ~ 0.50USD(東京リージョン)
分析したアーカイブ動画 1分あたり
0.13USD(東京リージョン)
分析したライブストリーム動画 1分あたり
0.15USD(東京リージョン)
保存された顔メタデータ 1,000件あたりの料金
0.013USD(東京リージョン)
#nsesaruru
3. やったこと
Pepperに「顔を見て」と言うと追いかけてきて写真を取られます。
その写真はAPI Gatewayを経由してLambdaによりS3にアップロードされます。
S3の写真に対してRekognitionが顔を分析した結果をLambdaよりAPI Gatewayを
経由してレスポンスとして返します。
顔の分析結果をPepperが受け取って教えてくれます。
#nsesaruru
3. やったこと #nsesaruru
3. やったこと
日本語に設定 音声受付 顔追跡 写真撮影
API呼び出し
レスポンス処理
発声
写真表示
会社ロゴ表示
#nsesaruru
3. やったこと
s3 = boto3.resource('s3')
bucket = s3.Bucket(os.environ['BUCKET_NAME'])
#eventデータから画像ファイルを取得
image_body = base64.b64decode(event['body-json'])
#乱数でオブジェクトキーを生成
n = 10
key = ''.join([random.choice(string.ascii_letters + string.digits) for i in range(n)])
#S3バケットに画像ファイルをアップロード
bucket.put_object(
Body=image_body,
Key=key
)
API Gateway経由でLambdaからS3に画像ファイルをアップロード
#nsesaruru
3. やったこと
client = boto3.client('rekognition')
response = client.detect_faces(
Image={
'S3Object': {
'Bucket': os.environ['BUCKET_NAME'],
'Name': key
}
},
Attributes=['ALL']
)
S3の画像ファイルをRekognitionで顔分析
#nsesaruru
3. やったこと
"AgeRange": {"Low": 26,"High": 43},
"Gender": {"Value": "Female","Confidence": 52.36514663696289},
"Smile": {"Value": true,"Confidence": 88.67390441894531},
"EyesOpen": {"Value": true,"Confidence": 99.9950942993164},
"Beard": {"Value": false,"Confidence": 99.86187744140625},
"Emotions": [
{"Type": "HAPPY","Confidence": 97.94617462158203},
{"Type": "CALM","Confidence": 3.9698123931884766},
{"Type": "DISGUSTED","Confidence": 3.0542492866516113}
]
分析結果のレスポンス(一部)
#nsesaruru
3. やったこと
#画像データ
data = open(file_path, 'rb').read()
#API呼び出し
response = requests.post(
url=api_url,
data=data,
headers={'Content-Type': 'image/jpg'}
)
#レスポンスを文字列へ変換
data = response.json()['FaceDetails'][0]
age_low = data['AgeRange']['Low']
age_high = data['AgeRange']['High']
~~~~~~後略~~~~~~~
PepperのPythonからAPI呼び出し
#nsesaruru
まとめ #nsesaruru
Rekognitionかしこい
Pepperかしこい
顔分析を元に、
食べたいものを解析して、
ランチ案内とかしたい。
JAWS FESTA 2018
ご清聴ありがとうございました。
Special Thanx to…..

AWS(Rekognition)と Pepperでご機嫌解析