Slide 1

Slide 1 text

Amazon Kinesis Video Streams × Deep Learning JAWS-UG AI #6 2017/12/14 ABEJA, Inc Toshiya Kawasaki

Slide 2

Slide 2 text

河崎 敏弥 @toshitanian ABEJA, Inc. Platform Division Lead Engineer •創業1年の時にABEJAに参画 •バックエンドエンジニア •クラウド上でシステム構築 •IoTデバイスとのシステム連携 •コンテナ •エッジコンピューティング

Slide 3

Slide 3 text

社名 株式会社ABEJA 設立 2012年9月10日 住所 東京都港区虎ノ門4-1-20 田中山ビル10F 資本金 (資本準備金含む) 1,148,518,043円 企業理念 イノベーションで世界を変える 事業内容 ディープラーニングを活用した 産業構造変革

Slide 4

Slide 4 text

ABEJA Platform Ecosystem "

Slide 5

Slide 5 text

• エンジニア・デザイナが色々な話を書いてます • ML/DL • AWS・インフラ • IoT • デザイン ABEJA Tech Blog 5 http://tech-blog.abeja.asia/

Slide 6

Slide 6 text

•Kinesis Video Streams •Overview •How to use •Integrating with deep learning applications Agenda 6

Slide 7

Slide 7 text

Kinesis Video Streams Overview

Slide 8

Slide 8 text

8 re:Invent 2017でデモってきた https://www.youtube.com/watch?v=rjBXbktBxBg

Slide 9

Slide 9 text

• コーデック・コンテナ • ビデオの保存・管理方法 • ストリーミングプロトコル • カメラとの接続 • ffmpeg/gstreamer • etc… 画像系MLをやった事ある人 ビデオで苦しんだ事ありますよねʁ! Kinesis Video Streamsが、そのツラミを一部 吸収してくれます

Slide 10

Slide 10 text

• 映像版Kinesis Streams • 従来のKinesis StreamsはKinesis Data Streamsに改名 • 映像ストリームデータの保存・リアルタイムな取得ができる • フレーム単位でのデータ転送 • ミリ秒単位の遅延でデータの処理が可能 • 過去データの管理・検索・取得もできる • 数百万のデバイスからのビデオストリームにも対応 Kinesis Video Streams 10

Slide 11

Slide 11 text

• Computer Vision / Machine Learningでの解析を主用途にしている • Consumer側のSDKはJava • PythonからビデオストリームにアクセスできるハイレベルSDKはまだ無い • Kinesis Video Streams readyなカメラデバイスが今後出て来るハズ • Control Plane APIとData Plane APIを提供 • ストリームの管理用API • 暗号化、リテンションピリオド • ビデオデータのIngest/Consumeを実際に行うAPI Kinesis Video Streams (cont.) 11

Slide 12

Slide 12 text

• スマートホーム • ペット、老人の見守りカメラ • Amazon Key 的なシステム • スマートシティ • 犯罪防止 • 自動運転、自動車のナンバープレート検出 • リテール • リピーター検知、来店者属性推定 • 無人コンビニ • 製造 • 検品、異常検知 Use cases 12

Slide 13

Slide 13 text

Data flow 13 https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/how-it-works.html • Producer • データの送信元 • Java/C++ SDK • Video Stream • Consumer • データを取得・処理をするアプリ • streams-parser-library

Slide 14

Slide 14 text

• フレーム単位でのIngest/Consume • コンテナフォーマット • mkv (matroska) • Video/Audio以外でも乗せられる • 各トラックのデータ • 基本的に何でもOK • h264だとコンソールで確認できる • デコードはユーザがやる Data format 14 https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/how-it-works-kinesis-video-api-producer-sdk.html

Slide 15

Slide 15 text

Price 15 σʔλͷIngest σʔλͷConsume σʔλอଘ Kinesis Video Streams $0.01097/GB $0.01097/GB $0.02500/GB-mo ※追加でEC2に準じたデータ転送料金がかかります ※Tokyo regionの価格です •データ保存料金 + データのIngest/Consume •データ保存料金はS3と同じ •通常の利用用途の場合、S3の価格の2倍と考えてよさそう

Slide 16

Slide 16 text

Kinesis Video Streams How to use

Slide 17

Slide 17 text

