例: を使用したビデオストリーム内のオブジェクトの識別 SageMaker - Amazon Kinesis Video Streams

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

例: を使用したビデオストリーム内のオブジェクトの識別 SageMaker

この例では、 を使用して特定のオブジェクトが Amazon Kinesis ビデオストリームに表示されるタイミングSageMakerを識別するソリューションを作成する方法を示します。 SageMaker は、デベロッパーやデータサイエンティストが機械学習モデルをすばやく簡単に構築、トレーニング、デプロイするためのマネージドプラットフォームです。

この例では、アプリケーション機能を含む Docker コンテナと、アプリケーションの AWS リソースのデプロイを自動化する AWS CloudFormation テンプレートで構成されています。

AWS CloudFormation テンプレートは以下のリソースを作成します。

アプリケーションは、データを処理するすべての SageMaker エンドポイントと互換性があります。この例には、サンプルオブジェクト識別アルゴリズムテンプレートを使用する SageMaker エンドポイントを作成する手順が含まれています。アプリケーションのユースケースと要件に基づいて、アルゴリズムを変更したり置き換えたりできます。

前提条件

サンプルアプリケーションには、以下の前提条件があります。

SageMaker

この例では SageMaker ノートブックが必要です。ノートブックの作成の詳細については、「Amazon SageMaker デベロッパーガイド」の「ノートブックインスタンスの作成」を参照してください。ノートブックを作成するときは、以下の点に注意してください。

  • ノートブックにAmazon_JumpStart_Object_Detection.ipynbサンプル (Jupyter コンソールSageMaker の例タブの「Amazon アルゴリズムの概要」セクションから) を追加します。

  • Amazon Simple Storage Service (Amazon S3) バケットを作成し、例を追加する際に前提条件のステップでその名前を指定します。

  • ノートブックを作成したら、 SageMaker コンソールでエンドポイント設定を選択し、エンドポイント名 を書き留めます。

Kinesis ビデオストリーム

この例では、ライブビデオデータを含む 1 つ以上の Kinesis Video Streams が必要です。Kinesis ビデオストリームを作成してカメラからデータを送信する方法については、GStreamer を参照してください。Kinesis ビデオストリーム名を書き留めます。

サービスにリンクされたロール

この例では、 アカウントに Fargate オペレーションのサービスにリンクされたロールが必要です。新しい AWS アカウント では、このロールがデフォルトで有効になっています。アプリケーションの作成時に以下のエラーが表示された場合は、サービスにリンクされたロールを有効にする必要があります。

Unable to assume the service linked role. Please verify that the ECS service linked role exists

サービスにリンクされたロールを有効にするには、以下のコマンドを実行します。

aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com

アプリケーションの作成

サンプルアプリケーションを作成するには、 AWS CloudFormation と提供されているテンプレートを使用します。

AWS CloudFormation を使用してアプリケーションを作成するには
  1. にサインイン AWS Management Console し、 の次のいずれかのリンクを使用して AWS CloudFormation コンソールを開きます AWS リージョン。このリンクからリージョンの正しいスタックが起動されます。

  2. [スタックの作成] ページで、以下の値を入力します。

    • スタックに一意の名前を付けます (ユーザー名 -KVS- などSageMaker)。

    • 前のセクションで作成した SageMaker エンドポイント名 (エンドポイント ARN ではありません) を指定します。

    • Kinesis ビデオストリームの名前を入力します。複数の Kinesis ビデオストリームがある場合は、ストリーム名を引用符で囲み、カンマで区切ります。

    • 残りの設定はそのままにします。

    [次へ] を選択します。

  3. [Options (オプション)] ページで、設定をそのままにします。

  4. IAM リソースを作成する AWS CloudFormation 可能性があることを確認するチェックボックスをオンにします。[次へ] を選択します。

AWS CloudFormation はアプリケーションを作成します。

次の表に、この AWS CloudFormation テンプレートを使用してスタックを作成するときに Docker コンテナで使用されるいくつかのパラメータを示します。これらの値はテンプレートの SSM リソースで事前定義されていますが、必要に応じてカスタマイズできます。

