Preparar dados de treinamento de imagem para classificação

Nesta página, descrevemos como preparar dados de treinamento de imagens para uso em um conjunto de dados da plataforma de agentes do Gemini Enterprise a fim de treinar um modelo de classificação de imagens.

As seções de objetivo a seguir incluem informações sobre requisitos de dados, o arquivo de esquema de entrada/saída e o formato dos arquivos de importação de dados (Linhas JSON & CSV) definidos pelo esquema.

Permissões

Para usar imagens de um bucket do Cloud Storage, conceda ao agente de serviço da plataforma de agentes o papel de Storage Object Viewer para o bucket. O agente de serviço é uma conta serviço gerenciado pelo Google que a plataforma de agentes usa para acessar seus dados em seu nome. Para uma explicação mais detalhada, consulte Agentes de serviço.

Classificação de rótulo único

Requisitos de dados

  • Dados de treinamento: os formatos de imagem a seguir são compatíveis com o treinamento do modelo. Depois que a API Vertex AI pré-processa essas imagens importadas, elas servem como os dados usados para treinar um modelo. O tamanho máximo do arquivo por imagem é de 30 MB.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • Dados de previsão: os formatos de imagem a seguir são compatíveis com a solicitação de uma consulta (consulta) para o modelo. O tamanho máximo do arquivo é de 1,5 MB.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    Práticas recomendadas para dados de imagem usados para treinar modelos do AutoML

    As práticas recomendadas a seguir se aplicam a conjuntos de dados que treinam modelos usando o AutoML.

  • Os modelos do AutoML são otimizados para fotografias de objetos reais.
  • Os dados de treinamento precisam estar o mais próximo possível dos dados que serão previstos. Por exemplo, se o caso de uso envolver imagens borradas e de baixa resolução (como de uma câmera de segurança), seus dados de treinamento precisarão ser compostos por imagens borradas de baixa resolução. Em geral, pense também em fornecer vários ângulos, resoluções e planos de fundo para suas imagens de treinamento.
  • Os modelos da Vertex AI geralmente não preveem rótulos que pessoas não possam atribuir. Então, se um humano não puder ser treinado para atribuir rótulos olhando a imagem por 1 ou 2 segundos, o modelo provavelmente não poderá ser treinado para fazer isso também.
  • Recomendamos cerca de 1.000 imagens de treinamento por rótulo. O mínimo por rótulo é 10. Em geral, são necessários mais exemplos por rótulo para treinar modelos com vários rótulos por imagem, e os resultados são mais difíceis de interpretar.
  • O modelo funciona melhor quando há no máximo 100 vezes mais imagens para o rótulo mais comum do que para o menos comum. Recomendamos remover rótulos de frequência muito baixa.
  • Pense em incluir um rótulo None_of_the_above e imagens que não correspondam a nenhum dos rótulos definidos. Por exemplo, para um conjunto de dados de flores, inclua imagens de flores fora das variedades rotuladas e identifique-as como None_of_the_above.

Arquivo de esquema YAML

Use o seguinte arquivo de esquema de acesso público para importar anotações de classificação de imagem de rótulo único. Esse arquivo de esquema determina o formato dos arquivos de entrada de dados. A estrutura desse arquivo segue o esquema OpenAPI.

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

Arquivo 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

Arquivos de entrada

Linhas JSON

JSON em cada linha:



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

Observações sobre o campo:

  • imageGcsUri: o único campo obrigatório.
  • annotationResourceLabels: pode conter qualquer número de pares de strings de chave-valor. O único par de chave-valor reservado pelo sistema é o seguinte:
    • "aiplatform.googleapis.com/annotation_set_name" : "value"

    Em que value é um dos nomes de exibição dos conjuntos de anotações existentes no conjunto de dados.

  • dataItemResourceLabels: pode conter qualquer número de pares de strings de chave-valor. O único par de chave-valor reservado pelo sistema é o seguinte que especifica o conjunto de uso de machine learning do item de dados:
    • "aiplatform.googleapis.com/ml_use" : "training/test/validation"

