Menyiapkan data pelatihan gambar untuk deteksi objek

Halaman ini menjelaskan cara menyiapkan data pelatihan gambar untuk digunakan dalam set data Vertex AI untuk melatih model deteksi objek gambar.

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

Deteksi objek

Persyaratan data

Persyaratan gambar umum
Jenis file yang didukung
  • JPEG
  • PNG
  • GIF
  • BMP
  • ICO
Jenis gambar

Model AutoML dioptimalkan untuk foto objek di dunia nyata.

Ukuran file gambar pelatihan (MB) Ukuran maksimum 30 MB
Ukuran file* gambar prediksi (MB) Ukuran maksimum 1,5 MB
Ukuran gambar (piksel)

Maksimum yang disarankan adalah 1024 piksel x 1024 piksel.

Untuk gambar yang jauh lebih besar dari 1024 piksel x 1024 piksel, beberapa kualitas image mungkin hilang selama proses normalisasi gambar Vertex AI.

Persyaratan label dan kotak pembatas
Persyaratan berikut berlaku untuk set data yang digunakan untuk melatih model AutoML.
Instance label untuk pelatihan

Minimum 10 anotasi (instance).

Persyaratan anotasi

Untuk setiap label, Anda harus memiliki minimal 10 gambar, masing-masing dengan setidaknya satu anotasi (kotak pembatas dan label).

Namun, untuk tujuan pelatihan model, sebaiknya Anda menggunakan sekitar 1.000 anotasi per label. Secara umum, semakin banyak gambar per label yang Anda miliki, semakin baik performa model Anda.

Rasio label (label paling umum ke label yang paling tidak umum):

Model akan berfungsi optimal jika ada gambar 100x lebih banyak untuk label yang paling umum daripada label yang paling tidak umum.

Untuk performa model, sebaiknya Anda menghapus label frekuensi sangat rendah.

Panjang tepi kotak pembatas

Memiliki minimal panjang sisi 0,01 * gambar. Misalnya, gambar berukuran 1000 * 900 piksel akan memerlukan kotak pembatas yang berukuran minimal 10 * 9 piksel.

Ukuran mini kotak batas: 8 piksel x 8 piksel.

Persyaratan berikut berlaku untuk set data yang digunakan untuk melatih model AutoML atau model yang dilatih kustom.
Kotak pembatas per gambar berbeda Maksimum 500.
Kotak pembatas yang ditampilkan dari permintaan prediksi

100 (default), maksimum 500.

Persyaratan set data dan data pelatihan
Persyaratan berikut berlaku untuk set data yang digunakan untuk melatih model AutoML.
Karakteristik gambar pelatihan

Data pelatihan harus semirip mungkin dengan data yang menjadi dasar prediksi.

Misalnya, jika dalam kasus penggunaan Anda terdapat gambar buram dengan resolusi rendah (seperti dari kamera keamanan), data pelatihan Anda harus terdiri dari gambar buram dengan resolusi rendah. Secara umum, Anda juga harus mempertimbangkan untuk menyediakan beberapa sudut, resolusi, dan latar belakang untuk gambar pelatihan Anda.

Model Vertex AI umumnya tidak dapat memprediksi label yang tidak dapat ditetapkan oleh manusia. Jadi, jika manusia tidak dapat menetapkan label dengan melihat gambar selama 1-2 detik, model tersebut kemungkinan tidak dapat dilatih untuk melakukan hal yang sama.

Pra-pemrosesan gambar internal

Setelah gambar diimpor, Vertex AI akan melakukan pra-pemrosesan pada data tersebut. Gambar yang telah diproses sebelumnya adalah data aktual yang digunakan untuk melatih model.

Pra-pemrosesan gambar (perubahan ukuran) terjadi jika tepi terkecil gambar lebih besar dari 1024 piksel. Jika sisi yang lebih kecil gambar lebih besar dari 1024 piksel, sisi yang lebih kecil tersebut diperkecil menjadi 1024 piksel. Sisi yang lebih besar dan kotak pembatas yang ditentukan, keduanya diperkecil dengan jumlah yang sama seperti sisi yang lebih kecil. Akibatnya, semua anotasi yang diperkecil (kotak pembatas dan label) akan dihapus jika ukurannya kurang dari 8 piksel kali 8 piksel.

Gambar dengan sisi yang lebih kecil kurang dari atau sama dengan 1024 piksel tidak akan melalui pengubahan ukuran pra-pemrosesan.

Persyaratan berikut berlaku untuk set data yang digunakan untuk melatih model AutoML atau model yang dilatih kustom.
Gambar di setiap set data Maksimum 150.000
Total kotak pembatas beranotasi di setiap set data Maksimum 1.000.000
Jumlah label di setiap set data minimum 1, maksimum 1.000

File skema YAML

Gunakan file skema yang dapat diakses secara publik berikut untuk mengimpor anotasi deteksi objek gambar (kotak pembatas dan label). File skema ini menentukan format file input data. Struktur file ini mengikuti skema OpenAPI.

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

File skema lengkap

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 input

JSON Lines

JSON di setiap baris:


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

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

Format CSV:

[ML_USE],GCS_FILE_PATH,[LABEL],[BOUNDING_BOX]*
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 Cloud Storage URI untuk image. URI Cloud Storage peka huruf besar/kecil.
  • LABEL. Label harus diawali dengan huruf dan hanya berisi huruf, angka, serta garis bawah.
  • BOUNDING_BOX. Kotak pembatas untuk objek dalam gambar. Penentuan kotak pembatas melibatkan lebih dari satu kolom.
    bounding_box
    A. X_MIN,Y_MIN
    B. X_MAX,Y_MIN
    C. X_MAX,Y_MAX
    D. X_MIN,Y_MAX

    Setiap verteks ditentukan dengan nilai koordinat x, y. Koordinat adalah nilai float yang dinormalisasi [0,1]; 0.0 adalah X_MIN atau Y_MIN, 1.0 adalah X_MAX atau Y_MAX.

    Misalnya, kotak pembatas untuk keseluruhan gambar dinyatakan sebagai (0.0,0.0,,,1.0,1.0,), atau (0.0,0.0,1.0,0.0,1.0,1.0,0.0,1.0).

    Kotak pembatas untuk objek dapat ditentukan melalui salah satu dari dua cara berikut:

    1. Dua verteks (dua kumpulan koordinat x,y) yang secara diagonal berlawanan dengan titik persegi panjang:
      A. X_MIN,Y_MIN
      C. X_MAX,Y_MAX
      seperti yang ditunjukkan dalam contoh ini:
      A,,C,
      X_MIN,Y_MIN,,,X_MAX,Y_MAX,,
    2. Keempat verteks yang ditentukan seperti yang ditunjukkan dalam:
      X_MIN,Y_MIN,X_MAX,Y_MIN, X_MAX,Y_MAX,X_MIN,Y_MAX,
      Jika keempat verteks yang ditentukan tidak membentuk persegi panjang yang sejajar dengan tepi gambar, Vertex AI menentukan verteks yang memang membentuk persegi panjang tersebut.

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