분류용 동영상 학습 데이터 준비

이 페이지에서는 동영상 분류 모델을 학습시키기 위해 Vertex AI 데이터 세트에서 사용할 동영상 학습 데이터를 준비하는 방법을 설명합니다.

다음 섹션에서는 데이터 요구사항, 스키마 파일, 스키마에서 정의된 데이터 가져오기 파일(JSONL 및 CSV)의 형식에 대한 정보를 제공합니다.

또는 주석 처리되지 않은 동영상을 가져와 나중에 Google Cloud 콘솔을 통해 주석 처리할 수도 있습니다(Google Cloud 콘솔을 사용하여 라벨 지정 참고).

데이터 요구사항

다음 요구사항은 AutoML 또는 커스텀 학습 모델을 학습시키는 데 사용되는 데이터 세트에 적용됩니다.

  • Vertex AI는 모델을 학습시키거나 예측을 요청할 때(동영상에 주석 달기) 다음과 같은 동영상 형식을 지원합니다.

    • .MOV
    • .MPEG4
    • .MP4
    • .AVI
  • 웹 콘솔에서 동영상 콘텐츠를 보거나 동영상에 주석을 추가하려면 동영상이 브라우저에서 기본적으로 지원하는 형식이어야 합니다. 모든 브라우저에서 기본적으로 .MOV 또는 .AVI 콘텐츠를 처리하지 않으므로 .MPEG4 또는 .MP4 동영상 형식을 사용하는 것이 좋습니다.

  • 최대 파일 크기는 50GB입니다(최대 재생 시간 3시간). 컨테이너에 잘못된 또는 비어 있는 타임스탬프가 포함된 개별 동영상 파일은 지원되지 않습니다.

  • 각 데이터 세트의 최대 라벨 수는 1,000개로 제한되어 있습니다.

  • 가져오기 파일의 동영상에 'ML_USE' 라벨을 할당할 수 있습니다. 학습 시에는 이러한 라벨을 사용하여 동영상과 해당 주석을 '학습' 또는 '테스트' 세트로 분할할 수 있습니다. 동영상 분류에서는 다음 사항에 유의하세요.

    • 모델 학습에는 두 개 이상의 클래스가 필요합니다. 예를 들어 '뉴스'와 'MTV' 또는 '게임'과 '기타' 같은 식입니다.
    • 정의된 클래스와 일치하지 않는 'None_of_the_above' 클래스와 동영상 세그먼트를 포함하는 것이 좋습니다.

AutoML 모델 학습에 사용되는 동영상 데이터 권장사항

다음 모델은 AutoML 모델을 학습시키는 데 사용되는 데이터 세트에 적용됩니다.

  • 학습 데이터는 예측을 수행할 데이터와 최대한 유사해야 합니다. 예를 들어 사용 사례에 보안 카메라 영상처럼 흐릿한 저해상도 동영상이 포함된다면 학습 데이터도 흐릿한 저해상도 동영상으로 구성해야 합니다. 또한 일반적으로 다양한 각도, 해상도, 배경으로 촬영한 학습 동영상을 제공하는 것이 좋습니다.

  • 인간이 지정할 수 없는 라벨은 Vertex AI 모델도 일반적으로 예측할 수 없습니다. 만일 동영상을 1~2초 보고 라벨을 지정하도록 사람을 학습시킬 수 없다면 이 모델도 그렇게 하도록 학습시킬 수 없습니다.

  • 가장 흔한 라벨의 동영상이 가장 흔하지 않은 라벨의 동영상보다 최대 100배 많을 때 모델의 성능이 가장 좋습니다. 빈도가 낮은 라벨을 삭제하는 것이 좋습니다. 동영상 분류의 경우 라벨당 권장되는 학습 동영상 수는 약 1,000개입니다. 라벨당 최소 개수는 10개, 고급 모델인 경우에는 최소 50개입니다. 일반적으로 동영상 하나에 라벨이 여러 개 있는 모델을 학습시키는 데 라벨당 더 많은 예시를 사용하므로 결과 점수를 해석하기가 어려워집니다.

