Préparer des données vidéo d'entraînement pour la classification

Cette page explique comment préparer les données d'entraînement vidéo à utiliser dans un ensemble de données Vertex AI pour entraîner un modèle de classification de vidéos.

Les sections suivantes fournissent des informations sur les exigences de données, les fichiers de schéma et le format des fichiers d'importation de données (JSONL et CSV) définis par le schéma.

Vous pouvez également importer des vidéos non annotées et les annoter ultérieurement à l'aide de la console Google Cloud (consultez la section Ajouter des étiquettes à l'aide de la console Google Cloud).

Exigences en matière de données

Les exigences suivantes s'appliquent aux ensembles de données utilisés pour entraîner des modèles AutoML ou des modèles personnalisés.

  • L'IA Vertex accepte les formats vidéo suivants pour entraîner votre modèle ou demander une prédiction (annotation d'une vidéo).

    • .MOV
    • .MPEG4
    • .MP4
    • .AVI
  • Pour afficher le contenu vidéo dans la console Web ou annoter une vidéo, vous devez utiliser un format compatible avec le navigateur. Étant donné que tous les navigateurs ne gèrent pas le contenu .MOV ou .AVI en mode natif, nous vous recommandons d'utiliser le format vidéo .MPEG4 ou .MP4.

  • La taille maximale du fichier est de 50 Go (durée maximale de 3 heures). Tous les fichiers vidéo dont les horodatages sont incorrects ou vides dans le conteneur ne sont pas acceptés.

  • Le nombre maximal d'étiquettes dans chaque ensemble de données est limité à 1 000.

  • Vous pouvez attribuer des étiquettes "ML_USE" aux vidéos des fichiers d'importation. Au moment de l'entraînement, vous pouvez choisir d'utiliser ces étiquettes pour scinder les vidéos et leurs annotations correspondantes en ensembles d'entraînement ou de test. Pour la classification des vidéos, tenez compte des points suivants :

    • Au moins deux classes différentes sont requises pour entraîner un modèle. Par exemple, "news" et "MTV", ou "game" et "others".
    • Pensez à inclure une classe "None_of_the_above" et des segments vidéo qui ne correspondent à aucune de vos classes définies.

Bonnes pratiques en termes de données vidéo utilisées afin d'entraîner des modèles AutoML

Les pratiques suivantes s'appliquent aux ensembles de données utilisés pour entraîner les modèles AutoML.

  • Les données d'entraînement doivent être aussi proches que possible des données sur lesquelles les prédictions sont fondées. Par exemple, si votre cas pratique implique des vidéos floues en basse résolution (comme celles d'une caméra de sécurité), vos données d'entraînement doivent être composées de vidéos floues à basse résolution. En général, il est également recommandé de fournir différents types d'angles, de résolutions et d'arrière-plans pour les vidéos d'entraînement.

  • Les modèles d'IA Vertex ne sont généralement pas capables de prédire les étiquettes qu'un humain ne serait pas en mesure d'attribuer. Ainsi, si un humain ne peut pas apprendre à attribuer des étiquettes en regardant la vidéo pendant 1 à 2 secondes, le modèle ne pourra probablement pas être entraîné à le faire non plus.

  • Le modèle fonctionne mieux lorsqu'il existe au maximum 100 fois plus de vidéos pour l'étiquette la plus courante que pour la plus rare. Nous vous recommandons de supprimer les libellés les moins fréquents. En ce qui concerne la classification des vidéos, le nombre de vidéos d'entraînement recommandé par étiquette est d'environ 1 000. Le nombre minimal de vidéos requis par étiquette est de 10, ou de 50 pour les modèles avancés. En général, l'entraînement de modèles avec plusieurs étiquettes par vidéo nécessite davantage d'exemples par étiquette, et les scores obtenus sont plus difficiles à interpréter.

Fichiers de schéma

  • Lors de la création du fichier jsonl pour l'importation d'annotations, utilisez le fichier de schéma accessible au public suivant. Ce fichier de schéma détermine le format des fichiers de données d'entrée. La structure du fichier suit le test du schéma OpenAPI.

    Fichier de schéma de la classification de vidéos :

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

    Fichier de schéma complet

    
    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
    

Fichiers d'entrée

Vos données d'entraînement pour la classification de vidéos doivent respecter les formats ci-après.

Pour importer vos données, créez un fichier JSONL ou CSV.

JSONL

Une expression JSON sur chaque ligne :
Pour en savoir plus, consultez la section Schéma de classification (global).


{
	"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"
	}
}

Exemple JSONL : classification de vidéos :


{"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

Format d'une ligne dans le fichier CSV :

[ML_USE,]VIDEO_URI,LABEL,START,END

Liste des colonnes

  1. ML_USE (Facultatif). Pour la répartition des données lors de l'entraînement d'un modèle. Utilisez TRAINING ou TEST.
  2. VIDEO_URI. Ce champ contient l'URI Cloud Storage de la vidéo. Les URI Cloud Storage sont sensibles à la casse.
  3. LABEL. Les étiquettes doivent commencer par une lettre et ne contenir que des lettres, des chiffres et des traits de soulignement. Vous pouvez spécifier plusieurs étiquettes pour une vidéo en ajoutant plusieurs lignes dans le fichier CSV, chacune identifiant la même séquence vidéo, avec une étiquette différente pour chaque ligne.
  4. START,END. Ces deux colonnes, START et END, identifient respectivement les heures de début et de fin, exprimées en secondes, de la séquence vidéo à analyser. L'heure de début doit être inférieure à l'heure de fin. Les deux valeurs doivent être positives et comprises dans la plage de temps de la vidéo. Exemple : 0.09845,1.36005. Pour utiliser l'intégralité du contenu de la vidéo, spécifiez une heure de début de 0 et une heure de fin égale à la durée totale de la vidéo, ou bien la valeur "inf". Exemple : 0,inf.

Exemple CSV : classification à l'aide d'une seule étiquette

Une seule étiquette sur la même séquence vidéo :

TRAINING,gs://YOUR_VIDEO_PATH/vehicle.mp4,mustang,0,5.4
...

Exemple CSV : étiquettes multiples :

Plusieurs étiquettes sur la même séquence vidéo :

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

Exemple CSV : aucun libellé :

Vous pouvez également fournir des vidéos dans le fichier de données sans spécifier d'étiquette. Vous devez ensuite utiliser la console Google Cloud pour appliquer des étiquettes à vos données avant d'entraîner le modèle. Pour ce faire, il vous suffit de fournir l'URI Cloud Storage de la vidéo, suivi de trois virgules, comme indiqué dans l'exemple suivant.

gs://YOUR_VIDEO_PATH/vehicle.mp4,,,
...