Menyiapkan data pelatihan gambar untuk klasifikasi

Halaman ini menjelaskan cara untuk menyiapkan data pelatihan gambar agar dapat digunakan dalam set data Vertex AI, guna melatih model klasifikasi gambar.

Bagian tujuan berikut mencakup informasi tentang persyaratan data, file skema input/output, dan format file impor data (JSON Lines & CSV) yang ditentukan berdasarkan skema.

Klasifikasi label tunggal

Persyaratan data

  • Data pelatihan: Format gambar berikut ini didukung saat sedang melatih model Anda. Setelah Vertex AI API melakukan prapemrosesan gambar yang diimpor ini, maka gambar tersebut akan digunakan sebagai data yang digunakan untuk melatih sebuah model. Ukuran file maksimumnya adalah 30 MB.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • Data prediksi: Format gambar berikut ini didukung pada saat meminta prediksi dari (membuat kueri) model Anda. Ukuran file maksimum adalah 1,5 MB.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    Praktik terbaik untuk data gambar yang digunakan untuk melatih model AutoML

    Praktik terbaik berikut ini berlaku untuk set data yang melatih model menggunakan AutoML.

  • Model AutoML dioptimalkan untuk foto objek di dunia nyata.
  • Data pelatihan harus semirip mungkin dengan data yang menjadi dasar prediksi yang harus dibuat. Misalnya, jika dalam kasus penggunaan Anda terdapat gambar yang buram dengan resolusi rendah (seperti gambar dari kamera keamanan), data pelatihan Anda harus terdiri dari gambar yang buram dengan resolusi rendah. Umumnya, Anda juga harus mempertimbangkan untuk menyediakan beberapa sudut, resolusi, dan latar belakang untuk gambar pelatihan Anda.
  • Model Vertex AI pada umumnya tidak dapat memprediksi label yang tidak dapat ditetapkan oleh manusia. Sehingga, jika manusia tidak dapat menetapkan label dengan melihat gambar selama 1-2 detik, model tersebut kemungkinan tidak dapat dilatih untuk melakukan hal yang sama.
  • Kami merekomendasikan sekitar 1.000 gambar pelatihan per label. Jumlah minimum per label adalah 10. Umumnya, diperlukan lebih banyak contoh per label untuk melatih model dengan beberapa label per gambar, dan skor yang dihasilkan lebih sulit untuk ditafsirkan.
  • Model akan berfungsi optimal jika ada gambar yang 100x lebih banyak untuk label yang paling umum, daripada label yang paling tidak umum. Sebaiknya Anda menghapus label berfrekuensi sangat rendah.
  • Pertimbangkan untuk menyertakan label None_of_the_above dan gambar yang tidak cocok dengan label yang Anda tentukan. Misalnya, untuk set data bunga, sertakan gambar bunga di luar varietas berlabel, dan beri label None_of_the_above.

File skema YAML

Gunakan file skema yang dapat diakses secara publik berikut ini untuk mengimpor anotasi klasifikasi gambar label tunggal. File skema ini menentukan format file input data. Struktur file ini mengikuti skema OpenAPI.

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

File skema lengkap

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

File input

JSON Lines

JSON di setiap baris:


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

Catatan kolom:

  • imageGcsUri - Satu-satunya kolom yang wajib diisi.
  • annotationResourceLabels - Dapat berisi berapa pun pasangan string nilai kunci. Satu-satunya pasangan nilai kunci yang dicadangkan oleh sistem adalah sebagai berikut:
    • "aiplatform.googleapis.com/annotation_set_name" : "value"

    Dengan value adalah salah satu nama tampilan dari kumpulan anotasi yang ada dalam set data.

  • dataItemResourceLabels - Dapat berisi berapa pun pasangan string nilai kunci. Satu-satunya pasangan nilai kunci yang dicadangkan oleh sistem adalah berikut ini, yang menentukan kumpulan penggunaan machine learning dari item data:
    • "aiplatform.googleapis.com/ml_use" : "training/test/validation"

Contoh 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]
Daftar kolom
  • ML_USE (Opsional) - Untuk tujuan pemisahan data saat melatih model. Gunakan TRAINING, TEST, atau VALIDATION. Untuk mengetahui informasi selengkapnya tentang pembagian data secara manual, lihat Tentang pemisahan data untuk model AutoML.
  • GCS_FILE_PATH - Kolom ini berisi URI Cloud Storage untuk image. URI Cloud Storage peka huruf besar/kecil.
  • LABEL (Opsional) - Label harus diawali dengan huruf dan hanya berisi huruf, angka, serta garis bawah.

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

