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
-
ML_USE
(opcional). Para la división de datos con el entrenamiento de un modelo. Usa TRAINING o TEST. 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.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.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 de0
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,,, ...