リソース名 デフォルト値 説明
inferenceInterval 6 The sampling ratio for video frames that are sent to the SageMaker endpoint. Currently, we only support inferencing on I-Frames. The default value of 6 means that 1 out of every 6 I-Frames is sent to the SageMaker endpoint.
sageMakerTaskQueueSize 5000 The size of the queue that maintains the pending requests to the SageMaker endpoint. The size of the queue is affected by ‘inferenceInternval’ and ‘sageMakerTaskTimeoutInMilli’. If SageMaker inference takes longer, requests are buffered in this queue.
sageMakerTaskThreadPoolSize 20 Number of threads that's used to concurrently carry out SageMaker requests.
sageMakerTaskTimeoutInMilli 20000 The maximum duration accepted for a single request (or a retry request) that's sent to the SageMaker endpoint.
sageMakerTaskThreadPoolName SageMakerThreadPool-%d The name of the threadpool that's sending requests to the SageMaker endpoint.

これらのパラメータの値をカスタマイズするには、スタックの作成ページでテンプレート URL AWS CloudFormation を選択してテンプレートをダウンロードし、テンプレートの Paramsセクションで次のようなパラメータを見つけます。

Params: Type: AWS::SSM::Parameter Properties: Name: Ref: AppName Description: "Configuration for SageMaker app" Type: String Value: Fn::Sub: | {"streamNames":[${StreamNames}], "tagFilters":[${TagFilters}],"sageMakerEndpoint":"${SageMakerEndpoint}", "endPointAcceptContentType": "${EndPointAcceptContentType}", "kdsStreamName":"${Kds}","inferenceInterval":6,"sageMakerTaskQueueSize":5000, "sageMakerTaskThreadPoolSize":20,"sageMakerTaskTimeoutInMilli":20000, "sageMakerTaskThreadPoolName":"SageMakerThreadPool-%d"}

アプリケーションのモニタリング

AWS CloudFormation テンプレートによって作成されたアプリケーションには、Amazon CloudWatch ダッシュボードと、アプリケーションのメトリクスとイベントのモニタリングに使用される CloudWatch ログストリームが含まれます。

アプリケーションダッシュボード

アプリケーションには、アプリケーションメトリクスをモニタリングするための CloudWatch ダッシュボードが含まれています。アプリケーションダッシュボードを表示するには、https://console.aws.amazon.com/cloudwatch/ で CloudWatch コンソールを開き、左側のナビゲーションバーでダッシュボードを選択します。

KVS-SageMaker-Driver-KvsSageMakerIntegration-aws-region ダッシュボードを選択します。ダッシュボードには以下の情報が表示されます。

  • フレームメトリクス: ビデオストリームを処理し、 SageMaker エンドポイントにフレームを送信し、ノートブックを SageMaker SageMaker 推論出力結果を処理する AWS Lambda 関数に接続する Kinesis データストリームに書き込むためのメトリクス。

  • IngestToProcessLatency: 動画フレームが Kinesis Video Streams サービスに取り込まれてから、アプリケーションがフレームを受信するまでの時間差。

  • Current Lease Total: アプリケーションには、リースを使用して Kinesis ビデオストリームから読み込むためのアクセス許可が付与されます。このメトリクスはアクティブなリースの数を示します。アプリケーションは Kinesis ビデオストリームごとに 1 つのリースを使用し、ストリーム間の同期に 1 つのリースを使用します。

  • Lease Sync Metrics: アクセス許可リース同期の頻度と持続期間。

  • LeaseCount ワーカーあたりの: SageMaker ワーカースレッド間のリースの分散。

  • Number of Workers: ストリームを処理している SageMaker ワーカーの数。Amazon ECS クラスター内の各タスクには実行中の 1 つのワーカーがあります。1 つのワーカーは複数のストリームを処理できます。

  • ECS サービス使用率: Amazon ECS クラスターの使用状況メトリクス。

  • KinesisDataStream: Kinesis データストリームの使用状況メトリクス。

  • SageMaker: ノートブックによって SageMaker実行されるオペレーション。

  • Lambda: SageMaker ノートブックからの出力を処理する Lambda 関数の数と期間。

これらのグラフのいずれかの情報がオペレーション上の問題 (安定しているのではなく着実に増加している値など) を示している場合は、アプリケーションログを読んで問題を特定する方法について、以下のセクションを参照してください。

CloudWatch ログ

アプリケーションには 2 つの CloudWatch Logs が含まれています。

アプリケーションログ

アプリケーションログを使用して、アプリケーションイベントとエラー状態をモニタリングできます。また、問題で製品サポートに連絡する必要がある場合も、このログを使用できます。

