Prepara i dati di addestramento delle immagini per il rilevamento degli oggetti

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.
In questa pagina viene descritto come preparare i dati di addestramento di immagini da utilizzare in un set di dati di Vertex AI per addestrare un modello di rilevamento di oggetti di immagine.

La seguente sezione dell'obiettivo include informazioni sui requisiti dei dati, il file schema di input/output e il formato dei file di importazione dati (Righe JSON e CSV) definiti dallo schema.

Rilevamento di oggetti

Requisiti dei dati

Requisiti generali delle immagini
Tipi di file supportati
  • JPEG
  • PNG
  • GIF
  • BMP
  • ICO
Tipi di immagini

I modelli AutoML sono ottimizzati per le fotografie di oggetti nel mondo reale.

Dimensioni del file immagine di addestramento (MB) Dimensione massima 30 MB.
Dimensioni del file immagine della previsione* (MB) Dimensione massima 1,5 MB.
Dimensioni immagine (pixel)

Dimensione massima consigliata: 1024 pixel per 1024 pixel.

Per le immagini molto più grandi di 1024 pixel per 1024 pixel, alcune qualità delle immagini potrebbero andare perse durante il processo di normalizzazione delle immagini di Vertex AI.

Requisiti relativi alle etichette e ai riquadri di delimitazione
I requisiti seguenti si applicano ai set di dati utilizzati per addestrare i modelli AutoML.
Istanze di etichette per l'addestramento

Minimo 10 annotazioni (istanze).

Requisiti delle annotazioni

Per ogni etichetta devi avere almeno 10 immagini, ognuna con almeno un'annotazione (riquadro di delimitazione e etichetta).

Tuttavia, ai fini dell'addestramento del modello, è consigliabile utilizzare circa 1000 annotazioni per etichetta. In generale, maggiore è il numero di immagini per etichetta, migliori saranno le prestazioni del modello.

