動画のチューニング

このページでは、教師あり学習を使用して動画データで Gemini をファインチューニングするための前提条件と詳細な手順について説明します。

ユースケース

ファインチューニングにより、ベースの Gemini モデルを特定のタスク向けに調整できます。以下に、動画の使用例をいくつか示します。

  • 動画の自動要約: LLM をチューニングし、長い動画の主なテーマ、イベント、ストーリーを捉えた簡潔で一貫性のある要約を生成します。コンテンツの検出、アーカイブ、迅速な確認に役立ちます。

  • 詳細なイベント認識と位置特定: ファインチューニングにより、LLM は動画タイムライン内の特定のアクション、イベント、オブジェクトをより高い精度で識別し、特定できます。たとえば、マーケティング動画内の特定商品の出現箇所をすべて特定する、またはスポーツ映像内の特定のアクションを識別する、といったことが可能です。

  • コンテンツの管理: 専門的なチューニングにより、動画内のデリケートなコンテンツ、不適切なコンテンツ、ポリシー違反のコンテンツを検出する LLM の能力が向上し、単純なオブジェクト検出を超えてコンテキストとニュアンスを理解できるようになります。

  • 動画の字幕起こしと字幕作成: すでに一般的なアプリケーションですが、非言語的なメッセージの説明など、自動生成される字幕起こしと字幕作成の精度、流暢さ、コンテキスト認識をチューニングにより向上させることが可能です。

制限事項

  • 動画ファイルの最大サイズ: 100 MB。大容量の動画ファイルの場合、これでは十分でない可能性があります。推奨される回避策は次のとおりです。
    • 大容量のファイルがほとんどない場合は、それらのファイルを JSONL ファイルに含めないようにします。
    • データセットに大容量のファイルが多数あり、無視できない場合は、ファイルの視覚的な解像度を下げます。これによりパフォーマンスが低下する可能性があります。
    • 動画をチャンク化してファイルサイズを 100 MB に制限し、チャンク化された動画をチューニングに使用します。元の動画に対応するタイムスタンプ アノテーションを、新しい(チャンク化された)動画のタイムラインに変更してください。
  • 例ごとの動画の最大長: MEDIA_RESOLUTION_HIGH または の場合は 5 分、MEDIA_RESOLUTION_MEDIUM の場合は 20 分。MEDIA_RESOLUTION_LOW
  • 削除された例: サポートされている最大長を超える動画が例に含まれている場合、その例はデータセットから削除されます。削除された例は課金されず、トレーニングにも使用されません。データセットの 10% 以上が削除されると、トレーニングの開始前にエラー メッセージが表示され、ジョブが失敗します。
  • 異なるメディア解像度の混在はサポートされていません: トレーニング データセット全体の各例の mediaResolution の値が一貫している必要があります。トレーニングと検証に使用される JSONL ファイルのすべての行で、mediaResolution の値が同じである必要があります。

データセットのフォーマット

fileUri フィールドには、データセットのロケーションを指定します。Cloud Storage バケット内のファイルの URI にすることも、一般公開されている HTTP または HTTPS URL にすることもできます。

mediaResolution フィールドは、入力動画のフレームあたりのトークン数を指定するために使用されます。Gemini 2.5 の場合、フレームあたりのトークン数は次のとおりです。

  • MEDIA_RESOLUTION_LOW: フレームあたり 64 トークン
  • MEDIA_RESOLUTION_MEDIUMMEDIA_RESOLUTION_HIGH : フレームあたり 256 トークン

Gemini 3 の場合、トークン数はベースモデルと同じです。詳細については、メディアの解像度をご覧ください。

MEDIA_RESOLUTION_LOW を使用したモデル チューニングは、MEDIA_RESOLUTION_MEDIUM または MEDIA_RESOLUTION_HIGH を使用したチューニングよりも約 4 倍高速ですが、パフォーマンスの向上は最小限です。

動画セグメントがトレーニングと検証に使用される場合、動画セグメントは videoMetadata フィールドにあります。チューニング中、このデータポイントは、指定された動画ファイルから抽出されたセグメントの情報を含めるようにデコードされます。タイムスタンプ startOffset(開始オフセット、秒単位)から endOffset までです。

汎用形式の例については、Gemini のデータセットの例をご覧ください。

以降のセクションでは、動画データセットの形式の例を示します。

動画全体をトレーニングと検証に使用する場合の JSON スキーマの例

このスキーマは、JSONL ファイルの 1 行として追加されます。

{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "fileData": {
            "fileUri": "gs://<path to the mp4 video file>",
            "mimeType": "video/mp4"
          },
        },
        {
          "text": "
          You are a video analysis expert. Detect which animal appears in the
          video.The video can only have one of the following animals: dog, cat,
          rabbit.\n Output Format:\n Generate output in the following JSON
          format:\n
          [{\n
            \"animal_name\": \"<CATEGORY>\",\n
          }]\n"
        }
      ]
    },
    {
      "role": "model",
      "parts": [
        {
          "text": "```json\n[{\"animal_name\": \"dog\"}]\n```"
        }
       ]
    },
  ],
  "generationConfig": {
    "mediaResolution": "MEDIA_RESOLUTION_LOW"
  }
}

(Gemini 3 以降のモデルのみ)Gemini 3 モデル以降では、個々のメディア PartPartごとにメディアの解像度を設定することもできます。 これにより、データセット内の解像度を混在させることができます(たとえば、あるアイテムに MEDIA_RESOLUTION_HIGH を設定し、別のアイテムに MEDIA_RESOLUTION_LOW を設定するなど)。 パートレベルの解像度と対応するトークン 数の詳細については、メディア の解像度をご覧ください。

Part レベルのメディア解像度設定は、グローバル設定よりも優先されます。

メディアの解像度を Part レベルとグローバル レベルの両方で設定するデータセットの例を次に示します。

{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "fileData": {
            "fileUri": "gs://<path to the mp4 video file>",
            "mimeType": "video/mp4"
          }
        },
        {
          "fileData": {
            "fileUri": "gs://<path to the mp4 video file>",
            "mimeType": "video/mp4"
          },
          "mediaResolution": {
            "level": "MEDIA_RESOLUTION_HIGH"
          }
        },
        {
          "text": "Describe these videos in detail."
        }
      ]
    },
    {
      "role": "model",
      "parts": [
        {
          "text": "Video 1 is low resolution while video 2 is sharp and clear"
        }
      ]
    }
  ],
  "generationConfig": {
    "mediaResolution": "MEDIA_RESOLUTION_LOW"
  }
}

動画セグメントをトレーニングと検証に使用する場合の JSON スキーマの例

このスキーマは、JSONL ファイルの 1 行として追加されます。

{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "fileData": {
            "fileUri": "gs://<path to the mp4 video file>",
            "mimeType": "video/mp4"
          },
         "videoMetadata": {
            "startOffset": "5s",
            "endOffset": "25s"
          }
        },
        {
          "text": "
          You are a video analysis expert. Detect which animal appears in the
          video.The video can only have one of the following animals: dog, cat,
          rabbit.\n Output Format:\n Generate output in the following JSON
          format:\n
          [{\n
            \"animal_name\": \"<CATEGORY>\",\n
          }]\n"
       }
      ]
   },
   {
      "role": "model",
      "parts": [
        {
          "text": "```json\n[{\"animal_name\": \"dog\"}]\n```"
        }
      ]
    },
  ],
"generationConfig": {
     "mediaResolution": "MEDIA_RESOLUTION_LOW"
  }
}

次のステップ