流视频事件的标签检测操作 - Amazon Rekognition

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

流视频事件的标签检测操作

Amazon Rekognition Video 可以检测流视频中的人员或相关物体,并在检测到时通知您。创建标签检测流处理器时,请选择您希望 Amazon Rekognition Video 检测哪些标签。这些标签可以是人员、包裹和宠物,也可以是人员、包裹、宠物。仅选择要检测的特定标签。这样,只有相关的标签才能创建通知。您可以配置选项来确定何时存储视频信息,然后根据帧中检测到的标签进行其他处理。

设置资源后,检测流视频中标签的过程如下所示:

  1. 创建流处理器

  2. 启动流处理器

  3. 如果检测到感兴趣的物体,则当每个感兴趣的物体首次出现时,您都会收到 Amazon SNS 通知。

  4. MaxDurationInSeconds 中指定的时间结束后,流处理器将停止。

  5. 您会收到包含事件摘要的最终 Amazon SNS 通知。

  6. Amazon Rekognition Video 将详细会话摘要发布到 S3 存储桶。

创建 Amazon Rekognition Video 标签检测流处理器

您必须先创建 Amazon Rekognition Video 流处理器 (CreateStreamProcessor),然后才能分析流视频。

如果您想创建一个流处理器来检测感兴趣的标签和人员,请提供 Kinesis 视频流 (Input)、Amazon S3 存储桶信息 (Output) 和 Amazon SNS 主题 ARN (StreamProcessorNotificationChannel) 作为输入。您还可以提供 KMS 密钥 ID 来加密发送到 S3 存储桶的数据。您可以指定在 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 } ] } ] }

请注意,当您为流处理器指定 ConnectedHomeSettings 时,您可以更改 MinConfidence 值。MinConfidence 是一个介于 0 到 100 之间的数值,表示算法对其预测的确定程度。例如,置信度为 90 的person通知表示算法完全确定视频中出现了该人员。置信度值为 10 表示可能有人。您可以将 MinConfidence 值设置为介于 0 和 100 之间的所需值,具体取决于您希望收到通知的频率。例如,如果您只想在 Rekognition 绝对确定视频帧中有包裹时才收到通知,那么可以将 MinConfidence 设置为 90。

默认情况下,将 MinConfidence 设置为 50。如果要优化算法以获得更高的精确度,则可以将 MinConfidence 设置为高于 50。这样,您收到的通知就会减少,但每条通知都更加可靠。如果您想优化算法以提高查全率,则可以将 MinConfidence 设置为低于 50 以接收更多通知。

启动 Amazon Rekognition Video 标签检测流处理器

您可使用在 CreateStreamProcessor 中指定的流处理器名称来调用 StartStreamProcessor,由此开始分析流视频。在标签检测流处理器上运行 StartStreamProcessor 操作时,需要输入启动和停止信息来确定处理时间。

启动流处理器时,标签检测流处理器的状态会以下列方式发生变化:

  1. 当您调用 StartStreamProcessor 时,标签检测流处理器状态从 STOPPEDFAILED 变为 STARTING

  2. 当标签检测流处理器运行时,它会停留在 STARTING 中。

  3. 标签检测流处理器运行完毕后,状态变为 STOPPEDFAILED

StartSelector 指定了 Kinesis 流中开始处理的起点。您可以使用 KVS Producer 时间戳或 KVS 片段编号。有关更多信息,请参阅片段

注意

如果您使用 KVS Producer 时间戳,则必须以毫秒为单位输入时间。

StopSelector 指定何时停止处理该流。您可以指定处理视频的最长时间。默认持续时间最长为 10 秒。请注意,实际处理时间可能会比最大持续时间长一点,具体取决于单个 KVS 片段的大小。如果片段末尾已达到或超过最大持续时间,则处理时间将停止。

以下是 StartStreamProcessor 请求的 JSON 示例。

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

如果流处理器成功启动,则会返回 HTTP 200 响应。包含一个空的 JSON 正文。

分析标签检测结果

Amazon Rekognition Video 可以通过三种方式发布来自标签检测流处理器的通知:针对对象检测事件的 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_determined_unique_path。在此路径中,LabelKeyPrefix 是客户提供的可选参数,StreamProcessorName 是流处理器资源的名称,SessionId 是流处理会话的唯一 ID。根据您的情况进行更换。