Exemplo de linhas 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 colunas
  • ML_USE (opcional): para fins de divisão de dados ao treinar um modelo. Use TRAINING, TEST, ou VALIDATION. Para mais informações sobre a divisão de dados manual, consulte Sobre a divisão de dados para modelos do AutoML.
  • GCS_FILE_PATH: este campo contém o URI do Cloud Storage para a imagem. Esses URIs diferenciam maiúsculas de minúsculas.
  • LABEL Os rótulos precisam começar com uma letra e conter apenas letras, números e sublinhado (opcional).

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

Classificação de vários rótulos

Requisitos de dados

  • Dados de treinamento: os formatos de imagem a seguir são compatíveis com o treinamento do modelo. Depois que a API Vertex AI pré-processa essas imagens importadas, elas servem como os dados usados para treinar um modelo. O tamanho máximo do arquivo por imagem é de 30 MB.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • Dados de previsão: os formatos de imagem a seguir são compatíveis com a solicitação de uma consulta (consulta) para o modelo. O tamanho máximo do arquivo é de 1,5 MB.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    Práticas recomendadas para dados de imagem usados para treinar modelos do AutoML

    As práticas recomendadas a seguir se aplicam a conjuntos de dados que treinam modelos usando o AutoML.

  • Os modelos do AutoML são otimizados para fotografias de objetos reais.
  • Os dados de treinamento precisam estar o mais próximo possível dos dados que serão previstos. Por exemplo, se o caso de uso envolver imagens borradas e de baixa resolução (como de uma câmera de segurança), seus dados de treinamento precisarão ser compostos por imagens borradas de baixa resolução. Em geral, pense também em fornecer vários ângulos, resoluções e planos de fundo para suas imagens de treinamento.
  • Os modelos da Vertex AI geralmente não preveem rótulos que pessoas não possam atribuir. Então, se um humano não puder ser treinado para atribuir rótulos olhando a imagem por 1 ou 2 segundos, o modelo provavelmente não poderá ser treinado para fazer isso também.
  • Recomendamos cerca de 1.000 imagens de treinamento por rótulo. O mínimo por rótulo é 10. Em geral, são necessários mais exemplos por rótulo para treinar modelos com vários rótulos por imagem, e os resultados são mais difíceis de interpretar.
  • O modelo funciona melhor quando há no máximo 100 vezes mais imagens para o rótulo mais comum do que para o menos comum. Recomendamos remover rótulos de frequência muito baixa.
  • Pense em incluir um rótulo None_of_the_above e imagens que não correspondam a nenhum dos rótulos definidos. Por exemplo, para um conjunto de dados de flores, inclua imagens de flores fora das variedades rotuladas e identifique-as como None_of_the_above.

Arquivo de esquema YAML

Use o seguinte arquivo de esquema de acesso público para importar anotações de classificação de imagem de vários rótulos. Esse arquivo de esquema determina o formato dos arquivos de entrada de dados. A estrutura desse arquivo segue o esquema OpenAPI.

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

Arquivo 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

Arquivos de entrada

Linhas JSON

JSON em cada linha:


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

Observações sobre o campo:

  • imageGcsUri: o único campo obrigatório.
  • annotationResourceLabels: pode conter qualquer número de pares de strings de chave-valor. O único par de chave-valor reservado pelo sistema é o seguinte:
    • "aiplatform.googleapis.com/annotation_set_name" : "value"

    Em que value é um dos nomes de exibição dos conjuntos de anotações existentes no conjunto de dados.

  • dataItemResourceLabels: pode conter qualquer número de pares de strings de chave-valor. O único par de chave-valor reservado pelo sistema é o seguinte que especifica o conjunto de uso de machine learning do item de dados:
    • "aiplatform.googleapis.com/ml_use" : "training/test/validation"

Exemplo de linhas 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 colunas
  • ML_USE (opcional): para fins de divisão de dados ao treinar um modelo. Use TRAINING, TEST, ou VALIDATION. Para mais informações sobre a divisão de dados manual, consulte Sobre a divisão de dados para modelos do AutoML.
  • GCS_FILE_PATH: este campo contém o URI do Cloud Storage para a imagem. Esses URIs diferenciam maiúsculas de minúsculas.
  • LABEL Os rótulos precisam começar com uma letra e conter apenas letras, números e sublinhado (opcional).

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