MEGAZONEブログ
Amazon Kinesis Video Streamsによるエッジでの多数のIPカメラの管理
Managing many IP cameras at the edge with Amazon Kinesis Video Streams
Pulisher : Cloud Technology Center チュ・ジェビン
Description : Amazon Kinesis Video Streamsとエッジで動作するKinesis Video Streams Edge Agentの紹介セッション
はじめに
最近、私たちのチームでカメラからアップロードされる映像をエッジで処理し、クラウドにアップロードする要件を練習した事例があります。その内容について、具体的なアーキテクチャのガイドラインを提供できると考え、このセッションを受講することにしました。 関連するGreengrassコンポーネントを紹介することができると思います。
セッションの概要
今回のセッションで紹介するのは、Amazon KVS(Kinesis Video Streams)とエッジで動作するKVS Edge Agentです。 Amazon KVSはAmazon Web Services(AWS)のビデオストリーミングサービスで、リアルタイムでビデオデータをストリーミングして保存できるプラットフォームです。KVSは高性能のビデオストリーミングのために設計され、安定的で拡張可能なインフラを提供します。KVS Edge Agentは多数の映像ソースを収集し、クラウド上のKVSに連携する役割を担います。
KVSサービス概要
KVSサービスは、SDKを使用してクラウドに映像を送信することができます。KVSサービスは受信した映像を保存し、MLなど他の機能と連携するための基盤を提供します。
uploading via HTTPS
・KVS自体がデータを保存するストレージになります。
consuming using HTTPS API
・KVSに保存された映像をアプリケーションで消費し、HTTPSプロトコルで映像を取得することができます。
映像を送出するエージェントはIoTデバイスです。IoTコア証明書ベースの認証/認可を実装します。この部分は一般的なIoT Thingを構成したのと変わりません。
KVSから映像を取得してくるDemo client appはGitHubで提供されています。ビデオデータを消費する二つの方法が紹介されています。
・映像から画像を抽出してS3に移動する
・SageMakerのようなプラットフォームと連携してビジョン領域のAI/ML学習と推論を行うこと
KVSエッジエージェントは、エッジで映像を処理するための新規コンポーネントとして導入されました。 ここでいうコンポーネントとは、必ずしもAWS IoT Greengrassコンポーネントを指すわけではありません。
役割
・複数のカメラデバイスからRTSPベースで映像を収集します。
・KVSサービスにメディアを送信します。
・これらの作業を定期的にまたはリアルタイムで行います。
管理のしやすさ
・システム運営者がエッジに存在するエージェントをWebサービスベースで構成することができます。
・AWS oT Greengrass V2のコンポーネントとしても配布可能なので、関連機能を継承します。
管理ガイド
1.KVSサービスを利用してエッジ端に置かれたKVS Edge Agentを構成および制御するには、エージェントがAWS IoT CoreにMQTTメッセージを発行できる必要があります。
2.KVSが提供するAPIを利用してエージェント構成を変更します。https://docs.aws.amazon.com/cli/latest/reference/kinesisvideo/start-edge-configuration-update.html この時、主なパラメータは -edge-agent-name と -schedule-config です。
3.設定した周期でKVSに映像が送信されます。
KVS Edge Agent アーキテクチャに関する質問事項
・内部アーキテクチャ] オープンソースのGstreamer、KVS SDK > Java > KVS Edge Agentの順のスタックです。
・Greengrassの使用有無] AgentはGreengrass component packageとしても存在します。
・画像抽出ユースケース] Amazon S3バケットに毎秒5回のフレームを保存し、Rekognitionと連動してビジョンを実行する実装が可能です。
・ストリーミングプロトコル] 保存した映像をHLS/DASHプロトコルでクライアントにストリーミングすることができます。関連するAPIはkinesis-video-archived-media > list-fragments です。
セッションを終えて
今回のセッションでは、ビデオデータをクラウドにアップロードし、それを再び再生ストリーミングでクライアントに送信するという概念が可能であることを紹介していただきました。KVS Edge Agentを使用すると、多数の映像機器からデータを受信し、クラウドにロードすることができます。
APIを通じたエッジ端の配布、制御、再試行ロジック、ロギング機能など、AWS IoT Greengrassプラットフォームを利用して実装された点だと思いましたが、実はKVSサービス自体でAWS IoT Coreと連携して構成できる点が意外でした。
もちろん、Greengrassコンポーネントもあるそうですが、具体的な名前が言及されていなかったので、KVS Edge Connectorと推定します。今回のセッションの論調とも合致しますが、何か明確なKVS & KVS Edge Agentの構成ガイドを伝えてくれなかったので、少し残念なセッションでした。
最後に、KVS & KVS Agent実習ワークショップのQRを添付します。