

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 스트리밍 비디오 이벤트에 대한 레이블 감지 작업 직접 호출
<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`)을 입력으로 제공하세요. 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 레이블 감지 스트림 프로세서 시작
<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 생산자 타임스탬프 또는 KVS 조각 번호를 사용할 수 있습니다. 자세한 내용은 [조각](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_reader_Fragment.html)을 참조하세요.

**참고**  
KVS 생산자 타임스탬프를 사용하는 경우 시간을 밀리초 단위로 입력해야 합니다.

`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가 레이블 탐지 스트림 프로세서로부터 알림을 게시하는 방법에는 세 가지가 있습니다. 객체 감지 이벤트에 대한 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입니다. 상황에 따라 대체하면 됩니다.