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.
Vertex AI 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 le suivi des objets vidéo, tenez compte des points suivants :
- Le nombre maximal d'images vidéo étiquetées dans chaque ensemble de données est limité à 150 000.
- Le total maximal de cadres de délimitation annotés dans chaque ensemble de données est limité à 1 000 000.
- Le nombre maximal d'étiquettes dans chaque ensemble d'annotations est limité à 1 000.
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 Vertex AI 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. Pour le suivi des objets :
- La taille minimale d'un cadre de délimitation est de 10 pixels par 10 pixels.
- Les images vidéo dont la résolution est supérieure à 1 024 pixels par 1 024 pixels peuvent perdre en qualité lors du processus de normalisation des images utilisé par la fonctionnalité AutoML de suivi des objets.
- Chaque étiquette doit être présente dans au moins trois images vidéo distinctes. En outre, chacune doit également comporter au moins 10 annotations.
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 suivi d'objet :
gs://google-cloud-aiplatform/schema/dataset/ioformat/object_tracking_io_format_1.0.0.yaml
Fichier de schéma complet
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
Fichiers d'entrée
Vos données d'entraînement pour le suivi des objets vidéo doivent respecter les formats ci-après.
Pour importer vos données, créez un fichier JSONL ou CSV.
JSONL
JSON sur chaque ligne :
Pour en savoir plus, consultez le fichier yaml de suivi des objets.
{ "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" } }
Exemple JSONL : suivi d'objet vidéo :
{'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
Format d'une ligne dans le fichier CSV :
[ML_USE,]VIDEO_URI,LABEL,[INSTANCE_ID],TIME_OFFSET,BOUNDING_BOX
Liste des colonnes
ML_USE
(Facultatif). Pour la répartition des données lors de l'entraînement d'un modèle. Utilisez TRAINING ou TEST.VIDEO_URI
. Ce champ contient l'URI Cloud Storage de la vidéo. Les URI Cloud Storage sont sensibles à la casse.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.INSTANCE_ID
(Facultatif). Un ID d'instance qui identifie l'instance d'objet sur toutes les images vidéo. Si cet ID est fourni, le suivi d'objet AutoML l'utilise pour le réglage, l'entraînement et l'évaluation du suivi des objets. Les cadres de sélection d'une même instance d'objet présente dans différentes images vidéo sont étiquetés avec le même identifiant d'instance. L'ID d'instance est unique dans chaque vidéo, mais pas dans l'ensemble de données. Par exemple, si deux objets de deux vidéos différentes ont le même identifiant d'instance, cela ne signifie pas qu'ils possèdent la même instance d'objet.TIME_OFFSET
. Image indiquant le décalage temporel par rapport au début de la vidéo. Le décalage horaire est un nombre flottant et les unités sont exprimées en secondes.BOUNDING_BOX
Cadre de délimitation pour un objet dans l'image vidéo. Plusieurs colonnes sont nécessaires pour spécifier un cadre de délimitation.
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
Chaque sommet est spécifié par les valeurs de coordonnées x et y. Ces coordonnées doivent être des valeurs flottantes comprises entre 0 et 1, où 0 représente la valeur minimale de x ou de y et où 1 représente leur valeur maximale.
Par exemple, si (0,0) correspond à l'angle supérieur gauche et (1,1) à l'angle inférieur droit, les coordonnées du cadre de sélection englobant l'image entière peuvent être les suivantes : (0,0,,,1,1,,) ou (0,0,1,0,1,1,0,1).
Le suivi des objets AutoML ne nécessite pas de classement spécifique des sommets. De plus, si quatre sommets spécifiés ne forment pas un rectangle parallèle aux bords de l'image, Vertex AI spécifie des sommets qui forment un tel rectangle.
Le cadre de délimitation d'un objet peut être spécifié de deux manières :- Deux sommets spécifiés, constitués d'un ensemble de coordonnées x,y, s'ils correspondent à des points diagonalement opposés du rectangle :
A.x_relative_min
,y_relative_min
C.x_relative_max
,y_relative_max
comme indiqué dans cet exemple :
x_relative_min, y_relative_min,,,x_relative_max,y_relative_max,,
- Les quatre sommets spécifiés comme illustré dans :
x_relative_min,y_relative_min, x_relative_max,y_relative_min, x_relative_max,y_relative_max, x_relative_min,y_relative_max,
Si les quatre sommets spécifiés ne forment pas un rectangle parallèle aux bords de l'image, Vertex AI spécifie des sommets qui forment un tel rectangle.
- Deux sommets spécifiés, constitués d'un ensemble de coordonnées x,y, s'ils correspondent à des points diagonalement opposés du rectangle :
Exemples de lignes dans les fichiers d'ensembles de données
Les lignes suivantes montrent comment spécifier des données dans un ensemble de données. L'exemple inclut un chemin d'accès à une vidéo sur Cloud Storage, une étiquette pour l'objet, un décalage horaire de début du suivi et deux sommets diagonalement opposés.
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,,
où,
- VIDEO_URI est
gs://folder/video1.avi
; - LABEL est
car
; - INSTANCE_ID , (non spécifié)
- TIME_OFFSET est
12.90
; - x_relative_min,y_relative_min correspondent à
0.8,0.2
; - x_relative_max,y_relative_min n'est pas spécifié ;
- x_relative_max,y_relative_max correspondent à
0.9,0.3
; - x_relative_min,y_relative_max ne sont pas spécifiés.
Comme indiqué précédemment, vous pouvez également spécifier vos cadres de délimitation en fournissant les quatre sommets, comme illustré dans les exemples suivants.
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
Exemple CSV : aucune étiquette :
Vous pouvez également fournir des vidéos dans le fichier de données sans spécifier d'étiquette. Vous devez ensuite utiliser Google Cloud Console pour appliquer des étiquettes à vos données avant d'entraîner le modèle. Pour ce faire, vous devez uniquement fournir l'URI Cloud Storage de la vidéo, suivi de 11 virgules, comme indiqué dans l'exemple suivant.
Exemple sans ml_use attribué :
gs://folder/video1.avi ...
Exemple avec ml_use attribué :
TRAINING,gs://folder/video1.avi TEST,gs://folder/video2.avi ...