Rapporto etichetta (dall'etichetta più comune a quella meno comune):

Il modello funziona al meglio quando ci sono al massimo 100 volte più immagini per l'etichetta più comune rispetto all'etichetta meno comune.

Per le prestazioni del modello, è consigliabile rimuovere le etichette a frequenza molto bassa.

Lunghezza del bordo del riquadro di delimitazione

Almeno 0,01 * lunghezza di un lato di un'immagine. Ad esempio, un'immagine di 1000 x 900 pixel richiederebbe riquadri di delimitazione di almeno 10 * 9 pixel.

Dimensione minima del riquadro limitato: 8 pixel per 8 pixel.

I requisiti seguenti si applicano ai set di dati utilizzati per addestrare AutoML o i modelli addestrati personalizzati.
Riquadro di delimitazione per immagine separata massimo 500.
Case di delimitazione restituite da una richiesta di previsione

100 (valore predefinito), 500 massimo.

Requisiti dei dati e del set di dati di addestramento
I requisiti seguenti si applicano ai set di dati utilizzati per addestrare i modelli AutoML.
Caratteristiche dell'immagine di addestramento

I dati di addestramento devono essere il più vicini possibile a quelli su cui si devono effettuare previsioni.

Ad esempio, se il tuo caso d'uso prevede immagini sfocate e a bassa risoluzione (come quelle di una videocamera di sicurezza), i dati di addestramento devono essere composti da immagini sfocate e a bassa risoluzione. In generale, considerate la possibilità di fornire più angolazioni, risoluzioni e sfondi per le immagini di addestramento.

I modelli di Vertex AI in genere non possono prevedere etichette che gli esseri umani non possono assegnare. Quindi, se un essere umano non può essere addestrato per assegnare etichette guardando l'immagine per 1-2 secondi, è probabile che il modello non possa essere addestrato per farlo.

Pre-elaborazione immagine interna

Una volta importate le immagini, Vertex AI esegue la pre-elaborazione dei dati. Le immagini pre-elaborate sono i dati effettivi utilizzati per addestrare il modello.

La pre-elaborazione dell'immagine (ridimensionamento) si verifica quando il bordo più piccolo dell'immagine è maggiore di 1024 pixel. Se il lato più piccolo dell'immagine supera i 1024 pixel, il lato più piccolo viene ridotto a 1024 pixel. Il lato più grande e i riquadri di delimitazione specificati vengono entrambi ridimensionati entrambi dello stesso valore del lato più piccolo. Di conseguenza, tutte le annotazioni ridimensionate (scatole di delimitazione ed etichette) vengono rimosse se le dimensioni sono inferiori a 8 pixel per 8 pixel.

Le immagini con un lato più piccolo inferiore o uguale a 1024 pixel non sono soggette al ridimensionamento in fase di pre-elaborazione.

I requisiti seguenti si applicano ai set di dati utilizzati per addestrare AutoML o i modelli addestrati personalizzati.
Immagini in ogni set di dati Massimo 150.000
Totale riquadri di annotazione annotati in ogni set di dati Massimo 1.000.000
Numero di etichette in ogni set di dati 1 minimo, 1000 massimo

File di schema YAML

Utilizza il seguente file di schema accessibile pubblicamente per importare le annotazioni di rilevamento di oggetti immagine (scatole di delimitazione ed etichette). Questo file schema determina il formato dei file di input di dati. La struttura di questo file segue lo schema OpenAPI.

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

File schema completo

title: ImageBoundingBox
description: >
  Import and export format for importing/exporting images together with bounding
  box 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`.
  boundingBoxAnnotations:
    type: array
    description: Multiple bounding box Annotations on the image.
    items:
      type: object
      description: >
        Bounding box anntoation. `xMin`, `xMax`, `yMin`, and `yMax` are relative
        to the image size, and the point 0,0 is in the top left of 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.
        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
        annotationResourceLabels:
          description: Resource labels on the Annotation.
          type: object
          additionalProperties:
            type: string
  dataItemResourceLabels:
    description: Resource labels on the DataItem.
    type: object
    additionalProperties:
      type: string

File di input

Righe JSON

JSON su ogni riga:


{
  "imageGcsUri": "gs://bucket/filename.ext",
  "boundingBoxAnnotations": [
    {
      "displayName": "OBJECT1_LABEL",
      "xMin": "X_MIN",
      "yMin": "Y_MIN",
      "xMax": "X_MAX",
      "yMax": "Y_MAX",
      "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name": "displayName",
        "env": "prod"
      }
    },
    {
      "displayName": "OBJECT2_LABEL",
      "xMin": "X_MIN",
      "yMin": "Y_MIN",
      "xMax": "X_MAX",
      "yMax": "Y_MAX"
    }
  ],
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "test/train/validation"
  }
}

Note sul campo:

  • imageGcsUri: l'unico campo obbligatorio.
  • annotationResourceLabels: può contenere un numero qualsiasi di coppie di stringhe chiave-valore. L'unica coppia chiave-valore prenotata dal sistema è la seguente:
    • "aiplatform.googleapis.com/annotation_set_name" : "value"

    Dove value è uno dei nomi visualizzati dei set di annotazioni esistenti nel set di dati.

  • dataItemResourceLabels: può contenere un numero qualsiasi di coppie di stringhe chiave-valore. L'unica coppia chiave-valore prenotata dal sistema è la seguente che specifica il set di utilizzo di machine learning dell'elemento di dati:
    • "aiplatform.googleapis.com/ml_use" : "training/test/validation"

Esempi di righe JSON - object_detection.jsonl:


{"imageGcsUri": "gs://bucket/filename1.jpeg", "boundingBoxAnnotations": [{"displayName": "Tomato", "xMin": "0.3", "yMin": "0.3", "xMax": "0.7", "yMax": "0.6"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
{"imageGcsUri": "gs://bucket/filename2.gif", "boundingBoxAnnotations": [{"displayName": "Tomato", "xMin": "0.8", "yMin": "0.2", "xMax": "1.0", "yMax": "0.4"},{"displayName": "Salad", "xMin": "0.0", "yMin": "0.0", "xMax": "1.0", "yMax": "1.0"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename3.png", "boundingBoxAnnotations": [{"displayName": "Baked goods", "xMin": "0.5", "yMin": "0.7", "xMax": "0.8", "yMax": "0.8"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename4.tiff", "boundingBoxAnnotations": [{"displayName": "Salad", "xMin": "0.1", "yMin": "0.2", "xMax": "0.8", "yMax": "0.9"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "validation"}}
...

CSV

Formato CSV:

[ML_USE],GCS_FILE_PATH,[LABEL],[BOUNDING_BOX]*
Elenco di colonne
  • ML_USE (Facoltativo) Ai fini della suddivisione dei dati durante l'addestramento di un modello. Utilizzare addestramento, test o convalida. Per ulteriori informazioni sulla suddivisione manuale dei dati, consulta Informazioni sulle suddivisioni di dati per i modelli AutoML.
  • GCS_FILE_PATH. Questo campo contiene l'URI Cloud Storage dell'immagine. Gli URI Cloud Storage sono sensibili alle maiuscole.
  • LABEL. Le etichette devono iniziare con una lettera e contenere solo lettere, numeri e trattini bassi.
  • BOUNDING_BOX. Un riquadro di delimitazione per un oggetto nell'immagine. Se specifichi un riquadro di delimitazione sono necessarie più colonne.
    riquadro_di_limitazione
    R. X_MIN,Y_MIN
    B. X_MAX,Y_MIN
    C. X_MAX,Y_MAX
    D. X_MIN,Y_MAX

    Ogni vertice è specificato da valori di coordinate x, y. Le coordinate sono valori normalizzati in virgola mobile [0,1]; 0,0 è X_MIN o Y_MIN, 1,0 è X_MAX o Y_MAX.

    Ad esempio, un riquadro di delimitazione per l'intera immagine è espresso come (0.0,0.0,,,1.0,1.0,) o (0.0,0.0,1.0,0.0,1.0,1.0,0.0,1.0).

    Il riquadro di delimitazione di un oggetto può essere specificato in uno dei due modi seguenti:

    1. Due vertici (due serie di coordinate x,y) diagonali opposte al rettangolo:
      A. X_MIN,Y_MIN
      C. X_MAX,Y_MAX
      come mostrato in questo esempio:
      A,,C,
      X_MIN,Y_MIN,,,X_MAX,Y_MAX,,
    2. Tutti e quattro i vertici specificati come mostrato in:
      X_MIN,Y_MIN,X_MAX,Y_MIN, X_MAX,Y_MAX,X_MIN,Y_MAX,
      Se i quattro vertici specificati non formano un rettangolo parallelo ai bordi dell'immagine, Vertex AI specifica i vertici che formano tale rettangolo.

CSV di esempio - object_detection.csv:

test,gs://bucket/filename1.jpeg,Tomato,0.3,0.3,,,0.7,0.6,,
training,gs://bucket/filename2.gif,Tomato,0.8,0.2,,,1.0,0.4,,
gs://bucket/filename2.gif
gs://bucket/filename3.png,Baked goods,0.5,0.7,0.8,0.7,0.8,0.8,0.5,0.8
validation,gs://bucket/filename4.tiff,Salad,0.1,0.2,,,0.8,0.9,,
...