Questa pagina descrive come preparare i dati di addestramento video da utilizzare in una Set di dati Vertex AI per addestrare un modello di riconoscimento delle azioni video.
Le sezioni seguenti forniscono informazioni sui requisiti dei dati, sui file dello schema e sul formato dei file di importazione dei dati (JSONL e CSV) che sono definiti dallo schema.
In alternativa, puoi importare i video che non sono stati annotati e e annotarle in un secondo momento utilizzando la console Google Cloud. (consulta Etichettatura mediante la console Google Cloud).
Requisiti dei dati
I seguenti requisiti si applicano ai set di dati utilizzati per addestrare AutoML o modelli con addestramento personalizzato.
Vertex AI supporta i seguenti formati video per l'addestramento il modello o richiedere una previsione (annotazione di un video).
- .MOV
- .MPEG4
- .MP4
- .AVI
Per visualizzare i contenuti video nella console web o per annotare un video, il video devono essere in un formato supportato in modo nativo dal browser. Poiché non tutti i browser gestiscono i contenuti .MOV o .AVI in modo nativo, consigliamo di utilizzare il formato video .MPEG4 o .MP4.
La dimensione massima del file è 50 GB (fino a 3 ore di durata). Singolo video i file con timestamp non validi o vuoti nel container non sono supportati.
Il numero massimo di etichette in ogni set di dati è limitato a 1000.
Puoi assegnare "ML_USE" ai video nei file di importazione. Alle ore di addestramento, puoi scegliere di usare queste etichette per suddividere i video le annotazioni corrispondenti in "addestramento" o "test" e set di dati. Per l'azione riconoscimento,c'è un limite all'uso della console di etichettatura VAR, Ciò significa che se vuoi utilizzare lo strumento di etichettatura per etichettare le azioni, devono etichettare tutte le azioni in quel video.
Best practice per i dati video utilizzati per addestrare i modelli AutoML
Le seguenti pratiche si applicano ai set di dati utilizzati per addestrare AutoML di machine learning.
I dati di addestramento devono essere il più simili possibile ai dati su cui devono essere eseguite le previsioni. Ad esempio, se il tuo caso d'uso prevede video sfocati e a bassa risoluzione (ad esempio quelli di una videocamera di sicurezza), i dati di addestramento devono essere costituiti da video sfocati e a bassa risoluzione. In generale, ti consigliamo anche di fornire più angolazioni, risoluzioni e sfondi per i tuoi video di formazione.
I modelli Vertex AI in genere non sono in grado di prevedere le etichette che gli esseri umani impossibile assegnare. Se un essere umano non può essere addestrato ad assegnare le etichette esaminando il per 1-2 secondi, probabilmente nemmeno il modello può essere addestrato per farlo.
Il modello funziona meglio quando ci sono al massimo 100 volte più video per il più comune che per l'etichetta meno comune. Ti consigliamo di rimuovere le etichette con frequenza bassa. Per il riconoscimento delle azioni, tieni presente quanto segue:
- Si consigliano almeno 100 frame video di addestramento per etichetta.
- Per la risoluzione del frame video molto più grande di 1024 pixel per 1024 pixel, una certa qualità dell'immagine potrebbe andare persa durante il processo di normalizzazione dei frame utilizzato da Vertex AI.
File di schema
Utilizza il seguente file di schema accessibile pubblicamente durante la creazione dell'elemento jsonl per l'importazione delle annotazioni. Questo file di schema indica il formato i file di input dei dati. La struttura del file segue Schema OpenAPI test.
File di schema di riconoscimento delle azioni:
gs://google-cloud-aiplatform/schema/dataset/ioformat/video_action_recognition_io_format_1.0.0.yaml
File di schema completo
title: VideoActionRecognition description: > Import and export format for importing/exporting videos together with action recognition 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`. timeSegments: type: array description: Multiple fully-labeled segments. items: type: object description: A time period inside the video. properties: 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 timeSegmentAnnotations: type: array description: > Multiple action recognition 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 means 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. Overrides values set in ImportDataConfig at import time. Can set a user-defined label or the predefined `aiplatform.googleapis.com/ml_use` label, which is used to determine the data split and can be set to `training` and `test`. type: object additionalProperties: type: string
File di input
Di seguito è riportato il formato dei dati di addestramento per il riconoscimento delle azioni video.
Per importare i dati, crea un file JSONL o CSV.
JSONL
JSON su ogni riga:
Per maggiori dettagli, consulta il file YAML di riconoscimento delle azioni.
Nota: i segmenti di tempo qui vengono utilizzati per calcolare i timestamp
delle azioni. startTime
e endTime
di
timeSegmentAnnotations
possono essere uguali e corrispondono al fotogramma chiave dell'azione.
{ "videoGcsUri': "gs://bucket/filename.ext", "timeSegments": [{ "startTime": "start_time_of_fully_annotated_segment", "endTime": "end_time_of_segment"}], "timeSegmentAnnotations": [{ "displayName": "LABEL", "startTime": "start_time_of_segment", "endTime": "end_time_of_segment" }], "dataItemResourceLabels": { "ml_use": "train|test" } }
Esempio di codice JSONL - Riconoscimento delle azioni video:
{"videoGcsUri": "gs://demo/video1.mp4", "timeSegmentAnnotations": [{"displayName": "cartwheel", "startTime": "1.0s", "endTime": "12.0s"}], "dataItemResourceLabels": {"ml_use": "training"}} {"videoGcsUri": "gs://demo/video2.mp4", "timeSegmentAnnotations": [{"displayName": "swing", "startTime": "4.0s", "endTime": "9.0s"}], "dataItemResourceLabels": {"ml_use": "test"}} ...
CSV
Elenco di colonne- Dati di convalida.(Facoltativo)
TRAINING
, specificaTEST
. - I contenuti da classificare o annotare. Questo campo contiene l'URI Cloud Storage del video. Gli URI Cloud Storage sensibile alle maiuscole.
- Un'etichetta che identifica il modo in cui il video viene classificato. Etichette. deve iniziare con una lettera e contenere solo lettere, numeri e trattini bassi. Puoi specificare più etichette per un video aggiungendo più righe nel file CSV che identificano ciascuno lo stesso segmento video, con un'etichetta diversa per ogni riga.
- Ora di inizio e di fine del segmento video. Questi due,
i campi separati da virgole indicano l'ora di inizio e di fine del video
segmento da analizzare, in pochi secondi. L'ora di inizio deve essere inferiore alla fine
nel tempo. Entrambi i valori non devono essere negativi e devono rientrare nell'intervallo di tempo
video. Ad esempio,
0.09845,1.3600555
, dove il primo valore (0,09845) è la data e l'ora di inizio e il secondo valore (1,3600555) è la data e l'ora di fine del segmento di video che vuoi etichettare. Per utilizzare contenuti di tutti i contenuti del video, specifica un'ora di inizio pari a0
e un'ora di fine della durata completa del video o "inf". Ad esempio:0,inf
. - Annotazione. L'annotazione è un'etichetta con timestamp di entrambi i frame o un segmento di tempo.
Ogni riga deve corrispondere a una delle seguenti:
VIDEO_URI, TIME_SEGMENT_START, TIME_SEGMENT_END, LABEL, ANNOTATION_FRAME_TIMESTAMP
VIDEO_URI, , , LABEL, ANNOTATION_FRAME_TIMESTAMP
VIDEO_URI, TIME_SEGMENT_START, TIME_SEGMENT_END, LABEL, ANNOTATION_SEGMENT_START, ANNOTATION_SEGMENT_END
VIDEO_URI, , , LABEL, ANNOTATION_SEGMENT_START, ANNOTATION_SEGMENT_END
Alcuni esempi
Etichetta due azioni in momenti diversi:
gs://folder/video1.avi,kick,12.90,,
gs://folder/video1.avi,catch,19.65,,
Nessuna azione di interesse entro i due intervalli di tempo. Nota: l'ultima riga indica che il segmento con tutte le etichette non può contenere azioni.
gs://folder/video1.avi,,,10.0,20.0
gs://folder/video1.avi,,,25.0,40.0
I dati di addestramento devono avere almeno un'etichetta e una completamente etichettata in base al segmento.
Anche in questo caso, non è necessario specificare i dati di convalida per verificare i risultati del modello addestrato. Vertex AI divide automaticamente le righe identificate per l'addestramento in e i dati di convalida. l'80% per l'addestramento e il 20% per la convalida.
Salva i contenuti come file CSV nel bucket Cloud Storage.