스키마 파일

  • 주석을 가져오기 위한 JSONL 파일을 만들 때 공개적으로 액세스할 수 있는 다음 스키마 파일을 사용합니다. 이 스키마 파일은 데이터 입력 파일의 형식을 지정합니다. 파일 구조는 OpenAPI 스키마 테스트를 따릅니다.

    동영상 분류 스키마 파일:

    gs://google-cloud-aiplatform/schema/dataset/ioformat/video_classification_io_format_1.0.0.yaml

    전체 스키마 파일

    
    title: VideoClassification
    description: >
      Import and export format for importing/exporting videos together with
      classification annotations with time segment. Can be used in
      Dataset.import_schema_uri field.
    type: object
    required:
    - videoGcsUri
    properties:
      videoGcsUri:
        type: string
        description: >
          A Cloud Storage URI pointing to a video. Up to 50 GB in size and
          up to 3 hours in duration. Supported file mime types: `video/mp4`,
          `video/avi`, `video/quicktime`.
      timeSegmentAnnotations:
        type: array
        description: >
          Multiple classification annotations. Each on a time segment of the video.
        items:
          type: object
          description: Annotation with a time segment on media (e.g., video).
          properties:
            displayName:
              type: string
              description: >
                It will be imported as/exported from AnnotationSpec's display name.
            startTime:
              type: string
              description: >
                The start of the time segment. Expressed as a number of seconds as
                measured from the start of the video, with "s" appended at the end.
                Fractions are allowed, up to a microsecond precision.
              default: 0s
            endTime:
              type: string
              description: >
                The end of the time segment. Expressed as a number of seconds as
                measured from the start of the video, with "s" appended at the end.
                Fractions are allowed, up to a microsecond precision, and "Infinity"
                is allowed, which corresponds to the end of the video.
              default: Infinity
            annotationResourceLabels:
              description: Resource labels on the Annotation.
              type: object
              additionalProperties:
                type: string
      dataItemResourceLabels:
        description: Resource labels on the DataItem.
        type: object
        additionalProperties:
          type: string
    

입력 파일

동영상 분류를 위한 학습 데이터의 형식은 다음과 같습니다.

데이터를 가져오려면 JSONL 또는 CSV 파일을 만듭니다.

JSONL

각 행의 JSON:
자세한 내용은 분류 스키마(전역) 파일을 참조하세요.


{
	"videoGcsUri": "gs://bucket/filename.ext",
	"timeSegmentAnnotations": [{
		"displayName": "LABEL",
		"startTime": "start_time_of_segment",
		"endTime": "end_time_of_segment"
	}],
	"dataItemResourceLabels": {
		"aiplatform.googleapis.com/ml_use": "train|test"
	}
}

JSONL 예시 - 동영상 분류:


{"videoGcsUri": "gs://demo/video1.mp4", "timeSegmentAnnotations": [{"displayName": "cartwheel", "startTime": "1.0s", "endTime": "12.0s"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"videoGcsUri": "gs://demo/video2.mp4", "timeSegmentAnnotations": [{"displayName": "swing", "startTime": "4.0s", "endTime": "9.0s"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
...

CSV

CSV의 행 형식:

[ML_USE,]VIDEO_URI,LABEL,START,END

열 목록

  1. ML_USE(선택 사항). 모델을 학습시킬 때 데이터를 분할하려는 경우입니다. 학습 또는 테스트 사용.
  2. VIDEO_URI. 이 필드에는 동영상의 Cloud Storage URI가 포함됩니다. Cloud Storage URI는 대소문자를 구분합니다.
  3. LABEL. 라벨은 문자로 시작해야 하며 문자, 숫자, 밑줄만 포함할 수 있습니다. CSV 파일에 각 행마다 다른 라벨을 사용하여 각각 동일한 동영상 세그먼트를 식별하는 여러 행을 추가하여 동영상에 여러 라벨을 지정할 수 있습니다.
  4. START,END. 이 두 열 START 및 END는 각각 분석할 동영상 세그먼트의 시작 및 종료 시간을 초 단위로 식별합니다. 시작 시간은 종료 시간보다 짧아야 합니다. 두 값 모두 음수가 아니어야 하며 동영상의 시간 범위 내에 있어야 합니다. 예를 들면 0.09845,1.36005입니다. 동영상의 전체 콘텐츠를 사용하려면 시작 시간 0과 동영상 전체 길이의 종료 시간 또는 'inf'를 지정합니다. 예를 들면 0,inf입니다.

CSV 예시 - 단일 라벨을 사용한 분류

은 동영상 세그먼트의 단일 라벨:

TRAINING,gs://YOUR_VIDEO_PATH/vehicle.mp4,mustang,0,5.4
...

CSV 예시 - 여러 라벨:

같은 동영상 세그먼트의 여러 라벨:

gs://YOUR_VIDEO_PATH/vehicle.mp4,fiesta,0,8.285
gs://YOUR_VIDEO_PATH/vehicle.mp4,ranger,0,8.285
gs://YOUR_VIDEO_PATH/vehicle.mp4,explorer,0,8.285
...

CSV 예시 - 라벨 없음:

라벨을 지정하지 않고 데이터 파일에서 동영상을 제공할 수도 있습니다. 그런 다음 Google Cloud 콘솔을 사용하여 모델을 학습시키기 전에 데이터에 라벨을 적용해야 합니다. 이렇게 하려면 다음 예시와 같이 동영상의 Cloud Storage URI 다음에 쉼표 세 개만 제공해야 합니다.

gs://YOUR_VIDEO_PATH/vehicle.mp4,,,
...