Preparar datos de entrenamiento de imágenes para la clasificación

En esta página se describe cómo preparar datos de entrenamiento de imágenes para usarlos en un conjunto de datos de Vertex AI y entrenar un modelo de clasificación de imágenes.

Las siguientes secciones objetivas incluyen información sobre los requisitos de los datos, el archivo de esquema de entrada/salida y el formato de los archivos de importación de datos (JSON Lines y CSV) definidos por el esquema.

Clasificación con una sola etiqueta

Requisitos de datos

  • Datos de entrenamiento: se admiten los siguientes formatos de imagen al entrenar el modelo. Después de que la API de Vertex AI preprocese estas imágenes importadas, se usarán como datos para entrenar un modelo. El tamaño máximo de archivo por imagen es de 30 MB.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • Datos de predicción: se admiten los siguientes formatos de imagen al solicitar una predicción de tu modelo (es decir, al consultarlo). El tamaño máximo de cada archivo es 1,5 MB.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    Prácticas recomendadas para los datos de imagen que se usan para entrenar modelos de AutoML

    Las siguientes prácticas recomendadas se aplican a los conjuntos de datos que entrenan modelos con AutoML.

  • Los modelos de AutoML están optimizados para fotografías de objetos del mundo real.
  • Los datos de entrenamiento deben ser lo más parecidos posible a los datos con los que se van a hacer las predicciones. Por ejemplo, si tu caso práctico implica imágenes borrosas y de baja resolución (como las de una cámara de seguridad), tus datos de entrenamiento deben estar compuestos por imágenes borrosas y de baja resolución. En general, también deberías proporcionar varios ángulos, resoluciones y fondos para las imágenes de entrenamiento.
  • Por lo general, los modelos de Vertex AI no pueden predecir etiquetas que los humanos no pueden asignar. Por lo tanto, si no se puede entrenar a una persona para que asigne etiquetas mirando la imagen durante 1 o 2 segundos, es probable que tampoco se pueda entrenar al modelo para que lo haga.
  • Recomendamos usar unas 1000 imágenes de entrenamiento por etiqueta. El mínimo por etiqueta es 10. Por lo general, se necesitan más ejemplos por etiqueta para entrenar modelos con varias etiquetas por imagen, y las puntuaciones resultantes son más difíciles de interpretar.
  • El modelo funciona mejor cuando hay como máximo 100 veces más imágenes de la etiqueta más común que de la menos común. Te recomendamos que elimines las etiquetas de frecuencia muy baja.
  • Te recomendamos que incluyas la etiqueta None_of_the_above e imágenes que no coincidan con ninguna de las etiquetas que hayas definido. Por ejemplo, en un conjunto de datos de flores, incluya imágenes de flores que no sean de las variedades etiquetadas y etiquételas como None_of_the_above.

Archivo de esquema YAML

Utilice el siguiente archivo de esquema de acceso público para importar anotaciones de clasificación de imágenes con una sola etiqueta. Este archivo de esquema determina el formato de los archivos de entrada de datos. La estructura de este archivo sigue el esquema de OpenAPI.

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

Archivo de esquema completo

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

Archivos de entrada

JSON Lines

JSON en cada línea:



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

Notas de campo:

  • imageGcsUri: el único campo obligatorio.
  • annotationResourceLabels: puede contener cualquier número de pares de cadenas clave-valor. El único par clave-valor reservado por el sistema es el siguiente:
    • "aiplatform.googleapis.com/annotation_set_name" : "value"

    value es uno de los nombres visibles de los conjuntos de anotaciones del conjunto de datos.

  • dataItemResourceLabels: puede contener cualquier número de pares de cadenas clave-valor. El único par clave-valor reservado por el sistema es el siguiente, que especifica el conjunto de usos de aprendizaje automático del elemento de datos:
    • "aiplatform.googleapis.com/ml_use" : "training/test/validation"

Ejemplo de líneas JSON: 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

Formato CSV:

[ML_USE],GCS_FILE_PATH,[LABEL]
Lista de columnas
  • ML_USE (Opcional): se usa para dividir los datos al entrenar un modelo. Usa TRAINING, TEST o VALIDATION. Para obtener más información sobre la división manual de datos, consulta Acerca de las divisiones de datos para los modelos de AutoML.
  • GCS_FILE_PATH: este campo contiene el URI de Cloud Storage de la imagen. En los URIs de Cloud Storage se distingue entre mayúsculas y minúsculas.
  • LABEL (Opcional): las etiquetas deben empezar por una letra y solo pueden contener letras, números y guiones bajos.

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

