

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

# ストリーミングビデオイベント内のラベルの検出
<a name="streaming-video-detect-labels"></a>

Amazon Rekognition Video を使用して、ストリーミングビデオ内のラベルを検出できます。これを行うには、ストリーミングビデオの分析を開始および管理するためのストリームプロセッサ ([CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html)) を作成します。

Amazon Rekognition Video は、Amazon Kinesis Video Streams を使用して、ビデオストリームを受信し処理します。ストリームプロセッサを作成するときに、ストリームプロセッサで検出する内容を選択します。人、パッケージ、ペット、または人とパッケージを選択できます。分析結果は、Amazon S3 バケットと Amazon SNS 通知に出力されます。Amazon Rekognition Video はビデオ内の人物の存在を検出しますが、その人物が特定の個人であるかどうかは検出しないことに注意してください。ストリーミングビデオのコレクションから顔を検索するには、「[ストリーミングビデオのコレクション内での顔検索](collections-streaming.md)」を参照してください。

ストリーミングビデオで Amazon Rekognition Video を使用するには、アプリケーションに以下が必要です。
+ Amazon Rekognition Video にストリーミングビデオを送信する Kinesis ビデオストリーム。詳細については、「[Amazon Kinesis Video Streams デベロッパーガイド](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html)」を参照してください。
+ ストリーミングビデオの分析を管理するための Amazon Rekognition Video ストリームプロセッサ。詳細については、「[Amazon Rekognition Video ストリームプロセッサオペレーションの概要](streaming-video.md#using-rekognition-video-stream-processor)」を参照してください。
+ Amazon S3 バケット。Amazon Rekognition Video はセッション出力を S3 バケットに公開します。出力には、対象の人物またはオブジェクトが初めて検出されたイメージフレームが含まれます。S3 バケットを所有している必要があります。
+ Amazon Rekognition Video がスマートアラートとセッション終了の概要を公開する Amazon SNS トピック。

**Topics**
+ [Amazon Rekognition Video と Amazon Kinesis のリソースを設定する](streaming-labels-setting-up.md)
+ [ストリーミングビデオイベントに対するラベル検出オペレーションの呼び出し](streaming-labels-detection.md)

# Amazon Rekognition Video と Amazon Kinesis のリソースを設定する
<a name="streaming-labels-setting-up"></a>

 次の手順では、ストリーミングビデオ内のラベルの検出に使用する Kinesis ビデオストリームとその他のリソースをプロビジョニングするためのステップを説明します。

## 前提条件
<a name="streaming-video-prerequisites"></a>

この手順を実行するには、 をインストール AWS SDK for Java する必要があります。詳細については、「[Amazon Rekognition の開始方法](getting-started.md)」を参照してください。使用する AWS アカウントには、Amazon Rekognition API へのアクセス権限が必要です。詳細については、*IAM ユーザーガイド*の「[Amazon Rekognition で定義されるアクション](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonrekognition.html#amazonrekognition-actions-as-permissions)」を参照してください。

**ビデオストリーム内のラベルを検出するには (AWS SDK)**

1. Amazon S3 バケットを作成する。バケット名と、使用するキープレフィックスをメモします。この情報は後で使用します。

1. Amazon SNS トピックを作成します。これを使用して、ビデオストリームで対象オブジェクトが初めて検出されたときに通知を受け取れます。トピックの Amazon リソースネーム (ARN) をメモします。詳細については、Amazon SNS デベロッパーガイドの「[Amazon SNS トピックを作成する](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)」を参照してください。

1. エンドポイントを Amazon SNS トピックにサブスクライブします。詳細については、Amazon SNS デベロッパーガイドの「[Amazon SNS トピックへサブスクライブする](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)」を参照してください。

1. [Kinesis ビデオストリームを作成](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-createstream.html)して、そのストリームの Amazon リソースネーム (ARN) をメモします。

1. まだ作成していない場合は、Amazon Rekognition Video に Kinesis ビデオストリーム、S3 バケット、Amazon SNS トピックへのアクセス権を付与する IAM サービスロールを作成します。詳細については、「[ラベル検出ストリームプロセッサへのアクセス権を付与する](#streaming-labels-giving-access)」を参照してください。

その後、[ラベル検出ストリームプロセッサを作成し](streaming-labels-detection.md#streaming-video-create-labels-stream-processor)、選択したストリームプロセッサ名を使用して[ストリームプロセッサを起動](streaming-labels-detection.md#streaming-video-start-labels-stream-processor)できます。

**注記**  
ストリームプロセッサは、Kinesis ビデオストリームにメディアを取り込めることを確認した後に起動してください。

## カメラの向きとセットアップ
<a name="streaming-labels-camera-setup"></a>

Amazon Rekognition Video ストリーミングビデオイベントでは、Kinesis ビデオストリームでサポートされているすべてのカメラをサポートできます。最良の結果を得るには、カメラを地面と 0～45 度に配置することをお勧めします。カメラは標準的な直立状態にある必要があります。例えば、フレーム内に人物がいる場合、人物の向きは垂直で、頭は足よりも高い位置にある必要があります。

## ラベル検出ストリームプロセッサへのアクセス権を付与する
<a name="streaming-labels-giving-access"></a>

 AWS Identity and Access Management (IAM) サービスロールを使用して、Amazon Rekognition Video に Kinesis ビデオストリームへの読み取りアクセスを許可します。これを行うには、IAM ロールを使用して、Amazon Rekognition Video に Amazon S3 バケットと Amazon SNS トピックへのアクセス権を付与します。

Amazon Rekognition Video が既存の Amazon SNS トピック、Amazon S3 バケット、Kinesis ビデオストリームにアクセスできるようにするアクセス許可ポリシーを作成できます。を使用した手順については AWS CLI、step-by-step「」を参照してください[AWS CLI ラベル検出 IAM ロールをセットアップするための コマンド](#streaming-labels-giving-access-cli)。

**Amazon Rekognition Video がラベル検出のためにリソースにアクセスできるようにするには**

1. [[IAM JSON ポリシーエディターを使用して新しい許可ポリシーを作成し](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor)]、次のポリシーを使用します。`kvs-stream-name` を Kinesis ビデオストリームの名前に置き換えます。`topicarn` は、使用する Amazon SNS トピックの Amazon リソースネーム (ARN) に置き換え、`bucket-name` は Amazon S3 バケットの名前に置き換えます。

1. [IAM サービスロールを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html?icmpid=docs_iam_console) または、既存の IAM サービスロールを更新します。次の情報を使用して、IAM サービスロールを作成します。

   1. サービス名の **Rekognition** を選択します。

   1. サービスロールのユースケースの **Rekognition** を選択します。

   1. 手順 1 で作成したアクセス権ポリシーを添付します。

1. サービスロールの ARN をメモしておきます。ビデオ分析オペレーションを実行する前に、ストリームプロセッサを作成する必要があります。

1. (オプション) 独自の AWS KMS キーを使用して S3 バケットに送信されるデータを暗号化する場合は、IAM ロールに次のステートメントを追加する必要があります。(これはキーポリシー用に作成した IAM ロールであり、使用するカスタマーマネージドキーに対応します。)

   ```
       
               {
                          "Sid": "Allow use of the key by label detection Role",
                          "Effect": "Allow",
                          "Principal": {
                              "AWS": "arn:aws:iam:::role/REPLACE_WITH_LABEL_DETECTION_ROLE_CREATED"
                          },
                          "Action": [
                              "kms:Decrypt",
                              "kms:GenerateDataKey*"
                          ],
                          "Resource": "*"
               }
   ```

## AWS CLI ラベル検出 IAM ロールをセットアップするための コマンド
<a name="streaming-labels-giving-access-cli"></a>

まだ設定していない場合は、認証情報 AWS CLI を使用して をセットアップして設定します。

に次のコマンドを入力して AWS CLI 、ラベル検出に必要なアクセス許可を持つ IAM ロールを設定します。

1. `export IAM_ROLE_NAME=labels-test-role`

1. `export AWS_REGION=us-east-1`

1. 以下の内容を含む信頼関係ポリシーファイル (assume-role-rekognition.json など) を作成します。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "rekognition.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. `aws iam create-role --role-name $IAM_ROLE_NAME --assume-role-policy-document file://path-to-assume-role-rekognition.json --region $AWS_REGION`

1. `aws iam attach-role-policy --role-name $IAM_ROLE_NAME --policy-arn "arn:aws:iam::aws:policy/service-role/AmazonRekognitionServiceRole" --region $AWS_REGION`

1. 通知を受け取りたい SNS トピックの名前が「AmazonRekognition」プレフィックスで始まっていない場合は、次のポリシーを追加してください。

   `aws iam attach-role-policy --role-name $IAM_ROLE_NAME --policy-arn "arn:aws:iam::aws:policy/AmazonSNSFullAccess" --region $AWS_REGION`

1. S3 バケットに送信されるデータを暗号化するために独自の AWS KMS キーを使用する場合は、使用するカスタマーマネージドキーのキーポリシーを更新します。

   1. kms\$1key\$1policy.json ファイルを作成します。

      ```
      {
      "Sid": "Allow use of the key by label detection Role",
      "Effect": "Allow",
      "Principal": {
      "AWS": "arn:aws:iam:::role/REPLACE_WITH_IAM_ROLE_NAME_CREATED"
      },
      "Action": [
      "kms:Encrypt",
      "kms:GenerateDataKey*"
      ],
      "Resource": "*"
      }
      ```

   1. その内容には、`export KMS_KEY_ID=labels-kms-key-id` を含めます。KMS\$1KEY\$1ID は、作成した KMS キー ID に置き換えてください。

   1. `aws kms put-key-policy --policy-name default --key-id $KMS_KEY_ID --policy file://path-to-kms-key-policy.json`

# ストリーミングビデオイベントに対するラベル検出オペレーションの呼び出し
<a name="streaming-labels-detection"></a>

Amazon Rekognition Video は、ストリーミングビデオ内の人または関連オブジェクトを検出し、検出されると通知を送信できます。ラベル検出ストリームプロセッサを作成するときは、Amazon Rekognition Video で検出したいラベルを選択します。ラベルには、人、パッケージとペット、または人、パッケージ、ペットがあります。検出したい特定のラベルのみを選択してください。これにより、関連するラベルのみが通知を作成します。ビデオ情報を保存するタイミングを決定するオプションを設定し、フレーム内で検出されたラベルに基づいて追加の処理を行えます。

リソースをセットアップした後、ストリーミングビデオ内のラベルを検出するプロセスは次のとおりです。

1. ストリームプロセッサを作成する

1. ストリームプロセッサを開始する

1. 対象オブジェクトが検出されると、対象の各オブジェクトの最初の出現に対して Amazon SNS 通知を受け取ります。

1. ストリームプロセッサは、`MaxDurationInSeconds` で指定された時間が経過すると停止します。

1. イベントの概要が記載された最終的な Amazon SNS 通知を受け取ります。

1. Amazon Rekognition Video は、セッションの詳細な概要を S3 バケットに公開します。

**Topics**
+ [Amazon Rekognition Video ラベル検出ストリームプロセッサを作成する](#streaming-video-create-labels-stream-processor)
+ [Amazon Rekognition Video ラベル検出ストリームプロセッサの起動](#streaming-video-start-labels-stream-processor)
+ [ラベル検出結果の分析](#streaming-video-labels-stream-processor-results)

## Amazon Rekognition Video ラベル検出ストリームプロセッサを作成する
<a name="streaming-video-create-labels-stream-processor"></a>

ストリーミングビデオを分析する前に、Amazon Rekognition Video ストリームプロセッサ ([CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html)) を作成します。

対象となるラベルや人を検出するストリームプロセッサを作成する場合は、Kinesis ビデオストリーム (`Input`)、Amazon S3 バケット情報 (`Output`)、Amazon SNS トピック ARN (`StreamProcessorNotificationChannel`) を入力として指定します。Amazon S3 バケットに送信されるデータを暗号化する KMS キー ID を指定することもできます。人、パッケージと人、またはペット、人、パッケージなど、`Settings` で検出する内容を指定します。Amazon Rekognition が `RegionsOfInterest` を使用してモニタリングするフレーム内の箇所を指定することもできます。`CreateStreamProcessor` リクエストに関する JSON の例を次に示します。

```
{
  "DataSharingPreference": { "OptIn":TRUE
  },
  "Input": {
    "KinesisVideoStream": {
      "Arn": "arn:aws:kinesisvideo:us-east-1:nnnnnnnnnnnn:stream/muh_video_stream/nnnnnnnnnnnnn"
    }
  },
  "KmsKeyId": "muhkey",
  "Name": "muh-default_stream_processor",
  "Output": {
    "S3Destination": {
      "Bucket": "s3bucket",
      "KeyPrefix": "s3prefix"
    }
  },
  "NotificationChannel": {
    "SNSTopicArn": "arn:aws:sns:us-east-2:nnnnnnnnnnnn:MyTopic"
  },
  "RoleArn": "arn:aws:iam::nnnnnnnnn:role/Admin",
  "Settings": {
    "ConnectedHome": {
      "Labels": [
        "PET"
      ]
    "MinConfidence": 80
    }
  },
  "RegionsOfInterest": [
    {
      "BoundingBox": {
        "Top": 0.11,
        "Left": 0.22,
        "Width": 0.33,
        "Height": 0.44
      }
    },
    {
      "Polygon": [
        {
          "X": 0.11,
          "Y": 0.11
        },
        {
          "X": 0.22,
          "Y": 0.22
        },
        {
          "X": 0.33,
          "Y": 0.33
        }
      ]
    }
  ]
}
```

`MinConfidence` 値は、ストリームプロセッサの `ConnectedHomeSettings` を指定するときに変更できます。`MinConfidence` は 0～100 の数値で、アルゴリズムの予測がどの程度確実であるかを示します。例えば、信頼度が 90 の `person` の通知は、アルゴリズムが、その人物がビデオに存在することを確信していることを意味します。信頼値が 10 の場合は、人物が存在する可能性があるということです。通知を受ける頻度に応じて、`MinConfidence` を 0～100 の任意の値に設定できます。例えば、Rekognition がビデオフレームにパッケージが含まれていると確信した場合にのみ通知を受け取りたい場合は、`MinConfidence` を 90 に設定できます。

`MinConfidence ` は、デフォルトで 50 に設定されます。アルゴリズムを最適化して精度を高めたい場合は、`MinConfidence` を 50 より大きい値に設定できます。これにより、通知を受け取る回数は少なくなりますが、各通知の信頼性は高まります。アルゴリズムを最適化してリコールを高めたい場合は、`MinConfidence` を 50 未満に設定すれば、より多くの通知を受け取れます。

## Amazon Rekognition Video ラベル検出ストリームプロセッサの起動
<a name="streaming-video-start-labels-stream-processor"></a>

`CreateStreamProcessor` で指定したストリームプロセッサの名前を使用して [StartStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartStreamProcessor.html) を呼び出し、ストリーミングビデオの分析を開始します。ラベル検出ストリームプロセッサで `StartStreamProcessor` オペレーションを実行する場合は、開始情報と停止情報を入力して処理時間を決定します。

ストリームプロセッサが起動すると、ラベル検出ストリームプロセッサの状態は次のように変化します。

1. `StartStreamProcessor` を呼び出すと、ラベル検出ストリームのプロセッサの状態は `STOPPED` または `FAILED` から `STARTING` に変化します。

1. ラベル検出ストリームプロセッサが実行されている間は、状態は `STARTING` になります。

1. ラベル検出ストリームプロセッサの実行が終了すると、状態は `STOPPED` または `FAILED` になります。

`StartSelector` は、処理を開始する Kinesis ストリームの開始点を指定します。KVS Producer のタイムスタンプまたは KVS フラグメント番号を使用できます。詳細については、「[Fragment](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_reader_Fragment.html)」を参照してください。

**注記**  
KVS Producer のタイムスタンプを使用する場合は、時間をミリ秒単位で入力する必要があります。

`StopSelector` は、ストリームの処理を停止するタイミングを指定します。ビデオを処理する最大時間を指定できます。デフォルトでは、最大継続時間が 10 秒に設定されています。個々の KVS フラグメントのサイズによっては、実際の処理時間が最大継続時間より少し長くなる場合があることに注意してください。フラグメントの終端で最大継続時間に達したか、それを超えた場合、処理時間は停止します。

`StartStreamProcessor` リクエストに関する JSON の例を次に示します。

```
{
   "Name": "string",
   "StartSelector": {
     "KVSStreamStartSelector": { 
         "KVSProducerTimestamp": 1655930623123
      },
        "StopSelector": {
            "MaxDurationInSeconds": 11
      }
   }
}
```

ストリームプロセッサが正常に起動した場合は、HTTP 200 レスポンスが返されます。空の JSON 本文が含まれています。

## ラベル検出結果の分析
<a name="streaming-video-labels-stream-processor-results"></a>

Amazon Rekognition Video がラベル検出ストリームプロセッサから通知を公開する方法は 3 つあります。オブジェクト検出イベントの Amazon SNS 通知、セッション終了の概要に関する Amazon SNS 通知、詳細な Amazon S3 バケットレポートです。
+ オブジェクト検出イベントの Amazon SNS 通知 

  ビデオストリームでラベルが検出されると、オブジェクト検出イベントの Amazon SNS 通知を受け取ります。Amazon Rekognition は、ビデオストリームで対象オブジェクトまたは人物が初めて検出されたときに通知を公開します。通知には、検出されたラベルのタイプ、信頼度、ヒーローイメージへのリンクなどの情報が含まれています。また、検出された人物またはオブジェクトのトリミングされたイメージや検出タイムスタンプも含まれています。この通知の形式は次のとおりです。

  ```
  {"Subject": "Rekognition Stream Processing Event",
      "Message": {    
          "inputInformation": {
              "kinesisVideo": {
                  "streamArn": string
              }
          },
          "eventNamespace": {
              "type": "LABEL_DETECTED"
          },
          "labels": [{
              "id": string,
              "name": "PERSON" | "PET" | "PACKAGE",
              "frameImageUri": string,
              "croppedImageUri": string,
              "videoMapping": {
                  "kinesisVideoMapping": {
                      "fragmentNumber": string,
                      "serverTimestamp": number,
                      "producerTimestamp": number,
                      "frameOffsetMillis": number
                  }
              },
              "boundingBox": {
                  "left": number,
                  "top": number,
                  "height": number,
                  "width": number
              }
          }],
          "eventId": string,
          "tags": {
              [string]: string
          },
          "sessionId": string,
          "startStreamProcessorRequest": object
      }
  }
  ```
+ Amazon SNS セッション終了の概要

  ストリーム処理セッションが終了すると、Amazon SNS 通知も送信されます。この通知には、セッションのメタデータがリスト表示されます。また、処理されたストリームの継続時間などの詳細情報が含まれています。この通知の形式は次のとおりです。

  ```
  {"Subject": "Rekognition Stream Processing Event",
      "Message": {
          "inputInformation": {
              "kinesisVideo": {
                  "streamArn": string,
                  "processedVideoDurationMillis": number
              }
          },
          "eventNamespace": {
              "type": "STREAM_PROCESSING_COMPLETE"
          },
          "streamProcessingResults": {
              "message": string
          },
          "eventId": string,
          "tags": {
              [string]: string
          },
          "sessionId": string,
          "startStreamProcessorRequest": object
      }
  }
  ```
+ Amazon S3 バケットレポート

  Amazon Rekognition Video は、ビデオ分析オペレーションの詳細な推論結果を、`CreateStreamProcessor` オペレーションで提供された Amazon S3 バケットに公開します。これらの結果には、対象のオブジェクトや人物が初めて検出されたイメージフレームが含まれています。

  フレームは S3 パス ObjectKeyPrefix/StreamProcessorName/SessionId/*service\$1determined\$1unique\$1path* で入手できます。このパスでは、**LabelKeyPrefix** はお客様指定のオプション引数、**StreamProcessorName** はストリームプロセッサリソースの名前、**SessionId** はストリーム処理セッションの固有の ID です。これらは状況に応じて置き換えてください。