アプリケーションログを読むには
  1. https://console.aws.amazon.com/ecs で Amazon ECS コンソールを開きます。

  2. [KVS-Sagemaker-Driver] クラスターを選択します。

  3. サービスタブで stack-name -SageMakerDriverService service を選択します。

  4. [ログ] タブを選択します。

アプリケーションログには、初期化、設定、リースアクティビティなどのイベントが表示されます。

Lambda 関数ログ

Lambda 関数ログを使用して、オブジェクトの成功した識別を追跡できます。

Lambda ログを読み込むには
  1. https://console.aws.amazon.com/lambda で AWS Lambda コンソールを開きます。

  2. アプリケーションの Lambda 関数を選択します。Lambda 関数名の形式は次のとおりです。

    stack-name-LambdaFunction-A1B2C3D4E5F6G
  3. [Monitoring (モニタリング)] パネルを選択します。

  4. でログを表示する CloudWatchを選択します。

アプリケーションの CloudWatch ログには、Kinesis ビデオストリーム内のオブジェクトやその他のアプリケーションイベントが正常に識別されたことが示されます。

アプリケーションの拡張

AWS CloudFormation テンプレートウィンドウで指定した値を次のように変更することで、アプリケーションにカスタム機能を追加できます。

  • EndPointAcceptContentType: SageMaker エンドポイントが JPG 形式のフレームを受け入れていない場合は、この値を変更できます。以下の形式がサポートされています。

    • image/jpeg

    • image/png

    • image/bmp

    • image/gif

    • application/x-image

  • LambdaFunctionBucket、 LambdaFunctionKey: 提供された設定では、出力を処理して CloudWatch Logs に書き込む AWS Lambda SageMaker関数を使用します。 SageMaker 出力を他の場所に送信する場合は、独自の Lambda 関数を指定できます。

  • タグフィルタ: TagStream アクションを使用してタグ付けされたストリームがある場合は、処理するストリームのタグを指定できます。たとえば、2 つのストリームの Location キー値がそれぞれ FrontParking である場合、以下のエントリにより、それらのストリームのみを使用するようにフィルタ処理します。

    {"key":"Location","values":["Front","Parking"]}

アプリケーションのクリーンアップ

このチュートリアル用に作成したアプリケーションを使い終わったら、継続的な請求が発生しないように、保持しないリソースを削除することをお勧めします。

  1. SageMaker エンドポイント: 既存の SageMaker エンドポイントを使用するのではなく、このチュートリアルのエンドポイントを作成した場合は、エンドポイントを削除します。 SageMaker コントロールパネルで、エンドポイント設定 を選択します。作成したエンドポイントを選択し、アクション、削除を選択します。削除を確定します。

  2. SageMaker ノートブック: SageMaker コンソールで、ノートブックインスタンスを選択します。作成したノートブックを選択しから、[Actions (アクション)]、[Stop (停止)] の順に選択します。ノートブックに [Status (ステータス)] が [停止] と表示されたら、[Actions (アクション)]、[Delete (削除)] の順に選択します。削除を確定します。

    注記

    SageMaker リソースのクリーンアップの詳細については、「 デSageMaker ベロッパーガイド」の「クリーンアップ」を参照してください。

  3. SageMaker 実行ポリシー: IAM コンソールのナビゲーションペインで、ポリシー を選択します。このチュートリアル用に作成したポリシーを選択します。ポリシーの名前は、 のようになりますAmazonSageMaker-ExecutionPolicy-timestamp

    [ポリシーアクション]、[削除] の順に選択します。削除を確定します。

  4. SageMaker 実行ロール: IAM コンソールのナビゲーションペインで、ロール を選択します。このチュートリアル用に作成したロールを選択します。ロールの名前は、 のようになりますAmazonSageMaker-ExecutionRole-timestamp

    Delete role] (ロールの削除) を選択します。削除を確定します。

  5. stackAWS CloudFormation : AWS CloudFormation コンソールで、このチュートリアル用に作成したスタックを選択します。[アクション]、[スタックの削除] の順に選択します。削除を確定します。

  6. Amazon S3 バケット: Amazon S3 コンソールで、 SageMaker アセットを保存するために作成したバケットを選択します。[削除] をクリックします。バケットの名前を入力し、[Confirm (確認)] を選択して削除を確定します。

  7. Kinesis ビデオストリーム: Kinesis Video Streams コンソールで、アプリケーション用に作成したビデオストリームを選択します。[削除] を選択します。削除を確定します。