Le seguenti sezioni forniscono informazioni sui requisiti dei dati, sui file di schema e sul formato dei file di importazione dei dati (JSONL e CSV) definiti dallo schema.
In alternativa, puoi importare i video che non sono stati annotati e annotarli in un secondo momento utilizzando la console Google Cloud (vedi Etichettatura utilizzando la console Google Cloud).
Requisiti dei dati
I seguenti requisiti si applicano ai set di dati utilizzati per addestrare AutoML o i modelli con addestramento personalizzato.
Vertex AI supporta i seguenti formati video per addestrare 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 deve essere in un formato supportato in modo nativo dal tuo browser. Poiché non tutti i browser gestiscono i contenuti .MOV o .AVI in modo nativo, ti consigliamo di utilizzare il formato video .MPEG4 o .MP4.
La dimensione massima del file è 50 GB (fino a 3 ore di durata). I singoli file video con timestamp non corretti o vuoti nel contenitore non sono supportati.
Il numero massimo di etichette in ogni set di dati è limitato a 1000.
Puoi assegnare etichette "ML_USE" ai video nei file di importazione. Al momento della formazione, puoi scegliere di utilizzare queste etichette per suddividere i video e le annotazioni corrispondenti in set di "addestramento" o "test". Per il monitoraggio degli oggetti video, tieni presente quanto segue:
- Il numero massimo di frame video etichettati in ogni set di dati è limitato a 150.000.
- Il numero massimo di riquadri di delimitazione totali annotati in ogni set di dati è limitato a 1.000.000.
- Il numero massimo di etichette in ogni set di annotazioni è limitato a 1000.
Best practice per i dati video utilizzati per addestrare i modelli AutoML
Le seguenti pratiche si applicano ai set di dati utilizzati per addestrare i modelli AutoML.
I dati di addestramento devono essere il più vicini possibile a quelli su cui fare previsioni. Ad esempio, se il tuo caso d'uso riguarda video sfocati e a bassa risoluzione (ad esempio da una videocamera di sicurezza), i dati di addestramento dovrebbero essere composti da video sfocati e a bassa risoluzione. In generale, valutate anche la possibilità di fornire più angolazioni, risoluzioni e sfondi per i video di addestramento.
I modelli Vertex AI non sono in grado di prevedere etichette che gli esseri umani non possono assegnare. Se non è possibile addestrare una persona ad assegnare etichette guardando il video per 1-2 secondi, è probabile che il modello non possa essere addestrato per farlo.
Il modello funziona meglio quando ci sono al massimo 100 volte più video per l'etichetta più comune che per l'etichetta meno comune. Ti consigliamo di rimuovere le etichette a bassa frequenza. Per il monitoraggio degli oggetti:
- Le dimensioni minime del riquadro di delimitazione sono 10 px per 10 px.
- Per la risoluzione dei frame video molto maggiore di 1024 pixel per 1024 pixel, una certa qualità delle immagini può andare persa durante il processo di normalizzazione dei frame utilizzato dal monitoraggio degli oggetti AutoML.
- Ogni etichetta univoca deve essere presente in almeno tre frame video distinti. Inoltre, ogni etichetta deve avere almeno dieci annotazioni.
File di schema
Utilizza il seguente file di schema accessibile pubblicamente per creare il file JSON per l'importazione delle annotazioni. Questo file di schema determina il formato dei file di input di dati. La struttura del file segue il test dello schema di OpenAPI.
File schema di monitoraggio oggetti:
gs.google-cloud-aiplatform/schema/dataset/ioformat/object_tracking_io_format_1.0.0.yaml
File schema completo
title: VideoObjectTracking version: 1.0.0 description: > Import and export format for importing/exporting videos together with temporal bounding box annotations. 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`. TemporalBoundingBoxAnnotations: type: array description: Multiple temporal bounding box annotations. Each on a frame of the video. items: type: object description: > Temporal bounding box anntoation on video. `xMin`, `xMax`, `yMin`, and `yMax` are relative to the video frame size, and the point 0,0 is in the top left of the frame. properties: displayName: type: string description: > It will be imported as/exported from AnnotationSpec's display name, i.e., the name of the label/class. xMin: description: The leftmost coordinate of the bounding box. type: number format: double xMax: description: The rightmost coordinate of the bounding box. type: number format: double yMin: description: The topmost coordinate of the bounding box. type: number format: double yMax: description: The bottommost coordinate of the bounding box. type: number format: double timeOffset: type: string description: > A time offset of a video in which the object has been detected. Expressed as a number of seconds as measured from the start of the video, with fractions up to a microsecond precision, and with "s" appended at the end. instanceId: type: number format: integer description: > The instance of the object, expressed as a positive integer. Used to tell apart objects of the same type when multiple are present on a single video. annotationResourceLabels: description: Resource labels on the Annotation. type: object additionalProperties: type: string dataItemResourceLabels: description: Resource labels on the DataItem. type: object additionalProperties: type: string
File di input
Il formato dei dati di addestramento per il monitoraggio degli oggetti video è il seguente.
Per importare i dati, crea un file JSONL o CSV.
JSONL
JSON su ogni riga.
Per ulteriori dettagli, consulta File YAML per il monitoraggio degli oggetti.
{ "videoGcsUri": "gs://bucket/filename.ext", "TemporalBoundingBoxAnnotations": [{ "displayName": "LABEL", "xMin": "leftmost_coordinate_of_the_bounding box", "xMax": "rightmost_coordinate_of_the_bounding box", "yMin": "topmost_coordinate_of_the_bounding box", "yMax": "bottommost_coordinate_of_the_bounding box", "timeOffset": "timeframe_object-detected" "instanceId": "instance_of_object "annotationResourceLabels": "resource_labels" }], "dataItemResourceLabels": { "aiplatform.googleapis.com/ml_use": "train|test" } }
JSONL di esempio - Monitoraggio di oggetti video:
{'videoGcsUri': 'gs://demo-data/video1.mp4', 'temporal_bounding_box_annotations': [{'displayName': 'horse', 'instance_id': '-1', 'time_offset': '4.000000s', 'xMin': '0.668912', 'yMin': '0.560642', 'xMax': '1.000000', 'yMax': '1.000000'}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}} {'videoGcsUri': 'gs://demo-data/video2.mp4', 'temporal_bounding_box_annotations': [{'displayName': 'horse', 'instance_id': '-1', 'time_offset': '71.000000s', 'xMin': '0.679056', 'yMin': '0.070957', 'xMax': '0.801716', 'yMax': '0.290358'}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}} ...
CSV
Formato di una riga nel file CSV:
[ML_USE,]VIDEO_URI,LABEL,[INSTANCE_ID],TIME_OFFSET,BOUNDING_BOX
Elenco di colonne
ML_USE
(facoltativo). Per la suddivisione dei dati durante l'addestramento di un modello. Utilizza FORMAZIONE o TEST.VIDEO_URI
. Questo campo contiene l'URI Cloud Storage del video. Gli URI Cloud Storage sono sensibili alle maiuscole.LABEL
. Le etichette devono iniziare con una lettera e contenere solo lettere, numeri e trattini bassi. Puoi specificare più etichette per un video aggiungendo nel file CSV più righe che identificano lo stesso segmento video, con un'etichetta diversa per ogni riga.INSTANCE_ID
(facoltativo). Un ID istanza che identifica l'istanza oggetto nei frame video di un video. Se fornito, il monitoraggio degli oggetti AutoML li utilizza per l'ottimizzazione, l'addestramento e la valutazione degli oggetti. I riquadri di delimitazione della stessa istanza di oggetto presenti in frame video diversi sono etichettati come stesso ID istanza. L'ID istanza è univoco solo in ogni video, ma non nel set di dati. Ad esempio, se due oggetti di due video diversi hanno lo stesso ID istanza, non significa che abbiano la stessa istanza dell'oggetto.TIME_OFFSET
. Il frame video che indica lo offset di durata dall'inizio del video. L'offset temporale è un numero mobile e le unità sono in secondi.BOUNDING_BOX
. Un riquadro di delimitazione per un oggetto nel frame video. Se specifichi un riquadro di delimitazione, sono necessarie più colonne.
A.x_relative_min
,y_relative_min
B.x_relative_max
,y_relative_min
C.x_relative_max
,y_relative_max
D.x_relative_min
,y_relative_max
Ogni vertice è specificato da valori di coordinate x e y. I valori delle coordinate devono essere valori in virgola mobile compresi nell'intervallo da 0 a 1, dove 0 rappresenta il valore minimo x o y, mentre 1 rappresenta il valore massimo x o y.
Ad esempio, (0,0) rappresenta l'angolo in alto a sinistra e (1,1) rappresenta l'angolo in basso a destra; un riquadro di delimitazione per l'intera immagine è espresso come (0,0,,,1,1,) o (0,0,1,0,1,1,0,1).
Il monitoraggio di oggetti AutoML non richiede un ordine specifico del vertice. Inoltre, se quattro vertici specificati non formano un rettangolo parallelo ai bordi dell'immagine, Vertex AI specifica i vertici che formano un rettangolo di questo tipo.
Il riquadro di delimitazione per un oggetto può essere specificato in due modi:- Due vertici specificati composti da un insieme di coordinate x,y se sono diagonalmente opposti ai punti del rettangolo:
A.x_relative_min
,y_relative_min
C.x_relative_max
,y_relative_max
come mostrato in questo esempio:
x_relative_min, y_relative_min,,,x_relative_max,y_relative_max,,
- Tutti e quattro i vertici specificati in:
x_relative_min,y_relative_min, x_relative_max,y_relative_min, x_relative_max,y_relative_max, x_relative_min,y_relative_max,
Se i quattro vertici specificati non formano un rettangolo parallelo ai bordi dell'immagine, Vertex AI specifica i vertici che formano tale rettangolo.
- Due vertici specificati composti da un insieme di coordinate x,y se sono diagonalmente opposti ai punti del rettangolo:
Esempi di righe nei file di set di dati
Le righe seguenti mostrano come specificare i dati in un set di dati. L'esempio include un percorso a un video su Cloud Storage, un'etichetta per l'oggetto, un offset temporale per l'inizio del monitoraggio e due vertici diagonali.
VIDEO_URI.,LABEL,INSTANCE_ID,TIME_OFFSET,x_relative_min,y_relative_min,x_relative_max,y_relative_min,x_relative_max,y_relative_max,x_relative_min,y_relative_max
gs://folder/video1.avi,car,,12.90,0.8,0.2,,,0.9,0.3,,
gs://folder/video1.avi,bike,,12.50,0.45,0.45,,,0.55,0.55,,
dove,
- VIDEO_URI è
gs://folder/video1.avi
. - LABEL è
car
. - INSTANCE_ID , (non specificato)
- TIME_OFFSET è
12.90
. - x_relative_min,y_relative_min sono
0.8,0.2
, - x_relative_max,y_relative_min non specificato,
- x_relative_max,y_relative_max sono
0.9,0.3
, - x_relative_min,y_relative_max non è specificato
Come indicato in precedenza, puoi anche specificare i riquadri di delimitazione fornendo tutti e quattro i vertici, come mostrato nei seguenti esempi.
gs://folder/video1.avi,car,,12.10,0.8,0.8,0.9,0.8,0.9,0.9,0.8,0.9
gs://folder/video1.avi,car,,12.90,0.4,0.8,0.5,0.8,0.5,0.9,0.4,0.9
gs://folder/video1.avi,car,,12.10,0.4,0.2,0.5,0.2,0.5,0.3,0.4,0.3
CSV di esempio - nessuna etichetta:
Puoi anche fornire i video nel file di dati senza specificare alcuna etichetta. Devi quindi utilizzare la console Google Cloud per applicare le etichette ai dati prima di addestrare il modello. Per farlo, devi solo fornire l'URI Cloud Storage per il video seguito da undici virgole, come mostrato nell'esempio di seguito.
Esempio senza ml_use assegnato:
gs://folder/video1.avi ...
Esempio di ml_use assegnato:
TRAINING,gs://folder/video1.avi TEST,gs://folder/video2.avi ...