Ajuste de video

En esta página, se proporcionan los requisitos previos y las instrucciones detalladas para ajustar Gemini en datos de video con el aprendizaje supervisado.

Casos de uso

El ajuste te permite adaptar los modelos básicos de Gemini para tareas especializadas. Estos son algunos casos de uso de videos:

  • Resúmenes de video automatizados: Ajuste de LLMs para generar resúmenes concisos y coherentes de videos largos, que capturen los temas, los eventos y las narrativas principales. Esto es útil para el descubrimiento de contenido, el archivado y las revisiones rápidas.

  • Reconocimiento y localización detallados de eventos: El ajuste permite que los LLM identifiquen y localicen acciones, eventos u objetos específicos dentro de la línea de tiempo de un video con mayor precisión. Por ejemplo, identificar todas las instancias de un producto en particular en un video de marketing o una acción específica en imágenes de deportes.

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

  • Subtitulado de videos: Si bien ya es una aplicación común, el ajuste puede mejorar la precisión, la fluidez y la conciencia del contexto de los subtítulos generados automáticamente, incluidas las descripciones de las indicaciones no verbales.

Limitaciones

  • Tamaño máximo del archivo de video: 100 MB Es posible que esto no sea suficiente para archivos de video grandes. Estas son algunas soluciones alternativas recomendadas:
    • Si hay muy pocos archivos grandes, quítalos de los archivos JSONL.
    • Si hay muchos archivos grandes en tu conjunto de datos y no se pueden ignorar, reduce la resolución visual de los archivos. Esto puede afectar el rendimiento.
    • Divide los videos en fragmentos para limitar el tamaño de los archivos a 100 MB y usa los videos fragmentados para el ajuste. Asegúrate de cambiar las anotaciones de marcas de tiempo correspondientes al video original por las del nuevo video (dividido en fragmentos).
  • Duración máxima del video por ejemplo: 5 minutos con MEDIA_RESOLUTION_MEDIUM y 20 minutos con MEDIA_RESOLUTION_LOW.
  • Ejemplos descartados: Si un ejemplo contiene un video que es más largo que la longitud máxima admitida, ese ejemplo se descarta del conjunto de datos. Los ejemplos descartados no se facturan ni se usan para el entrenamiento. Si se descarta más del 10% del conjunto de datos, el trabajo fallará y se mostrará un mensaje de error antes del inicio del entrenamiento.
  • No se admite la combinación de diferentes resoluciones de medios: El valor de mediaResolution para cada ejemplo en todo el conjunto de datos de entrenamiento debe ser coherente. Todas las líneas de los archivos JSONL que se usan 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 en un bucket de Cloud Storage o una URL HTTP o HTTPS disponible de forma pública.

El campo mediaResolution se usa para especificar el recuento de tokens por fotograma para los videos de entrada, como uno de los siguientes valores:

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

El ajuste del modelo con MEDIA_RESOLUTION_LOW es aproximadamente 4 veces más rápido que el ajuste con MEDIA_RESOLUTION_MEDIUM, con una mejora mínima en el rendimiento.

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

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

En las siguientes secciones, se presentan ejemplos de formatos de conjuntos de datos de video.

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

Este esquema se agrega 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 video para el entrenamiento y la validación

Este esquema se agrega 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"
  }
}

¿Qué sigue?