[レポート] ANT208: Amazon Kinesis Video Streamsを使ったサーバレスビデオインジェストと解析 #reinvent

AWS re:Invent2018にてセッション ANT208 「Serverless Video Ingestion & Analytics with Amazon Kinesis Video Stream」を聴講してきたのでレポートします。
2018.11.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

清水です。AWS re:Invent2018にてセッション ANT208 「Serverless Video Ingestion & Analytics with Amazon Kinesis Video Stream」を聴講してきたのでレポートします。

セッションの概要は下記になります。

Amazon Kinesis Video Streams makes it easy to capture live video, play it back, and store it for real-time and batch-oriented ML-driven analytics. In this session, we first dive deep on the top five best practices for getting started and scaling with Amazon Kinesis Video Streams. Next, we demonstrate a streaming video from a standard USB camera connected to a laptop, and we perform a live playback on a standard browser within minutes. We also have on stage members of Amazon Go, who are building the next generation of physical retail store experiences powered by their "just walk out" technology. They walk through the technical details of their integration with Kinesis Video Streams and highlight their successes and difficulties along the way.

スピーカーは下記のお二人です。

  • Aditya Krishnan - Head of Kinesis Video
  • Ameet Vaswani - Senior Manager, Software Development

レポート

まずはAditya Krishnanさんから、Amazon Kinesis Video Streamsの概要やキーコンポーネントなどの紹介がありました。

Kinesis Video Streams概要

  • ビデオはいろいろなアプリケーションで重要である
    • スマートホーム、スマートシティ、セキュリティ用の監視、産業オートメーション、コンピュータビジョン
  • しかし、ビデオシステムの構築は複雑である
    • たくさんのデバイスや開発環境ごとにコードを書き直すことの面倒さ
    • 何百万というデバイスにelasticにスケールすることの難しさ
    • ストリームのcadence, latency, jitterに対する高い信頼性の高いサポートが必要
    • デフォルトでセキュアなストリーミングとストレージが必要
    • 任意の尺でビデオを取得、再生、処理するための使いやすいAPIが必要
  • Amazon Kinesis Video Streams
    • ストリームビデオをリアルタイムで再生、保存、解析可能
      • 何百万ものデバイスからビデオをストリーミング
      • ビジョン対応アプリを簡単に構築可能
      • ライブまたはオンデマンドモードでの再生
      • 耐久性のある検索可能なストレージ
      • セキュアでフルマネージメント

ターゲットとするユースケース

  • スマートホーム
    • ペットの監視
  • スマートシティ
  • 産業オートメーション
    • 機器予防保守

Kinesis Video Streamsのキーコンポーネント

Kinesis Video Streams Producer SDKs

  • カメラソースから簡単に接続、ストリームが可能
  • デバイスのハードウェアメディアパイプラインと統合する柔軟なSDK
    • カメラやデバイスのタイプに合わせた独自のインテグレーションが可能
  • AWSの認証メカニズムとの強盗(SigV4/AWS IoT認証)
    • 安全なauthNとauthZを使ってAWSとデバイスを接続できる
  • 信頼性の高い方法で継続的にストリーミングするためのPut APIを処理可能
    • 優先して転送シナリオに基づいてビデオデータをストリーミング可能
  • デバイスからのビデオフラグメントに直接メタデータを追加可能
    • クラウドベースの解析やより高度なインデックスがビデオフラグメントに対して可能
  • 簡単に試すにはDocker imagesが使用可能
  • Producer Applicationの開発、構築のためOSにアプリケーションインストールも可
  • よりパフォーマンスよく統合するためのカメラのプラットフォームごとにビルドも可

Kinesis Video Streams API overview

  • 10種からなるControl Plane APIs
    • CreateStream
    • DeleteStream
    • DescribeStream
    • ListStreams
    • GetDataEndpoint
    • UpdateDataRetention
    • UpdateStream
    • TagStream
    • ListTagsForStream
    • UntagStream
  • 4種からなるData Plane APIs
    • PutMedia
    • GetMedia
    • GetMediaForFragmentList
    • ListFragments
  • Playback API
    • GetHLSStreamingSessionURLMeida
      • GetHLSMasterPlaylist
      • GetHLSMediaPlaylist
      • GetMP4InitFragment
      • GetMP4MediaFragment

Kinesis Video Streamsのプロセシングエコシステム

  • Kinesis Video StreamsのParser Library
    • GetMedia outputを簡単に操作できるオープンソースのJavaライブラリ
    • フレームレベルのオブジェクトと関連付けられたメタデータの取得
    • ビデオフラグメント固有のメタデータの抽出と適用
    • 連続したフラグメントのマージ
    • JPEGまたはPNG形式へのデコード(機械学習時に必要)
    • カスタムの機械学習やvideo処理アプリケーションが構築可能
    • 1000のストリームを同時に処理するためにスケール
  • Kinesis Video Streams Inference Template for Amazon SageMaker https://aws.amazon.com/jp/blogs/machine-learning/analyze-live-video-at-scale-in-real-time-using-amazon-kinesis-video-streams-and-amazon-sagemaker/

Amazon Goでの利用例

ここでAmeet Vaswaniさんに代わって、Amaozn GoでのAmazon Kinesis Video Streamsの利用例の紹介がありました。

まずは、以下とほぼ同じ?動画を流しAmazon Goの紹介です。

  • 機械学習、コンピュータビジョン、AI、センサーを駆使したレジなし店舗
    • どうやって、人と商品、会計を紐づけているのか?
    • 実際の店舗では、すごい混雑している。人たくさん、商品もたくさん
    • カメラ(画像)で判別? いろいろなかたちとかがあって一筋縄では…
    • Amazon Goチームは、コンピュータビジョンも駆使
  • Amazon GoとKinesis Video Streamsのパートナーシップ
    • Amazon Goとしては、独自機能にフォーカスしたい。また低コスト化、市場導入までの時間短縮、運用上の不可の低減、などがねらい
    • Kinesis Video Streamsとしては
    • Amazon Goはアーリーアダプターとなる。実世界のアプリケーションでの導入、プロダクションのスケールとなる
  • 問題点となって点とどのように克服したか
    • 以前のバージョンのC++のKinesis Video Streams Producer SDKでは、要求に対してカスタマイズが必要だった
    • non-streamingなPUT APIのサポート
    • エンドツーエンドのレイテンシに対するタイトな境界
    • サービス上限の引き上げ(ソフトリミットとハードリミットを理解する)

感想

昨年のre:Invent2017で発表されたAmazon Kinesis Video Streamsの紹介と、Amazon Goでの事例紹介のセッションでした。映像(ビデオ)の解析については、Amazon Elastic TransocderやAWS Media Servicesなどを使って動画からサムネイル画像を抽出、機械学習などにかけるということも可能ですが、処理速度やデバイスとの連携など様々な面で課題が出てくるかと思います。その点をAmazon Kinesis Video Streamsと連携することで解決が図れるのではないでしょうか。私はこれまでKinesis Video Streamsは触ったことはなかったのですが、MediaLiveとの連携(HLSファイルとの連携)もできるようですし、調査してみたいなと思いました。