Preparare i dati di addestramento video per il riconoscimento delle azioni

Questa pagina descrive come preparare i dati di addestramento video da utilizzare in un set di dati Vertex AI per addestrare un modello di riconoscimento di 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 non annotati e annotarli in un secondo momento utilizzando la console Google Cloud (consulta Etichettatura utilizzando la console Google Cloud).

Requisiti dei dati

I seguenti requisiti si applicano ai set di dati utilizzati per addestrare i modelli AutoML o con addestramento personalizzato.

  • Vertex AI supporta i seguenti formati video per l'addestramento del modello o la richiesta di una previsione (annotazione di un video).

    • .MOV
    • .MPEG4
    • .MP4
    • .AVI
  • Per visualizzare i contenuti video nella console web o aggiungere annotazioni a un video, il video deve essere in un formato supportato nativamente 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). I singoli file video con timestamp non validi o vuoti nel contenitore non sono supportati.

  • Il numero massimo di etichette in ogni set di dati è limitato a 1000.

  • Puoi assegnare le etichette "ML_USE" ai video nei file di importazione. Al momento dell'addestramento, puoi scegliere di utilizzare queste etichette per suddividere i video e le relative annotazioni in set di "addestramento" o "test". Per il riconoscimento delle azioni,esiste una limitazione quando si utilizza la console di etichettatura VAR, il che significa che se vuoi utilizzare lo strumento di etichettatura per etichettare le azioni, devi etichettare tutte le azioni nel 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 i modelli AutoML.

  • 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.

  • In genere, i modelli Vertex AI non possono 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, probabilmente non è possibile addestrare neanche il modello a farlo.

  • Il modello funziona al meglio quando ci sono al massimo 100 volte più video per l'etichetta più comune rispetto a quella 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 dei fotogrammi video molto più grande di 1024 x 1024 pixel, è possibile che venga persa parte della qualità dell'immagine durante la procedura di normalizzazione dei fotogrammi utilizzata da Vertex AI.

File di schema

  • Utilizza il seguente file dello schema accessibile pubblicamente quando crei il file JSONL per l'importazione delle annotazioni. Questo file dello schema definisce il formato dei file di input dei dati. La struttura del file segue il test dello schema OpenAPI.

    File dello schema di riconoscimento delle azioni:

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

    File 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

Il formato dei dati di addestramento per il riconoscimento delle azioni video è il seguente.

Per importare i dati, crea un file JSONL o CSV.

JSONL

JSON su ogni riga:
Per maggiori dettagli, consulta il file YAML di riconoscimento di 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 JSONL: riconoscimento dell'azione 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
  1. Dati di convalida. (Facoltativo)TRAINING, TEST specifica.
  2. I contenuti da classificare o annotare. Questo campo contiene l'URI Cloud Storage del video. Gli URI Cloud Storage sono sensibili alle maiuscole.
  3. Un'etichetta che identifica la categoria del video. 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 di video, ciascuna con un'etichetta diversa.
  4. Ora di inizio e di fine del segmento video. Questi due campi, separati da virgole, identificano l'ora di inizio e di fine del segmento di video da analizzare, in secondi. L'ora di inizio deve essere inferiore all'ora di fine. Entrambi i valori devono essere non negativi e rientrare nell'intervallo di tempo del 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 l'intero contenuto del video, specifica un'ora di inizio pari a 0 e un'ora di fine pari alla durata completa del video o "inf". Ad esempio: 0,inf.
  5. Annotazione. L'annotazione è un'etichetta con il timestamp del frame o il segmento di tempo.

Ogni riga deve essere 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,,

Non sono presenti azioni di interesse nei due intervalli di tempo. Nota: l'ultima riga indica che il segmento completamente etichettato 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 un segmento completamente etichettato.


Anche in questo caso, non è necessario specificare i dati di convalida per verificare i risultati del modello addestrato. Vertex AI suddivide automaticamente le righe identificate per l'addestramento in dati di addestramento e convalida. 80% per l'addestramento e 20% per la convalida.

Salva i contenuti come file CSV nel bucket Cloud Storage.