Ajuste de vídeo

En esta página se describen los requisitos previos y las instrucciones detalladas para ajustar Gemini con datos de vídeo mediante el aprendizaje supervisado.

Casos prácticos

El ajuste fino te permite adaptar los modelos base de Gemini a tareas especializadas. Estos son algunos casos prácticos de vídeo:

  • Resumen de vídeos automático: ajustamos los LLMs para que generen resúmenes concisos y coherentes de vídeos largos, en los que se incluyan los temas, los eventos y las narrativas principales. Esto resulta útil para descubrir contenido, archivarlo y revisarlo rápidamente.

  • Reconocimiento y localización detallados de eventos: el ajuste fino permite a los LLMs identificar y localizar acciones, eventos u objetos específicos en una cronología de vídeo con mayor precisión. Por ejemplo, identificar todas las instancias de un producto concreto en un vídeo de marketing o una acción específica en imágenes deportivas.

  • Moderación de contenido: el ajuste especializado puede mejorar la capacidad de un LLM para detectar contenido sensible, inapropiado o que infringe las políticas en los vídeos, lo que va más allá de la detección de objetos para comprender el contexto y los matices.

  • Subtitulado de vídeos: aunque ya es una aplicación habitual, la optimización puede mejorar la precisión, la fluidez y la contextualización de los subtítulos generados automáticamente, incluidas las descripciones de las señales no verbales.

Limitaciones

  • Tamaño máximo del archivo de vídeo: 100 MB. Puede que no sea suficiente para archivos de vídeo grandes. A continuación, te indicamos algunas soluciones alternativas recomendadas:
    • Si hay muy pocos archivos grandes, exclúyelos de los archivos JSONL.
    • Si hay muchos archivos grandes en su conjunto de datos y no se pueden ignorar, reduzca la resolución visual de los archivos. Esto puede afectar al rendimiento.
    • Divide los vídeos en fragmentos para que el tamaño de los archivos no supere los 100 MB y usa los vídeos fragmentados para el ajuste. Asegúrate de cambiar las anotaciones de marca de tiempo correspondientes al vídeo original por las de la nueva cronología del vídeo (dividido en fragmentos).
  • Duración máxima de los vídeos por ejemplo: 5 minutos con MEDIA_RESOLUTION_MEDIUM y 20 minutos con MEDIA_RESOLUTION_LOW.
  • Ejemplos descartados: si un ejemplo contiene un vídeo que supera la duración máxima admitida, se descartará del conjunto de datos. Los ejemplos descartados no se facturan ni se usan para el entrenamiento. Si se elimina más del 10% del conjunto de datos, la tarea fallará y se mostrará un mensaje de error antes de que empiece el entrenamiento.
  • No se admite la combinación de resoluciones de contenido multimedia: el valor de mediaResolution de cada ejemplo de todo el conjunto de datos de entrenamiento debe ser coherente. Todas las líneas de los archivos JSONL utilizados para el entrenamiento y la validación deben tener el mismo valor de mediaResolution.

Formato del conjunto de datos

El campo fileUri especifica la ubicación de tu conjunto de datos. Puede ser el URI de un archivo de un segmento de Cloud Storage o una URL HTTP o HTTPS disponible públicamente.

El campo mediaResolution se usa para especificar el número de tokens por fotograma de los vídeos de entrada. Puede tener uno de los siguientes valores:

  • MEDIA_RESOLUTION_LOW: 64 tokens por fotograma
  • MEDIA_RESOLUTION_MEDIUM: 256 tokens por fotograma

El ajuste de modelos con MEDIA_RESOLUTION_LOW es aproximadamente cuatro veces más rápido que el ajuste con MEDIA_RESOLUTION_MEDIUM, y la mejora del rendimiento es mínima.

Cuando se usa un segmento de vídeo para el entrenamiento y la validación, el segmento de vídeo se encuentra en el campo videoMetadata. Durante la optimización, este punto de datos se decodifica para contener información del segmento extraído del archivo de vídeo especificado, desde la marca de tiempo startOffset (el desplazamiento inicial, en segundos) hasta endOffset.

Para ver un ejemplo de formato genérico, consulta Ejemplo de conjunto de datos para Gemini.

En las siguientes secciones se muestran ejemplos de formatos de conjuntos de datos de vídeo.

Ejemplo de esquema JSON para los casos en los que se usa el vídeo completo para el entrenamiento y la validación

Este esquema se añade como una sola línea en el archivo 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"
  }
}

Ejemplo de esquema JSON para los casos en los que se usa un segmento de vídeo para el entrenamiento y la validación

Este esquema se añade como una sola línea en el archivo 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"
  }
}

Siguientes pasos