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

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

Les sections suivantes portent sur ces différents objectifs et contiennent des informations sur les exigences applicables aux données, le fichier de schéma d'entrée/sortie et le format des fichiers d'importation de données (JSON Lines et CSV) définis par le schéma.

Classification à étiquette unique

Exigences en matière de données

  • Données d'entraînement : les formats d'image suivants sont compatibles avec l'entraînement d'un modèle. Une fois que l'API Vertex AI a prétraité les images importées, elles servent de données pour l'entraînement d'un modèle. La taille de fichier maximale est de 30 Mo.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • Données de prédiction : les formats d'image suivants sont compatibles avec les demandes de prédiction (requête) à partir de votre modèle. La taille de fichier maximale est de 1,5 Mo.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    Bonnes pratiques pour les données d'image utilisées afin d'entraîner des modèles AutoML

    Les bonnes pratiques suivantes s'appliquent aux ensembles de données qui entraînent des modèles avec AutoML.

  • Les modèles AutoML sont optimisés pour les photographies d'objets dans le monde réel.
  • Les données d'entraînement doivent être aussi proches que possible des données sur lesquelles les prédictions seront effectuées. Par exemple, si votre cas pratique implique des images floues en basse résolution (comme celles d'une caméra de sécurité), vos données d'entraînement doivent être composées d'images floues à basse résolution. En général, il est également recommandé de fournir différents angles, résolutions et arrière-plans pour vos images 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 l'image pendant 1 à 2 secondes, le modèle ne pourra probablement pas être entraîné à le faire non plus.
  • Nous vous recommandons d'avoir environ 1 000 vidéos d'entraînement par libellé. Le nombre minimum par étiquette est de 10. En général, l'entraînement de modèles avec plusieurs étiquettes par image nécessite davantage d'exemples par étiquette, et les résultats sont plus difficiles à interpréter.
  • Le modèle fonctionne mieux lorsqu'il existe au maximum 100 fois plus d'images pour l'étiquette la plus courante que pour la plus rare. Nous vous recommandons de supprimer les étiquettes les moins fréquentes.
  • Pensez à inclure une étiquette None_of_the_above et des images qui ne correspondent à aucune des étiquettes définies. Par exemple, pour un ensemble de données sur les fleurs, incluez des images de fleurs ne faisant pas partie des variétés étiquetées et attribuez-leur l'étiquette None_of_the_above.

Fichier de schéma YAML

Utilisez le fichier de schéma publiquement accessible suivant pour importer des annotations de classification d'images portant sur une seule étiquette. Ce fichier de schéma détermine le format des fichiers de données d'entrée. La structure de ce fichier suit le schéma OpenAPI.

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

Fichier de schéma complet

title: ImageClassificationSingleLabel
description: >
 Import and export format for importing/exporting images together with
 single-label classification annotation. Can be used in
 Dataset.import_schema_uri field.
type: object
required:
- imageGcsUri
properties:
 imageGcsUri:
   type: string
   description: >
     A Cloud Storage URI pointing to an image. Up to 30MB in size.
     Supported file mime types: `image/jpeg`, `image/gif`, `image/png`,
     `image/webp`, `image/bmp`, `image/tiff`, `image/vnd.microsoft.icon`.
 classificationAnnotation:
   type: object
   description: Single classification Annotation on the image.
   properties:
     displayName:
       type: string
       description: >
         It will be imported as/exported from AnnotationSpec's display name,
         i.e. the name of the label/class.
     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

JSON Lines

JSON sur chaque ligne :


{
  "imageGcsUri": "gs://bucket/filename.ext",
  "classificationAnnotation": {
    "displayName": "LABEL",
    "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name": "displayName",
        "env": "prod"
      }
   },
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training/test/validation"
  }
}

Remarques sur les champs :

  • imageGcsUri : seul champ obligatoire.
  • annotationResourceLabels : peut contenir un nombre indéfini de paires clé/valeur. La seule paire clé-valeur réservée par le système est la suivante :
    • "aiplatform.googleapis.com/annotation_set_name" : "value"

    value est l'un des noms à afficher des ensembles d'annotations existants dans l'ensemble de données.

  • dataItemResourceLabels : peut contenir un nombre indéfini de paires clé/valeur. La seule paire clé-valeur réservée par le système est la suivante, qui spécifie l'ensemble d'utilisation de machine learning de l'élément de données :
    • "aiplatform.googleapis.com/ml_use" : "training/test/validation"