• GitHub • awslabs / amazon-kinesis-video-streams-producer-sdk-cpp • awslabs/amazon-kinesis-video-streams-produscer-sdk-java • aws / amazon-kinesis-video-streams-parser-library • Kinesis Video Streams - Management console • quick start for C++ and Java Producer SDK • Developer Guide • Java / C++ producer library sample • Stream parser library sample 現在公開されているリソース 17 Consumerとして 動かしてみる Producerとして 動かしてみる

Slide 18

Slide 18 text

• MacBookのカメラ映像をリアルタイムにKinesis Video Streamに送る • 今公開されているproducerでは一番安定している GStreamer Producer Sample Application 18

Slide 19

Slide 19 text

$ git clone https://github.com/awslabs/amazon-kinesis- video-streams-producer-sdk-cpp.git $ cd amazon-kinesis-video-streams-producer-sdk-cpp $ cd kinesis-video-native-build $ ./install-script $ export AWS_ACCESS_KEY_ID=[KEY] $ export AWS_SECRET_ACCESS_KEY=[SECRET] $ ./kinesis_video_gstreamer_sample_app [stream-name] Running gst-sample 19

Slide 20

Slide 20 text

•Developer Guideのサンプルにはデータの取得部分は書いてない •putMedia APIからリアルタイムにデータを取得するサンプルはまだ公開 されていないみたいですね •AWS Java SDKと組み合わせるといいです Stream parser library sample (consumer) 20 https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/parser-library.html

Slide 21

Slide 21 text

Kinesis Video Streams Integrating with deep learning applications

Slide 22

Slide 22 text

re:Inventで実施したデモ 22 https://www.youtube.com/watch?v=rjBXbktBxBg&t=46m47s

Slide 23

Slide 23 text

re:Inventで実施したデモの構成 23 • MacBook上でGStreamerのアプリケーションを動かす • ECS上でVideo Processing • 1) Stream Parsing Library (Java)を使ってフレームの取得、JCodecでデコード、bitmapで保存 • 2) PythonのEstimatorが推論・レンダリング・結果の保存(yuv) • 3) gstramerのアプリケーションが別のStreamに送信 • Web Consoleで確認

Slide 24

Slide 24 text

• リアルタイム(ミリ秒レベルの遅延!)でデータが処理できる • 過去データの取得も可能 • トレーニングデータを作るのに必要 • 過去データへのモデルの再適用も結構やる • ビデオストリームのインフラを考えなくて良い • ビデオストリームの管理をやってくれる • 暗号化、保存期間設定、Management Consoleでの映像チェック 使ってみてわかった良さ 24

Slide 25

Slide 25 text

• Producer SDKの使い方が難しい • C++/Java SDK: Inputはエンコード済みフレームデータ • Android SDK: coming soon… • GStreamerサンプル: GStreamerの勉強 ✏ 使ってみてわかったツラミ 25

Slide 26

Slide 26 text

• Consumer側のプログラムを作るのが難しかった • Java… mkv… • http clientからstream parser libraryに非同期でデータを渡す方法 • streaming parser libraryでFrameデータを取れない時のデバッグ • 取得したFrameのDecodeは自分でやる必要がある • 僕はDeep Learningをしたいだけなのに… • 今後、ラッパーライブラリが出てくると思います 使ってみてわかったツラミ (cont.) 26

Slide 27

Slide 27 text

Kinesis Video Stream + Rekognition Video 27 http://docs.aws.amazon.com/rekognition/latest/dg/streaming-video.html • 試したかったけど、間に合いませんでした。 • Rekognition Video側でstreamのARNを指定するだけでOKっぽい • $0.12 per 1 min of live stream video analyzed (Oregon) • $0.12 /min × 60 min x 24hour x 30 days = $5,184 /mo • ご利用は計画的に

Slide 28

Slide 28 text

• YouTube: AWS re:Invent 2017: NEW LAUNCH! Introducing Amazon Kinesis Video Streams (ABD216) • https://www.youtube.com/watch?v=rjBXbktBxBg • YouTube: AWS re:Invent Launchpad 2017 - Amazon Kinesis Video Streams • https://www.youtube.com/watch?v=P0O3zBNbtk0 • Kinesis Video Streams - Developer Guide • https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html • Kinesis Video Stream + Rekognition Video • http://docs.aws.amazon.com/rekognition/latest/dg/streaming-video.html What’s next? 28

Slide 29

Slide 29 text

告知: ABEJA Cloud AI Night 29 http://eventregist.com/e/1222_abejanight