Video-Optimierung

Auf dieser Seite finden Sie Voraussetzungen und eine detaillierte Anleitung zur Feinabstimmung von Gemini mithilfe von Videodaten und überwachtem Lernen.

Anwendungsfälle

Mit der Feinabstimmung können Sie Gemini-Basismodelle für spezielle Aufgaben anpassen. Hier einige Anwendungsfälle für Videos:

  • Automatisierte Videozusammenfassung: LLMs werden so optimiert, dass sie prägnante und kohärente Zusammenfassungen langer Videos erstellen und die Hauptthemen, Ereignisse und Erzählungen erfassen. Das ist nützlich für die Inhaltserkennung, Archivierung und schnelle Überprüfung.

  • Detaillierte Ereigniserkennung und -lokalisierung: Durch die Feinabstimmung können LLMs bestimmte Aktionen, Ereignisse oder Objekte in einer Videozeitachse genauer identifizieren und lokalisieren. Beispielsweise können Sie alle Instanzen eines bestimmten Produkts in einem Marketingvideo oder eine bestimmte Aktion in Sportaufnahmen identifizieren.

  • Inhaltsmoderation: Durch eine spezielle Abstimmung kann die Fähigkeit eines LLM verbessert werden, sensible, unangemessene oder richtlinienwidrige Inhalte in Videos zu erkennen. Dies geht über die einfache Objekterkennung hinaus, da Kontext und Nuancen verstanden werden.

  • Untertitelung von Videos: Dies ist zwar bereits eine gängige Anwendung, aber durch die Feinabstimmung können die Genauigkeit, die Flüssigkeit und das Kontextbewusstsein automatisch generierter Untertitel verbessert werden, einschließlich Beschreibungen nonverbaler Hinweise.

Beschränkungen

  • Maximale Videodateigröße: 100 MB Das reicht für große Videodateien möglicherweise nicht aus. Hier sind einige empfohlene Problemumgehungen:
    • Wenn es nur sehr wenige große Dateien gibt, schließen Sie diese Dateien nicht in die JSONL-Dateien ein.
    • Wenn Ihr Dataset viele große Dateien enthält, die nicht ignoriert werden können, reduzieren Sie die visuelle Auflösung der Dateien. Das kann die Leistung beeinträchtigen.
    • Teilen Sie die Videos auf, um die Dateigröße auf 100 MB zu begrenzen, und verwenden Sie die aufgeteilten Videos für die Abstimmung. Achten Sie darauf, alle Zeitstempel-Anmerkungen, die sich auf das Originalvideo beziehen, an die neue (aufgeteilte) Videozeitachse anzupassen.
  • Maximale Videolänge pro Beispiel: Maximal 1 Video pro Beispiel. Bei MEDIA_RESOLUTION_HIGH oder MEDIA_RESOLUTION_MEDIUM kann es 5 Minuten dauern, bei MEDIA_RESOLUTION_LOW 20 Minuten.
  • Verworfene Beispiele: Wenn ein Beispiel ein Video enthält, das länger als die unterstützte maximale Länge ist, wird dieses Beispiel aus dem Dataset entfernt. Verworfene Beispiele werden nicht in Rechnung gestellt oder für das Training verwendet. Wenn mehr als 10% des Datasets verworfen werden, schlägt der Job vor Beginn des Trainings mit einer Fehlermeldung fehl.
  • Das Mischen verschiedener Medienauflösungen wird nicht unterstützt: Der Wert von mediaResolution muss für jedes Beispiel im gesamten Trainings-Dataset einheitlich sein. Alle Zeilen in den JSONL-Dateien, die für das Training und die Validierung verwendet werden, sollten denselben Wert für mediaResolution haben.

Dataset-Format

Im Feld fileUri wird der Speicherort des Datasets angegeben. Dies kann der URI für eine Datei in einem Cloud Storage-Bucket oder eine öffentlich verfügbare HTTP- oder HTTPS-URL sein.

Im Feld mediaResolution wird die Anzahl der Tokens pro Frame für die Eingabevideos angegeben. Im Folgenden werden die Tokenanzahlen für unterstützte Modelle beschrieben:

  • Gemini 2.5:

    • MEDIA_RESOLUTION_LOW: 64 Tokens pro Frame

    • MEDIA_RESOLUTION_MEDIUM und MEDIA_RESOLUTION_HIGH : 256 Tokens pro Frame

    Die Modellabstimmung mit MEDIA_RESOLUTION_LOW ist etwa viermal schneller als die mit MEDIA_RESOLUTION_MEDIUM oder MEDIA_RESOLUTION_HIGH, wobei die Leistungsverbesserung minimal ist.

  • Gemini 3:

    Die Tokenanzahl ist mit der des Basismodells identisch. Weitere Informationen finden Sie unter Media-Auflösung.

Wenn ein Videosegment für Training und Validierung verwendet wird, befindet es sich im Feld videoMetadata. Während der Optimierung wird dieser Datenpunkt decodiert, um Informationen aus dem Segment zu enthalten, das aus der angegebenen Videodatei extrahiert wurde, beginnend mit dem Zeitstempel startOffset (dem Start-Offset in Sekunden) bis endOffset.

Ein Beispiel für das generische Format finden Sie unter Dataset-Beispiel für Gemini.

In den folgenden Abschnitten finden Sie Beispiele für Video-Dataset-Formate.

Beispiel für ein JSON-Schema für Fälle, in denen das gesamte Video für Training und Validierung verwendet wird

Dieses Schema wird als einzelne Zeile in die JSONL-Datei eingefügt.

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

(Nur Gemini 3 und höher) Ab den Gemini 3-Modellen können Sie auch die Medienauflösung pro einzelnem Medien-Part festlegen. So können Sie Auflösungen in Ihrem Dataset kombinieren, indem Sie beispielsweise MEDIA_RESOLUTION_HIGH für ein Element und MEDIA_RESOLUTION_LOW für ein anderes festlegen. Weitere Informationen zur Auflösung auf Teilebene und zur entsprechenden Tokenanzahl finden Sie unter Medienauflösung.

Einstellungen für die Medienauflösung auf Part-Ebene haben Vorrang vor globalen Einstellungen.

Das folgende Beispiel-Dataset legt die Medienauflösung sowohl auf Part- als auch auf globaler Ebene fest:

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

Beispiel für ein JSON-Schema für Fälle, in denen ein Videosegment für Training und Validierung verwendet wird

Dieses Schema wird als einzelne Zeile in die JSONL-Datei eingefügt.

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

Nächste Schritte