動画のチューニング

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

ユースケース

ファインチューニングにより、ベースの Gemini モデルを特定のタスクに合わせて調整できます。動画のユースケースを次に示します。

  • 動画の自動要約: LLM をチューニングして、長い動画を簡潔かつ一貫した要約を生成し、主なテーマ、イベント、ナラティブをキャプチャします。これは、コンテンツの検出、アーカイブ、簡単なレビューに役立ちます。

  • 詳細なイベント認識とローカライズ: ファインチューニングにより、LLM は動画のタイムライン内の特定のアクション、イベント、オブジェクトをより正確に特定して特定できます。たとえば、マーケティング動画内の特定の商品のすべてのインスタンスや、スポーツ映像内の特定のアクションを特定します。

  • コンテンツ管理: 特別なチューニングにより、動画内の機密性の高いコンテンツ、不適切なコンテンツ、ポリシーに違反するコンテンツを検出する LLM の能力を向上させることができます。これにより、単純なオブジェクト検出を超えて、コンテキストとニュアンスを理解できます。

  • 動画の字幕と字幕翻訳: すでに一般的なアプリケーションですが、チューニングを行うと、非言語的な合図の説明など、自動生成された字幕と字幕翻訳の精度、流暢性、コンテキスト認識を向上させることができます。

制限事項

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

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

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

mediaResolution フィールドは、入力動画のフレームあたりのトークン数を次のいずれかの値として指定するために使用します。

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

MEDIA_RESOLUTION_LOW を使用したモデル チューニングは、MEDIA_RESOLUTION_MEDIUM でチューニングされたモデルよりも約 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"
  }
}

動画セグメントがトレーニングと検証に使用される場合の 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"
  }
}

次のステップ