Prepara datos de entrenamiento de video para la clasificación

En esta página, se describe cómo preparar datos de entrenamiento de video para usarlos en un conjunto de datos de Vertex AI para entrenar un modelo de clasificación de videos.

En las siguientes secciones, se proporciona información sobre los requisitos de datos, los archivos de esquema y el formato de los archivos de importación de datos (JSON y CSV) que define el esquema.

Como alternativa, puedes importar videos que no se anotaron y anotarlos más tarde con la consola de Google Cloud (consulta Etiqueta con la consola de Google Cloud).

Requisitos de los datos

Los siguientes requisitos se aplican a los conjuntos de datos usados para entrenar modelos de AutoML o modelos personalizados.

  • Vertex AI admite los siguientes formatos de video para entrenar tu modelo o solicitar una predicción (anotar un video).

    • MOV
    • .MPEG4
    • .MP4
    • .AVI
  • Para ver el contenido del video en la consola web o anotar un video, el video debe estar en un formato compatible con tu navegador de forma nativa. Debido a que no todos los navegadores administran contenido .MOV o .AVI de forma nativa, la recomendación es usar el formato de video .MPEG4 o .MP4.

  • El tamaño máximo del archivo es de 50 GB (hasta 3 horas de duración). No se admiten archivos de video individuales con marcas de tiempo incorrectas o con formato incorrecto en el contenedor.

  • La cantidad máxima de etiquetas en cada conjunto de datos está limitada a 1,000.

  • Puedes asignar etiquetas “ML_USE” a los videos en los archivos de importación. En el entrenamiento, puedes usar esas etiquetas para dividir los videos y sus anotaciones correspondientes en conjuntos de “entrenamiento” o “prueba”. Para la clasificación de videos, ten en cuenta lo siguiente:

    • Se requieren al menos dos clases diferentes para el entrenamiento de modelos. Por ejemplo, "noticias" y "MTV", o "juego" y "otros".
    • Considera incluir una clase "None_of_the_above" y segmentos de video que no coincidan con ninguna de tus clases definidas.

Prácticas recomendadas para los datos de video que se usan a fin de entrenar los modelos de AutoML

Los siguientes requisitos se aplican a los conjuntos de datos que se usan para entrenar modelos de AutoML.

  • Los datos de entrenamiento deben ser lo más parecidos posible a los datos sobre los que se harán las predicciones. Por ejemplo, si tu caso práctico incluye videos borrosos y de baja resolución (como los de una cámara de seguridad), los datos de entrenamiento deben estar compuestos por videos borrosos y de baja resolución. En general, también deberías tratar de proporcionar videos de entrenamiento con múltiples ángulos, resoluciones y fondos.

  • Por lo general, los modelos de Vertex AI no pueden predecir las etiquetas que las personas no pueden asignar. Por lo tanto, si no se puede entrenar a una persona para que asigne etiquetas con tan solo mirar el video durante 1 o 2 segundos, es probable que tampoco se pueda entrenar al modelo para que lo haga.

  • El modelo funciona mejor cuando hay como máximo 100 veces más videos para la etiqueta más común que para la etiqueta menos común. Recomendamos quitar etiquetas de baja frecuencia. Para la clasificación de videos, la cantidad recomendada de videos de entrenamiento por etiqueta es de 1,000. El mínimo por etiqueta es de 10 (50 para los modelos avanzados). En general, se necesitan más ejemplos por etiqueta para entrenar modelos con múltiples etiquetas por video. Además, las puntuaciones resultantes son más difíciles de interpretar.