Clasificación de varias etiquetas

Requisitos de datos

  • Datos de entrenamiento: se admiten los siguientes formatos de imagen al entrenar el modelo. Después de que la API de Vertex AI preprocese estas imágenes importadas, se usarán como datos para entrenar un modelo. El tamaño máximo de archivo por imagen es de 30 MB.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • Datos de predicción: se admiten los siguientes formatos de imagen al solicitar una predicción de tu modelo (es decir, al consultarlo). El tamaño máximo de cada archivo es 1,5 MB.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    Prácticas recomendadas para los datos de imagen que se usan para entrenar modelos de AutoML

    Las siguientes prácticas recomendadas se aplican a los conjuntos de datos que entrenan modelos con AutoML.

  • Los modelos de AutoML están optimizados para fotografías de objetos del mundo real.
  • Los datos de entrenamiento deben ser lo más parecidos posible a los datos con los que se van a hacer las predicciones. Por ejemplo, si tu caso práctico implica imágenes borrosas y de baja resolución (como las de una cámara de seguridad), tus datos de entrenamiento deben estar compuestos por imágenes borrosas y de baja resolución. En general, también deberías proporcionar varios ángulos, resoluciones y fondos para las imágenes de entrenamiento.
  • Por lo general, los modelos de Vertex AI no pueden predecir etiquetas que los humanos no pueden asignar. Por lo tanto, si no se puede entrenar a una persona para que asigne etiquetas mirando la imagen durante 1 o 2 segundos, es probable que tampoco se pueda entrenar al modelo para que lo haga.
  • Recomendamos usar unas 1000 imágenes de entrenamiento por etiqueta. El mínimo por etiqueta es 10. Por lo general, se necesitan más ejemplos por etiqueta para entrenar modelos con varias etiquetas por imagen, y las puntuaciones resultantes son más difíciles de interpretar.
  • El modelo funciona mejor cuando hay como máximo 100 veces más imágenes de la etiqueta más común que de la menos común. Te recomendamos que elimines las etiquetas de frecuencia muy baja.
  • Te recomendamos que incluyas la etiqueta None_of_the_above e imágenes que no coincidan con ninguna de las etiquetas que hayas definido. Por ejemplo, en un conjunto de datos de flores, incluya imágenes de flores que no sean de las variedades etiquetadas y etiquételas como None_of_the_above.

Archivo de esquema YAML

Utilice el siguiente archivo de esquema de acceso público para importar anotaciones de clasificación de imágenes con varias etiquetas. Este archivo de esquema determina el formato de los archivos de entrada de datos. La estructura de este archivo sigue el esquema de OpenAPI.

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

Archivo de esquema completo

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

Archivos de entrada

JSON Lines

JSON en cada línea:


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

Notas de campo:

  • imageGcsUri: el único campo obligatorio.
  • annotationResourceLabels: puede contener cualquier número de pares de cadenas clave-valor. El único par clave-valor reservado por el sistema es el siguiente:
    • "aiplatform.googleapis.com/annotation_set_name" : "value"

    value es uno de los nombres visibles de los conjuntos de anotaciones del conjunto de datos.

  • dataItemResourceLabels: puede contener cualquier número de pares de cadenas clave-valor. El único par clave-valor reservado por el sistema es el siguiente, que especifica el conjunto de usos de aprendizaje automático del elemento de datos:
    • "aiplatform.googleapis.com/ml_use" : "training/test/validation"

Ejemplo de líneas JSON: 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

Formato CSV:

[ML_USE],GCS_FILE_PATH,[LABEL1,LABEL2,...LABELn]
Lista de columnas
  • ML_USE (Opcional): se usa para dividir los datos al entrenar un modelo. Usa TRAINING, TEST o VALIDATION. Para obtener más información sobre la división manual de datos, consulta Acerca de las divisiones de datos para los modelos de AutoML.
  • GCS_FILE_PATH: este campo contiene el URI de Cloud Storage de la imagen. En los URIs de Cloud Storage se distingue entre mayúsculas y minúsculas.
  • LABEL (Opcional): las etiquetas deben empezar por una letra y solo pueden contener letras, números y guiones bajos.

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