Réglage de la vidéo

Cette page fournit les conditions préalables et des instructions détaillées pour affiner les modèles Gemini sur des données vidéo, à l'aide de l'apprentissage supervisé.

Modèles compatibles

Les modèles Gemini suivants sont compatibles avec le réglage vidéo :

  • Gemini 2.5 Flash

Cas d'utilisation

L'affinage vous permet d'adapter les modèles Gemini de base à des tâches spécialisées. Voici quelques exemples d'utilisation des vidéos :

  • Résumé vidéo automatique : ajustement des LLM pour générer des résumés concis et cohérents de longues vidéos, en capturant les principaux thèmes, événements et récits. Cela est utile pour découvrir des contenus, les archiver et les examiner rapidement.

  • Reconnaissance et localisation détaillées des événements : le réglage fin permet aux LLM d'identifier et de localiser des actions, des événements ou des objets spécifiques dans le code temporel d'une vidéo avec une plus grande précision. Par exemple, identifier toutes les instances d'un produit spécifique dans une vidéo marketing ou une action spécifique dans des séquences sportives.

  • Modération de contenu : le réglage spécialisé peut améliorer la capacité d'un LLM à détecter les contenus sensibles, inappropriés ou qui enfreignent les règles dans les vidéos, en allant au-delà de la simple détection d'objets pour comprendre le contexte et les nuances.

  • Sous-titrage des vidéos : bien qu'il s'agisse déjà d'une application courante, le réglage peut améliorer la précision, la fluidité et la prise en compte du contexte des sous-titres générés automatiquement, y compris les descriptions des signaux non verbaux.

Limites

  • Taille maximale du fichier vidéo : 100 Mo. Cela peut ne pas suffire pour les fichiers vidéo volumineux. Voici quelques solutions de contournement recommandées :
    • S'il y a très peu de fichiers volumineux, supprimez-les des fichiers JSONL.
    • Si votre ensemble de données contient de nombreux fichiers volumineux qui ne peuvent pas être ignorés, réduisez la résolution visuelle des fichiers. Cela peut nuire aux performances.
    • Découpez les vidéos pour limiter la taille des fichiers à 100 Mo et utilisez les vidéos découpées pour l'ajustement. Veillez à modifier toutes les annotations de code temporel correspondant à la vidéo d'origine pour qu'elles correspondent à la nouvelle chronologie de la vidéo (découpée).
  • Durée maximale de la vidéo par exemple : 5 minutes avec MEDIA_RESOLUTION_MEDIUM et 20 minutes avec MEDIA_RESOLUTION_LOW.
  • Exemples supprimés : si un exemple contient une vidéo dont la durée dépasse la durée maximale autorisée, il est supprimé de l'ensemble de données. Les exemples supprimés ne sont pas facturés ni utilisés pour l'entraînement. Si plus de 10 % de l'ensemble de données sont supprimés, le job échoue et un message d'erreur s'affiche avant le début de l'entraînement.
  • Le mélange de résolutions de contenus multimédias différentes n'est pas accepté : la valeur mediaResolution de chaque exemple de l'ensemble de données d'entraînement doit être cohérente. Toutes les lignes des fichiers JSONL utilisés pour l'entraînement et la validation doivent avoir la même valeur mediaResolution.

Format de l'ensemble de données

Le champ fileUri spécifie l'emplacement de votre ensemble de données. Il peut s'agir de l'URI d'un fichier dans un bucket Cloud Storage ou d'une URL HTTP ou HTTPS accessible au public.

Le champ mediaResolution permet de spécifier le nombre de jetons par frame pour les vidéos d'entrée, avec l'une des valeurs suivantes :

  • MEDIA_RESOLUTION_LOW : 64 jetons par frame
  • MEDIA_RESOLUTION_MEDIUM : 256 jetons par frame

Le réglage des modèles avec MEDIA_RESOLUTION_LOW est environ quatre fois plus rapide qu'avec MEDIA_RESOLUTION_MEDIUM, avec une amélioration minimale des performances.

Lorsqu'un segment vidéo est utilisé pour l'entraînement et la validation, il se trouve dans le champ videoMetadata. Lors de l'ajustement, ce point de données est décodé pour contenir des informations provenant du segment extrait du fichier vidéo spécifié, à partir du code temporel startOffset (décalage de début, en secondes) jusqu'à endOffset.

Pour voir l'exemple de format générique, consultez Exemple d'ensemble de données pour Gemini.

Les sections suivantes présentent des exemples de formats d'ensembles de données vidéo.

Exemple de schéma JSON pour les cas où la vidéo complète est utilisée pour l'entraînement et la validation

Ce schéma est ajouté sur une seule ligne dans le fichier 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"
  }
}

Exemple de schéma JSON pour les cas où un segment vidéo est utilisé pour l'entraînement et la validation

Ce schéma est ajouté sur une seule ligne dans le fichier 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"
  }
}

Étapes suivantes