Archivos de esquema

  • Usa el siguiente archivo de esquema de acceso público cuando crees el archivo de jsonl para importar anotaciones. Este archivo de esquema dicta el formato de los archivos de entrada de datos. La estructura del archivo sigue la prueba de esquema de OpenAPI.

    Archivo de esquema de clasificación de videos:

    gs://google-cloud-aiplatform/schema/dataset/ioformat/video_classification_io_format_1.0.0.yaml

    Archivo del esquema completo

    
    
    title: VideoClassification
    description: >
      Import and export format for importing/exporting videos together with
      classification annotations with time segment. Can be used in
      Dataset.import_schema_uri field.
    type: object
    required:
    - videoGcsUri
    properties:
      videoGcsUri:
        type: string
        description: >
          A Cloud Storage URI pointing to a video. Up to 50 GB in size and
          up to 3 hours in duration. Supported file mime types: `video/mp4`,
          `video/avi`, `video/quicktime`.
      timeSegmentAnnotations:
        type: array
        description: >
          Multiple classification annotations. Each on a time segment of the video.
        items:
          type: object
          description: Annotation with a time segment on media (e.g., video).
          properties:
            displayName:
              type: string
              description: >
                It will be imported as/exported from AnnotationSpec's display name.
            startTime:
              type: string
              description: >
                The start of the time segment. Expressed as a number of seconds as
                measured from the start of the video, with "s" appended at the end.
                Fractions are allowed, up to a microsecond precision.
              default: 0s
            endTime:
              type: string
              description: >
                The end of the time segment. Expressed as a number of seconds as
                measured from the start of the video, with "s" appended at the end.
                Fractions are allowed, up to a microsecond precision, and "Infinity"
                is allowed, which corresponds to the end of the video.
              default: Infinity
            annotationResourceLabels:
              description: Resource labels on the Annotation.
              type: object
              additionalProperties:
                type: string
      dataItemResourceLabels:
        description: Resource labels on the DataItem.
        type: object
        additionalProperties:
          type: string
    

Archivos de entrada

El formato de los datos de entrenamiento para la clasificación de videos es el siguiente.

Para importar tus datos, crea un archivo JSONL o CSV.

JSONL

JSON en cada línea:
Consulta el archivo de esquema de clasificación (global) para obtener más detalles.



{
	"videoGcsUri": "gs://bucket/filename.ext",
	"timeSegmentAnnotations": [{
		"displayName": "LABEL",
		"startTime": "start_time_of_segment",
		"endTime": "end_time_of_segment"
	}],
	"dataItemResourceLabels": {
		"aiplatform.googleapis.com/ml_use": "train|test"
	}
}

JSONL de ejemplo - Clasificación de video:



{"videoGcsUri": "gs://demo/video1.mp4", "timeSegmentAnnotations": [{"displayName": "cartwheel", "startTime": "1.0s", "endTime": "12.0s"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"videoGcsUri": "gs://demo/video2.mp4", "timeSegmentAnnotations": [{"displayName": "swing", "startTime": "4.0s", "endTime": "9.0s"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
...

CSV

Formato de una fila en el archivo CSV:

[ML_USE,]VIDEO_URI,LABEL,START,END

Lista de columnas

  1. ML_USE (opcional). Para la división de datos con el entrenamiento de un modelo. Usa TRAINING o TEST.
  2. VIDEO_URI. Este campo contiene un URI de Cloud Storage para el video. Los URI de Cloud Storage distinguen entre mayúsculas y minúsculas.
  3. LABEL. Las etiquetas deben comenzar con una letra y solo deben contener letras, números y guiones bajos. Si quieres especificar múltiples etiquetas para un video, agrega múltiples filas en el archivo CSV que identifiquen el mismo segmento de video con una etiqueta diferente para cada fila.
  4. START,END. Estas dos columnas, START y END, respectivamente, identifican la hora de inicio y finalización del segmento de video para analizar, en segundos. La hora de inicio debe ser menor que la de finalización. Ambos valores no deben ser negativos y deben estar dentro del intervalo de tiempo del video. Por ejemplo: 0.09845,1.36005. Para usar todo el contenido del video, especifica una hora de inicio de 0 y una hora de finalización de la duración total del video o “inf”. Por ejemplo, 0,inf.

Ejemplo de CSV - Clasificación con una sola etiqueta

Una sola etiqueta en el mismo segmento de video:

TRAINING,gs://YOUR_VIDEO_PATH/vehicle.mp4,mustang,0,5.4
...

Ejemplo de CSV - Varias etiquetas:

Varias etiquetas en el mismo segmento de video:

gs://YOUR_VIDEO_PATH/vehicle.mp4,fiesta,0,8.285
gs://YOUR_VIDEO_PATH/vehicle.mp4,ranger,0,8.285
gs://YOUR_VIDEO_PATH/vehicle.mp4,explorer,0,8.285
...

Ejemplo de CSV - Sin etiquetas:

También puedes proporcionar videos en el archivo de datos CSV sin especificar ninguna etiqueta. Luego, debes usar la consola de Google Cloud para aplicar etiquetas a tus datos antes de entrenar el modelo. Para hacerlo, solo debes proporcionar el URI de Cloud Storage para el video seguido de tres comas, como se muestra en el siguiente ejemplo.

gs://YOUR_VIDEO_PATH/vehicle.mp4,,,
...