Klasifikasi multi-label

Persyaratan data

  • Data pelatihan: Format gambar berikut ini didukung saat sedang melatih model Anda. Setelah Vertex AI API melakukan prapemrosesan gambar yang diimpor ini, maka gambar tersebut akan digunakan sebagai data yang digunakan untuk melatih sebuah model. Ukuran file maksimumnya adalah 30 MB.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • Data prediksi: Format gambar berikut ini didukung pada saat meminta prediksi dari (membuat kueri) model Anda. Ukuran file maksimum adalah 1,5 MB.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    Praktik terbaik untuk data gambar yang digunakan untuk melatih model AutoML

    Praktik terbaik berikut ini berlaku untuk set data yang melatih model menggunakan AutoML.

  • Model AutoML dioptimalkan untuk foto objek di dunia nyata.
  • Data pelatihan harus semirip mungkin dengan data yang menjadi dasar prediksi yang harus dibuat. Misalnya, jika dalam kasus penggunaan Anda terdapat gambar yang buram dengan resolusi rendah (seperti gambar dari kamera keamanan), data pelatihan Anda harus terdiri dari gambar yang buram dengan resolusi rendah. Umumnya, Anda juga harus mempertimbangkan untuk menyediakan beberapa sudut, resolusi, dan latar belakang untuk gambar pelatihan Anda.
  • Model Vertex AI pada umumnya tidak dapat memprediksi label yang tidak dapat ditetapkan oleh manusia. Sehingga, jika manusia tidak dapat menetapkan label dengan melihat gambar selama 1-2 detik, model tersebut kemungkinan tidak dapat dilatih untuk melakukan hal yang sama.
  • Kami merekomendasikan sekitar 1.000 gambar pelatihan per label. Jumlah minimum per label adalah 10. Umumnya, diperlukan lebih banyak contoh per label untuk melatih model dengan beberapa label per gambar, dan skor yang dihasilkan lebih sulit untuk ditafsirkan.
  • Model akan berfungsi optimal jika ada gambar yang 100x lebih banyak untuk label yang paling umum, daripada label yang paling tidak umum. Sebaiknya Anda menghapus label berfrekuensi sangat rendah.
  • Pertimbangkan untuk menyertakan label None_of_the_above dan gambar yang tidak cocok dengan label yang Anda tentukan. Misalnya, untuk set data bunga, sertakan gambar bunga di luar varietas berlabel, dan beri label None_of_the_above.

File skema YAML

Gunakan file skema yang dapat diakses secara publik berikut ini untuk mengimpor anotasi klasifikasi gambar multi-label. File skema ini menentukan format file input data. Struktur file ini mengikuti skema OpenAPI.

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

File skema lengkap

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

File input

JSON Lines

JSON di setiap baris:


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

Catatan kolom:

  • imageGcsUri - Satu-satunya kolom yang wajib diisi.
  • annotationResourceLabels - Dapat berisi berapa pun pasangan string nilai kunci. Satu-satunya pasangan nilai kunci yang dicadangkan oleh sistem adalah sebagai berikut:
    • "aiplatform.googleapis.com/annotation_set_name" : "value"

    Dengan value adalah salah satu nama tampilan dari kumpulan anotasi yang ada dalam set data.

  • dataItemResourceLabels - Dapat berisi berapa pun pasangan string nilai kunci. Satu-satunya pasangan nilai kunci yang dicadangkan oleh sistem adalah berikut ini, yang menentukan kumpulan penggunaan machine learning dari item data:
    • "aiplatform.googleapis.com/ml_use" : "training/test/validation"

Contoh 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]
Daftar kolom
  • ML_USE (Opsional) - Untuk tujuan pemisahan data saat melatih model. Gunakan TRAINING, TEST, atau VALIDATION. Untuk mengetahui informasi selengkapnya tentang pembagian data secara manual, lihat Tentang pemisahan data untuk model AutoML.
  • GCS_FILE_PATH - Kolom ini berisi URI Cloud Storage untuk image. URI Cloud Storage peka huruf besar/kecil.
  • LABEL (Opsional) - Label harus diawali dengan huruf dan hanya berisi huruf, angka, serta garis bawah.

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