Exemple JSON Lines – image_classification_single_label.jsonl :


{"imageGcsUri": "gs://bucket/filename1.jpeg",  "classificationAnnotation": {"displayName": "daisy"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
{"imageGcsUri": "gs://bucket/filename2.gif",  "classificationAnnotation": {"displayName": "dandelion"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename3.png",  "classificationAnnotation": {"displayName": "roses"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename4.bmp",  "classificationAnnotation": {"displayName": "sunflowers"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename5.tiff",  "classificationAnnotation": {"displayName": "tulips"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "validation"}}
...

CSV

Format CSV :

[ML_USE],GCS_FILE_PATH,[LABEL]
Liste des colonnes
  • ML_USE (facultatif) : pour la répartition des données lors de l'entraînement d'un modèle. Utilisez TRAINING (entraînement), TEST ou VALIDATION. Pour en savoir plus sur la répartition manuelle des données, consultez la page À propos de la répartition des données pour les modèles AutoML.
  • GCS_FILE_PATH : ce champ contient l'URI Cloud Storage de l'image. Les URI Cloud Storage sont sensibles à la casse.
  • LABEL (facultatif) : les libellés doivent commencer par une lettre et ne contenir que des lettres, des chiffres et des traits de soulignement.

Exemple de fichier CSV - image_classification_single_label.csv :

test,gs://bucket/filename1.jpeg,daisy
training,gs://bucket/filename2.gif,dandelion
gs://bucket/filename3.png
gs://bucket/filename4.bmp,sunflowers
validation,gs://bucket/filename5.tiff,tulips
...
    

Classification multi-étiquette

Exigences en matière de données

  • Données d'entraînement : les formats d'image suivants sont compatibles avec l'entraînement d'un modèle. Une fois que l'API Vertex AI a prétraité les images importées, elles servent de données pour l'entraînement d'un modèle. La taille de fichier maximale est de 30 Mo.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • Données de prédiction : les formats d'image suivants sont compatibles avec les demandes de prédiction (requête) à partir de votre modèle. La taille de fichier maximale est de 1,5 Mo.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    Bonnes pratiques pour les données d'image utilisées afin d'entraîner des modèles AutoML

    Les bonnes pratiques suivantes s'appliquent aux ensembles de données qui entraînent des modèles avec AutoML.

  • Les modèles AutoML sont optimisés pour les photographies d'objets dans le monde réel.
  • Les données d'entraînement doivent être aussi proches que possible des données sur lesquelles les prédictions seront effectuées. Par exemple, si votre cas pratique implique des images floues en basse résolution (comme celles d'une caméra de sécurité), vos données d'entraînement doivent être composées d'images floues à basse résolution. En général, il est également recommandé de fournir différents angles, résolutions et arrière-plans pour vos images 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 l'image pendant 1 à 2 secondes, le modèle ne pourra probablement pas être entraîné à le faire non plus.
  • Nous vous recommandons d'avoir environ 1 000 vidéos d'entraînement par libellé. Le nombre minimum par étiquette est de 10. En général, l'entraînement de modèles avec plusieurs étiquettes par image nécessite davantage d'exemples par étiquette, et les résultats sont plus difficiles à interpréter.
  • Le modèle fonctionne mieux lorsqu'il existe au maximum 100 fois plus d'images pour l'étiquette la plus courante que pour la plus rare. Nous vous recommandons de supprimer les étiquettes les moins fréquentes.
  • Pensez à inclure une étiquette None_of_the_above et des images qui ne correspondent à aucune des étiquettes définies. Par exemple, pour un ensemble de données sur les fleurs, incluez des images de fleurs ne faisant pas partie des variétés étiquetées et attribuez-leur l'étiquette None_of_the_above.

Fichier de schéma YAML

Utilisez le fichier de schéma publiquement accessible suivant pour importer des annotations de classification d'images portant sur plusieurs étiquettes. Ce fichier de schéma détermine le format des fichiers de données d'entrée. La structure de ce fichier suit le schéma OpenAPI.

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

Fichier de schéma complet

title: ImageClassificationMultiLabel
description: >
 Import and export format for importing/exporting images together with
 multi-label classification annotations. Can be used in
 Dataset.import_schema_uri field.
type: object
required:
- imageGcsUri
properties:
 imageGcsUri:
   type: string
   description: >
     A Cloud Storage URI pointing to an image. Up to 30MB in size.
     Supported file mime types: `image/jpeg`, `image/gif`, `image/png`,
     `image/webp`, `image/bmp`, `image/tiff`, `image/vnd.microsoft.icon`.
 classificationAnnotations:
   type: array
   description: Multiple classification Annotations on the image.
   items:
     type: object
     description: Classification annotation.
     properties:
       displayName:
         type: string
         description: >
           It will be imported as/exported from AnnotationSpec's display name,
           i.e. the name of the label/class.
       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

JSON Lines

JSON sur chaque ligne :


{
  "imageGcsUri": "gs://bucket/filename.ext",
  "classificationAnnotations": [
    {
      "displayName": "LABEL1",
      "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name":"displayName",
        "label_type": "flower_type"
      }
    },
    {
      "displayName": "LABEL2",
      "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name":"displayName",
        "label_type": "image_shot_type"
      }
    }
  ],
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training/test/validation"
  }
}

Remarques sur les champs :

  • imageGcsUri : seul champ obligatoire.
  • annotationResourceLabels : peut contenir un nombre indéfini de paires clé/valeur. La seule paire clé-valeur réservée par le système est la suivante :
    • "aiplatform.googleapis.com/annotation_set_name" : "value"

    value est l'un des noms à afficher des ensembles d'annotations existants dans l'ensemble de données.

  • dataItemResourceLabels : peut contenir un nombre indéfini de paires clé/valeur. La seule paire clé-valeur réservée par le système est la suivante, qui spécifie l'ensemble d'utilisation de machine learning de l'élément de données :
    • "aiplatform.googleapis.com/ml_use" : "training/test/validation"

Exemple JSON Lines – image_classification_multi_label.jsonl :


{"imageGcsUri": "gs://bucket/filename1.jpeg",  "classificationAnnotations": [{"displayName": "daisy"}, {"displayName": "full_shot"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
{"imageGcsUri": "gs://bucket/filename2.gif",  "classificationAnnotations": [{"displayName": "dandelion"}, {"displayName": "medium_shot"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename3.png",  "classificationAnnotations": [{"displayName": "roses"}, {"displayName": "extreme_closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename4.bmp",  "classificationAnnotations": [{"displayName": "sunflowers"}, {"displayName": "closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename5.tiff",  "classificationAnnotations": [{"displayName": "tulips"}, {"displayName": "extreme_closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "validation"}}
...

CSV

Format CSV :

[ML_USE],GCS_FILE_PATH,[LABEL1,LABEL2,...LABELn]
Liste des colonnes
  • ML_USE (facultatif) : pour la répartition des données lors de l'entraînement d'un modèle. Utilisez TRAINING (entraînement), TEST ou VALIDATION. Pour en savoir plus sur la répartition manuelle des données, consultez la page À propos de la répartition des données pour les modèles AutoML.
  • GCS_FILE_PATH : ce champ contient l'URI Cloud Storage de l'image. Les URI Cloud Storage sont sensibles à la casse.
  • LABEL (facultatif) : les libellés doivent commencer par une lettre et ne contenir que des lettres, des chiffres et des traits de soulignement.

Exemple de fichier CSV - image_classification_multi_label.csv :

test,gs://bucket/filename1.jpeg,daisy,full_shot
training,gs://bucket/filename2.gif,dandelion,medium_shot
gs://bucket/filename3.png
gs://bucket/filename4.bmp,sunflowers,closeup
validation,gs://bucket/filename5.tiff,tulips,extreme_closeup
...