分類用の動画トレーニング データを準備する

このページでは、動画分類モデルをトレーニングするために Vertex AI データセットで使用する動画トレーニング データを準備する方法について説明します。

以降のセクションでは、データ要件、スキーマ ファイル、スキーマによって定義されるデータ インポート ファイル(JSONL と CSV)の形式について説明します。

また、アノテーションが付いていない動画をインポートして、後でコンソールを使用してアノテーションを付けることもできます(Google Cloud コンソールを使用してラベルを付けるをご覧ください)。

データ要件

AutoML またはカスタム トレーニング済みモデルのトレーニングに使用されるデータセットには、次の要件が適用されます。

  • Vertex AI は、モデルのトレーニングや予測のリクエスト(動画へのアノテーション付け)を行うため、次の動画形式をサポートしています。

    • .MOV
    • .MPEG4
    • .MP4
    • .AVI
  • ウェブ コンソールで動画コンテンツを表示する場合や、動画にアノテーションを付ける場合には、ブラウザがネイティブでサポートされている形式に動画を変換する必要があります。.MOV や .AVI のコンテンツがネイティブで扱われないブラウザもあるため、.MPEG4 または .MP4 の動画形式を使用することをおすすめします。

  • 最大ファイルサイズは 50 GB(長さは 3 時間まで)です。コンテナ内に含まれる個々の動画ファイルのうち、タイムスタンプが誤った形式または空となっている動画ファイルはサポートされません。

  • 各データセット内のラベルの最大数は 1,000 に制限されています。

  • インポート ファイル内の動画に「ML_USE」ラベルを割り当てることができます。トレーニング時に、これらのラベルを使用して、動画とそれぞれのアノテーションをトレーニング セットまたはテストセットに分割できます。 動画分類については、次の点に注意してください。

    • モデルのトレーニングには少なくとも 2 つのクラスが必要です。たとえば、news、MTV、game、others などです。
    • 定義済みのクラスと一致しない None_of_the_above クラスと動画セグメントを含めることもできます。

AutoML モデルのトレーニングに使用する動画データに関するベスト プラクティス

以下の方法は、AutoML モデルのトレーニングに使用されるデータセットに適用されます。

  • トレーニング用のデータは、予測を行うデータにできる限り近いものである必要があります。たとえば、低解像度のぼやけた動画(防犯カメラの動画など)で予測を行う場合は、トレーニング用のデータも低解像度のぼやけた動画で構成する必要があります。一般に、視点、解像度、背景が異なる動画をトレーニング用に準備することも検討する必要があります。

  • 一般的に、Vertex AI モデルは、人間が割り当てることができないラベルを予測することはできません。そのため、動画を 1~2 秒間見てラベルを割り当てるように人間をトレーニングすることができなければ、モデルもそのようにトレーニングすることはできません。

  • モデルは、最も一般的なラベルのドキュメント数が、最も一般的ではないラベルの動画数よりも、最大 100 倍存在する場合に最適に動作します。低い頻度のラベルは削除することをおすすめします。動画分類の場合、ラベルごとに推奨されるトレーニング動画は約 1,000 件です。ラベルあたりの最小の動画数は 10 件(高度なモデルでは 50 件)です。一般に、1 つの動画に複数のラベルを付けてモデルをトレーニングする場合は、ラベルあたりの必要なサンプルの数が多くなります。また、結果として得られるスコアの解釈がより難しくなります。

スキーマ ファイル

  • アノテーションをインポートする jsonl ファイルの作成には、一般公開されている次のスキーマ ファイルを使用します。このスキーマ ファイルにより、データ入力ファイルの形式が決まります。ファイルの構造は OpenAPI Schema テストに準拠しています。

    動画分類スキーマ ファイル:

    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(省略可)モデルをトレーニングする場合のデータ分割に使用します。TRAINING または TEST を使用します。
  2. VIDEO_URI。このフィールドには、動画の Cloud Storage URI が含まれます。Cloud Storage URI では大文字と小文字が区別されます。
  3. LABEL。ラベルは文字で始まり、文字、数字、アンダースコア以外を含まないようにする必要があります。動画に複数のラベルを指定するには、同じ動画セグメントを示す複数の行を CSV ファイルに追加し、各行に異なるラベルを指定します。
  4. START,END。START と END の 2 つの列があり、分析する動画セグメントの開始時間と終了時間をそれぞれ秒単位で表します。開始時間は終了時間より前にする必要があります。どちらの値も負数でなく、動画の長さの範囲内である必要があります。たとえば、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 の後に 3 つのカンマを続けるだけです。以下に例を示します。

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