Prepara i dati di addestramento video per il monitoraggio degli oggetti

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.
In questa pagina viene descritto come preparare i dati di addestramento video da utilizzare in un set di dati Vertex AI per addestrare un modello di monitoraggio degli oggetti video.

Le seguenti sezioni forniscono informazioni sui requisiti dei dati, i file di schema e il formato dei file di importazione dati (JSONL e amp; CSV) definiti dello schema.

In alternativa, puoi importare i video che non sono stati annotati e annotarli in un secondo momento utilizzando Google Cloud Console (vedi Etichettatura utilizzando Google Cloud Console).

Requisiti dei dati

I seguenti requisiti si applicano ai set di dati utilizzati per addestrare AutoML o i modelli addestrati personalizzati.

  • 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 dal tuo 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 è di 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 importati. Al momento della formazione, puoi scegliere di utilizzare le 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 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 modelli AutoML

Le seguenti pratiche si applicano ai set di dati utilizzati per addestrare i modelli AutoML.

  • I dati di addestramento dovrebbero 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 quelli di una videocamera di sicurezza), i dati di addestramento devono essere costituiti da video sfocati a bassa risoluzione. In generale, considera anche l'idea di fornire più angolazioni, risoluzioni e sfondi per i tuoi video di formazione.

  • I modelli di Vertex AI in genere non possono prevedere etichette che gli esseri umani non possono assegnare. Se un essere umano non può essere addestrato per assegnare etichette guardando il video per 1-2 secondi, è probabile che il modello non possa essere addestrato per farlo.

  • Il modello funziona al meglio quando ci sono al massimo 100 volte più video per l'etichetta più comune rispetto 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 x 10 px.
    • Per una risoluzione del frame video molto superiore a 1024 pixel per 1024 pixel, una certa qualità dell'immagine può andare perduta durante il processo di normalizzazione 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 schema accessibile pubblicamente quando crei il file JSON per importare le annotazioni. Questo file schema determina il formato dei file di input di dati. La struttura del file segue il test OpenAPI Schema.

    File dello schema di monitoraggio degli 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 informazioni dettagliate, consulta il file JavaScript del 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"
	}
}

Esempio di JSONL - 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) Ai fini della 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 più righe nel file CSV in modo che identifichino lo stesso segmento video, con un'etichetta diversa per ogni riga.
  • INSTANCE_ID (Facoltativo) Un ID istanza che identifica l'istanza dell'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 dell'oggetto presenti in diversi frame video sono etichettati come lo 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 si tratti della stessa istanza di oggetto.
  • TIME_OFFSET. Il frame video che indica l'offset della 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.
    riquadro_di_limitazione
    R. 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 dai valori delle coordinate x e y. I valori delle coordinate devono essere un numero in virgola mobile compreso nell'intervallo da 0 a 1, dove 0 rappresenta il valore minimo x o y e 1 rappresenta il massimo valore 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 ordinamento specifico di vertici. Inoltre, se quattro vertici specificati non formano un rettangolo parallelo ai bordi dell'immagine, Vertex AI specifica i vertici che formano tale rettangolo.
    Il riquadro di delimitazione di un oggetto può essere specificato in due modi:
    1. Due vertici specificati come composti da un insieme di coordinate x,y se sono diagonali opposte al 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,,
    2. Tutti e quattro i vertici specificati come mostrato 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.

Esempi di righe nei file di set di dati

Le seguenti righe 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 di tempo per iniziare il monitoraggio e due vertici in diagonale. 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 sono specificati

Come indicato in precedenza, puoi anche specificare i riquadri di delimitazione fornendo tutti e quattro i vertici, come mostrato negli esempi seguenti.

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 video nel file di dati senza specificare alcuna etichetta. Devi quindi utilizzare Google Cloud Console per applicare le etichette ai dati prima di addestrare il modello. Per farlo, è sufficiente fornire l'URI Cloud Storage per il video seguito da undici virgole, come mostrato nell'esempio seguente.

Esempio senza ml_use assegnato:

  gs://folder/video1.avi
  ...
  

Esempio con ml_use assegnato:

  TRAINING,gs://folder/video1.avi
  TEST,gs://folder/video2.avi
  ...