影片微調

本頁面提供必要條件和詳細操作說明,說明如何使用監督式學習,根據影片資料微調 Gemini。

用途

微調功能可讓您調整基礎 Gemini 模型,以執行特定工作。以下是影片用途範例:

  • 自動生成影片摘要:調整大型語言模型,生成簡潔連貫的長片摘要,擷取主要主題、事件和敘事。這項功能適用於內容探索、封存和快速審查。

  • 詳細事件辨識和定位:微調可讓 LLM 更準確地識別及定位影片時間軸中的特定動作、事件或物件。例如,識別行銷影片中特定產品的所有例項,或體育影片中的特定動作。

  • 內容審核:經過專門調整後,LLM 可更有效地偵測影片中的敏感、不當或違反政策內容,不只是偵測物件,還能理解背景資訊和細微差異。

  • 影片字幕和字幕:雖然這已是常見的應用,但調整功能可以提高自動生成字幕和字幕的準確度、流暢度和情境感知能力,包括非語言線索的說明。

限制

  • 影片檔案大小上限:100 MB。 這可能不足以處理大型影片檔案。以下是一些建議的解決方法:
    • 如果大型檔案很少,請從 JSONL 檔案中移除這些檔案。
    • 如果資料集內有許多大型檔案,且無法忽略,請降低檔案的視覺解析度。這可能會對效能造成負面影響。
    • 將影片切成多個片段,限制檔案大小不超過 100 MB,並使用這些片段進行調整。請務必將對應原始影片的所有時間戳記註解,變更為新的 (分塊) 影片時間軸。
  • 每個範例的影片長度上限:每個範例限 1 部影片。MEDIA_RESOLUTION_HIGH 或 MEDIA_RESOLUTION_MEDIUM 可能是 5 分鐘,MEDIA_RESOLUTION_LOW 則是 20 分鐘。
  • 捨棄的樣本:如果樣本包含的影片長度超過支援的長度上限,系統會從資料集中捨棄該樣本。系統不會對捨棄的樣本收費,也不會用於訓練。如果資料集捨棄超過 10% 的資料,工作會在訓練開始前失敗,並顯示錯誤訊息。
  • 不支援混合不同的媒體解析度:整個訓練資料集中,每個樣本的 mediaResolution 值必須一致。用於訓練和驗證的 JSONL 檔案中,所有行的 mediaResolution 值都應相同。

資料集格式

fileUri 欄位會指定資料集的位置。可以是 Cloud Storage bucket 中檔案的 URI,也可以是公開的 HTTP 或 HTTPS 網址。

mediaResolution 欄位用於指定輸入影片每影格的權杖數量。以下說明支援模型的詞元數量:

  • Gemini 2.5:

    • MEDIA_RESOLUTION_LOW:每影格 64 個詞元

    • MEDIA_RESOLUTION_MEDIUM 和 MEDIA_RESOLUTION_HIGH:每個影格 256 個詞元

    使用 MEDIA_RESOLUTION_LOW 調整模型,速度約比使用 MEDIA_RESOLUTION_MEDIUM 或 MEDIA_RESOLUTION_HIGH 快 4 倍,且效能提升幅度極小。

  • Gemini 3:

    詞元數量與基礎模型相同。詳情請參閱「媒體解析度」。

當影片片段用於訓練和驗證時,影片片段會位於 videoMetadata 欄位中。調整期間,這個資料點會解碼,包含從指定影片檔案擷取的片段資訊,從時間戳記 startOffset (開始偏移,以秒為單位) 到 endOffset。

如要查看一般格式範例,請參閱「Gemini 資料集範例」。

以下各節提供影片資料集格式範例。

JSON 結構定義範例:將整部影片用於訓練和驗證

這個結構定義會以單行形式新增至 JSONL 檔案。

{
  "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 模型開始,您也可以為個別媒體 Part 設定媒體解析度。這樣一來,您就能在資料集中混合解析度 (例如,將一個項目設為 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 檔案。

{
  "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"
  }
}

後續步驟