Prepara 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 a fin de entrenar un modelo de clasificación de imágenes.

En las secciones siguientes, se incluye información sobre los requisitos de datos, el archivo de esquema de entrada/salida y el formato de los archivos de importación de datos (líneas JSONL y CSV) que el esquema define.

Clasificación de una sola etiqueta

Requisitos de los datos

  • Datos de entrenamiento: cuando se entrena tu modelo, se admiten los siguientes formatos de imagen. Después de que la API de Vertex AI realiza un procesamiento previo de estas imágenes importadas, sirven como los datos usados para entrenar un modelo. El tamaño máximo del archivo es 30 MB.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • Datos de predicción: cuando se solicita una predicción (una consulta) de un modelo, se admiten los siguientes formatos de imagen. El tamaño máximo del archivo es 1.5 MB.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    Prácticas recomendadas para los datos de imágenes que se usan a fin de entrenar los modelos de AutoML

    Las siguientes prácticas recomendadas se aplican a los conjuntos de datos que entrenan modelos mediante 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 sobre los que se harán las predicciones. Por ejemplo, si tu caso práctico incluye 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 de baja resolución. En general, también deberías tratar de proporcionar imágenes de entrenamiento con múltiples ángulos, resoluciones y fondos.
  • Por lo general, los modelos de Vertex AI no pueden predecir las etiquetas que las personas no pueden asignar. Por lo tanto, si no se puede entrenar a las personas para que asignen etiquetas con tan solo mirar la imagen durante 1 o 2 segundos, es probable que tampoco se pueda entrenar al modelo para que lo haga.
  • Recomendamos que agregues aproximadamente 1,000 imágenes de entrenamiento por etiqueta. El mínimo por etiqueta es de 10. En general, se necesitan más ejemplos por etiqueta para entrenar modelos con múltiples etiquetas por imagen. Además, 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 destinadas a la etiqueta más común que a la etiqueta menos común. Te recomendamos que quites las etiquetas de frecuencia muy baja.
  • Considera incluir una etiqueta None_of_the_above, así como imágenes que no coincidan con ninguna de tus etiquetas definidas. Por ejemplo, para un conjunto de datos de flores, incluye imágenes de flores fuera de tus variedades etiquetadas y etiquétalas como None_of_the_above.

Archivo del esquema YAML

Usa 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 dicta 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 del 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

Líneas JSON

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 campos:

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

    En el ejemplo anterior, value es uno de los nombres de visualización de los conjuntos de anotaciones existentes en el conjunto de datos.

  • dataItemResourceLabels: puede contener cualquier cantidad de pares de strings de clave-valor. El único par clave-valor reservado por el sistema es el siguiente, que especifica el conjunto de uso del 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): Para fines de división de datos durante el entrenamiento de un modelo. Usa TRAINING, TEST o VALIDATION. Para obtener más información sobre la división manual de datos, consulta Información acerca de las divisiones de datos para modelos de AutoML.
  • GCS_FILE_PATH: este campo contiene el URI de Cloud Storage para la imagen. Los URI de Cloud Storage distinguen entre mayúsculas y minúsculas.
  • LABEL (opcional): las etiquetas deben comenzar con una letra y solo deben 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 con varias etiquetas

Requisitos de los datos

  • Datos de entrenamiento: cuando se entrena tu modelo, se admiten los siguientes formatos de imagen. Después de que la API de Vertex AI realiza un procesamiento previo de estas imágenes importadas, sirven como los datos usados para entrenar un modelo. El tamaño máximo del archivo es 30 MB.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • Datos de predicción: cuando se solicita una predicción (una consulta) de un modelo, se admiten los siguientes formatos de imagen. El tamaño máximo del archivo es 1.5 MB.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    Prácticas recomendadas para los datos de imágenes que se usan a fin de entrenar los modelos de AutoML

    Las siguientes prácticas recomendadas se aplican a los conjuntos de datos que entrenan modelos mediante 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 sobre los que se harán las predicciones. Por ejemplo, si tu caso práctico incluye 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 de baja resolución. En general, también deberías tratar de proporcionar imágenes de entrenamiento con múltiples ángulos, resoluciones y fondos.
  • Por lo general, los modelos de Vertex AI no pueden predecir las etiquetas que las personas no pueden asignar. Por lo tanto, si no se puede entrenar a las personas para que asignen etiquetas con tan solo mirar la imagen durante 1 o 2 segundos, es probable que tampoco se pueda entrenar al modelo para que lo haga.
  • Recomendamos que agregues aproximadamente 1,000 imágenes de entrenamiento por etiqueta. El mínimo por etiqueta es de 10. En general, se necesitan más ejemplos por etiqueta para entrenar modelos con múltiples etiquetas por imagen. Además, 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 destinadas a la etiqueta más común que a la etiqueta menos común. Te recomendamos que quites las etiquetas de frecuencia muy baja.
  • Considera incluir una etiqueta None_of_the_above, así como imágenes que no coincidan con ninguna de tus etiquetas definidas. Por ejemplo, para un conjunto de datos de flores, incluye imágenes de flores fuera de tus variedades etiquetadas y etiquétalas como None_of_the_above.

Archivo del esquema YAML

Usa 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 dicta 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 del 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

Líneas JSON

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 campos:

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

    En el ejemplo anterior, value es uno de los nombres de visualización de los conjuntos de anotaciones existentes en el conjunto de datos.

  • dataItemResourceLabels: puede contener cualquier cantidad de pares de strings de clave-valor. El único par clave-valor reservado por el sistema es el siguiente, que especifica el conjunto de uso del 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): Para fines de división de datos durante el entrenamiento de un modelo. Usa TRAINING, TEST o VALIDATION. Para obtener más información sobre la división manual de datos, consulta Información acerca de las divisiones de datos para modelos de AutoML.
  • GCS_FILE_PATH: este campo contiene el URI de Cloud Storage para la imagen. Los URI de Cloud Storage distinguen entre mayúsculas y minúsculas.
  • LABEL (opcional): las etiquetas deben comenzar con una letra y solo deben 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
...