Memberikan label pada gambar menggunakan AutoML Vision API

Panduan memulai ini akan memandu Anda melalui proses:

  • Menyalin gambar listingan CSV dan kotak pembatas dengan label ke Google Cloud Storage.
  • Menggunakan AutoML Vision Object Detection untuk membuat set data, serta melatih dan men-deploy model Anda.

Dalam panduan memulai ini, Anda menggunakan perintah cURL untuk mengirim permintaan ke AutoML Vision API. Anda juga dapat menyelesaikan semua langkah yang tercantum di sini pada antarmuka pengguna dengan merujuk ke Panduan mulai menggunakan antarmuka pengguna. Untuk petunjuk selengkapnya tentang penggunaan UI atau API, lihat panduan cara kerja.

Sebelum memulai

Menyiapkan project

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Menginstal Google Cloud CLI.
  3. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  4. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. Enable the AutoML and Cloud Storage APIs:

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  7. Menginstal Google Cloud CLI.
  8. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  9. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  10. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  11. Enable the AutoML and Cloud Storage APIs:

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  12. Tetapkan variabel lingkungan PROJECT_ID ke Project ID Anda.
    export PROJECT_ID=PROJECT_ID
    Panggilan dan nama resource AutoML API akan menyertakan Project ID Anda di dalamnya. Variabel lingkungan PROJECT_ID menyediakan cara yang mudah untuk menentukan ID.

Mempersiapkan set data

Dalam panduan memulai ini, Anda akan menggunakan set data yang dibuat dari Open Images Dataset V4. Set data Salads yang tersedia secara publik ini berada di gs://cloud-ml-data/img/openimage/csv/salads_ml_use.csv.

Berikut format CSV-nya:

TRAINING,gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg,Salad,0.0,0.0954,,,0.977,0.957,,
VALIDATION,gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg,Seafood,0.0154,0.1538,,,1.0,0.802,,
TEST,gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg,Tomato,0.0,0.655,,,0.231,0.839,,
contoh gambar set data
3916261642_0a504acd60_o.jpg

Setiap baris sesuai dengan objek yang dilokalkan di dalam gambar yang lebih besar, dengan setiap objek yang secara khusus ditetapkan sebagai data pengujian, pelatihan, atau validasi. Tiga garis yang disertakan di sini menunjukkan tiga objek berbeda yang terletak di dalam gambar yang sama yang tersedia di gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg. Setiap baris memiliki label yang berbeda: Salad, Seafood, Tomato, selain baris lain dengan label Baked goods atau Cheese.

Kotak pembatas ditentukan untuk setiap gambar menggunakan verteks kiri atas dan kanan bawah:

  • (0,0) sesuai dengan verteks paling kiri atas.
  • (1,1) sesuai dengan verteks paling kanan bawah.

Untuk baris pertama yang ditampilkan di atas, koordinat (x, y) untuk verteks kiri atas objek berlabel Salad adalah (0.0,0.0954), dan koordinat untuk verteks kanan bawah objek adalah (0,977,0,957).

Untuk informasi lebih detail tentang cara memformat file CSV dan persyaratan minimum untuk membuat set data yang valid, lihat Mempersiapkan data pelatihan Anda.


Membuat set data dan mengimpor data pelatihan

Perintah curl menggunakan perintah gcloud auth print-access-token untuk mendapatkan token akses untuk Akun Google Anda.

Untuk rilis Beta, gunakan us-central1 sebagai wilayah, terlepas dari lokasi Anda yang sebenarnya.

Membuat set data

Gunakan perintah curl berikut untuk membuat set data baru dengan nama tampilan pilihan Anda:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json" \
"https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/datasets" -d '{
    "display_name": "DISPLAY_NAME",
    "image_object_detection_dataset_metadata": {
    }
}'

Respons akan menampilkan ID set data relatif (seperti IOD5491013845671477445) yang akan Anda perlukan dalam langkah-langkah berikut.

{
  "name": "projects/PROJECT_ID/locations/us-central1/datasets/IOD5491013845671477445",
  "displayName": "DISPLAY_NAME",
  "createTime": "2018-10-29T15:45:53.353442Z",
  "imageObjectDetectionDatasetMetadata": {}
}

Mengimpor data

Impor data pelatihan ke set data Anda. Perintah importData digunakan sebagai input URI set data Anda. Di sini, Anda akan memberikan alamat Google Cloud Storage yang tersedia untuk publik tempat set data Salads disimpan. Proses ini dapat memerlukan waktu hingga 30 menit.

  • Ganti DATASET_ID dengan ID set data untuk set data Anda (bukan nama tampilan). Contoh: IOD5491013845671477445.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID:importData \
-d '{
  "input_config": {
    "gcs_source": {
       "input_uris": [
         "gs://cloud-ml-data/img/openimage/csv/salads_ml_use.csv"
        ]
    }
  }
}'

Responsnya menampilkan ID operasi relatif (misalnya, IOD1555149246326374411) yang dapat digunakan untuk mendapatkan status operasi.

{
  "name": "projects/PROJECT_NUMBER/locations/us-central1/operations/IOD1555149246326374411",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-29T15:56:29.176485Z",
    "updateTime": "2018-10-29T15:56:29.176485Z",
    "importDataDetails": {}
  }
}

Mendapatkan status operasi impor

Anda dapat mengkueri status operasi data impor menggunakan perintah curl berikut.

  • Ganti OPERATION_ID dengan ID operasi yang ditampilkan dari operasi impor data.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID

Operasi impor dapat memerlukan waktu beberapa saat untuk diselesaikan. Setelah tugas impor selesai, Anda akan melihat done: true dalam status operasi tanpa error yang tercantum, seperti yang ditunjukkan dalam contoh berikut.

Permintaan ini juga akan menampilkan peringatan apa pun untuk impor set data Anda. Error ditambahkan ke set data ini untuk menampilkan contoh peringatan ini. Menggunakan operasi ini untuk melihat peringatan ini adalah cara yang praktis untuk menemukan error dalam data Anda.

{
  "name": "projects/PROJECT_NUMBER/locations/us-central1/operations/IOD1555149246326374411",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-29T15:56:29.176485Z",
    "updateTime": "2018-10-29T16:10:41.326614Z",
    "importDataDetails": {}
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Mendapatkan daftar set data

Anda bisa mendapatkan daftar set data Anda menggunakan perintah berikut.

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/datasets

Anda akan melihat output yang mirip dengan berikut ini:

{
  "datasets": [
    {
      "name": "projects/PROJECT_NUMBER/locations/us-central1/datasets/DATASET_ID1",
      "displayName": "DISPLAY_NAME1",
      "createTime": "2018-10-29T15:45:53.353442Z",
      "exampleCount": 227,
      "imageObjectDetectionDatasetMetadata": {}
    },
    {
      "name": "projects/PROJECT_NUMBER/locations/us-central1/datasets/DATASET_ID2",
      "displayName": "DISPLAY_NAME2",
      "createTime": "2018-10-24T21:06:05.390059Z",
      "exampleCount": 227,
      "imageObjectDetectionDatasetMetadata": {}
    }
  ]
}

Melatih model Anda

Meluncurkan aplikasi pelatihan model

Setelah membuat set data dan mengimpor data pelatihan ke dalam set data, Anda dapat melatih model kustom.

Latih model Anda menggunakan perintah curl berikut.

  • Ganti DATASET_ID dengan ID set data untuk set data Anda (bukan nama tampilan).
  • Ganti DISPLAY_NAME dengan nama yang Anda pilih untuk model Anda.
  • Tentukan: image_object_detection_model_metadata.model_type. Dua opsi yang tersedia adalah mengoptimalkan latensi atau akurasi:
    • cloud-low-latency-1 - Mengoptimalkan pelatihan untuk latensi.
    • cloud-high-accuracy-1 - Mengoptimalkan pelatihan untuk akurasi.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models -d '{
  "datasetId": "DATASET_ID",
  "displayName": "DISPLAY_NAME",
  "image_object_detection_model_metadata": {},
}'

Anda akan menerima ID operasi untuk operasi model pelatihan (misalnya, IOD5644417707978784777) yang dapat Anda gunakan untuk mendapatkan status operasi pelatihan.

{
  "name": "projects/PROJECT_NUMBER/locations/us-central1/operations/IOD5644417707978784777",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-29T16:41:23.902167Z",
    "updateTime": "2018-10-29T16:41:23.902167Z",
    "createModelDetails": {}
  }
}

Proses pelatihan mungkin memerlukan waktu beberapa jam.

Mendapatkan status operasi pelatihan model

Anda dapat membuat kueri status operasi pelatihan model menggunakan perintah curl berikut.

  • Ganti OPERATION_ID dengan ID operasi untuk operasi pelatihan Anda.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID

Anda akan melihat output yang mirip dengan berikut ini: Setelah operasi selesai, Anda akan melihat done: true tanpa error yang tercantum.


{
  "name": "projects/PROJECT_NUMBER/locations/us-central1/operations/IOD5644417707978784777",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-24T22:08:23.327323Z",
    "updateTime": "2018-10-24T23:41:18.452855Z",
    "createModelDetails": {}
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.Model",
    "name": "projects/PROJECT_NUMBER/locations/us-central1/models/IOD5644417707978784777"
  }
}

Memverifikasi bahwa model tersedia

Setelah operasi pelatihan model berhasil diselesaikan, Anda dapat memverifikasi bahwa model tersedia dengan menggunakan perintah berikut untuk mencantumkan model untuk project Anda.

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models

Anda akan menerima ID model (misalnya, IOD5644417707978784778) yang dapat digunakan untuk mendapatkan metrik evaluasi model saat model selesai dilatih. Anda akan melihat output yang mirip dengan berikut ini:

{
  "model": [
    {
      "name": "projects/PROJECT_NUMBER/locations/us-central1/models/IOD5644417707978784778",
      "displayName": "DISPLAY_NAME",
      "datasetId": "IOD5491013845671477445",
      "createTime": "2018-10-24T23:37:00.858493Z",
      "updateTime": "2018-10-24T23:37:00.858493Z",
      "deploymentState": "DEPLOYED",
      "imageObjectDetectionModelMetadata": {
          "modelType": "cloud-low-latency-1",
          "nodeCount": "1",
          "nodeQps": 1.2987012987012987
      }
    }
  ]
}

Mengevaluasi model

Setelah model selesai dilatih, Anda dapat mencantumkan metrik evaluasi model menggunakan perintah curl berikut.

  • Ganti MODEL_ID dengan ID untuk model Anda.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID/modelEvaluations

AutoML Vision Object Detection menyediakan sekumpulan metrik evaluasi gabungan yang menunjukkan performa model secara keseluruhan, serta metrik evaluasi untuk setiap label, yang menunjukkan seberapa baik performa model terhadap label tersebut di bawah batas yang berbeda.

Deploy model Anda

Agar dapat membuat prediksi, Anda harus men-deploy model secara manual.

Gunakan perintah berikut untuk men-deploy model Anda:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "x-goog-user-project: PROJECT_ID" \
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:deploy \
  -d '{
      "imageObjectDetectionModelDeploymentMetadata": {
        "nodeCount": 2
      }
    }'

Membuat prediksi

Mengirim permintaan prediksi

Anda dapat menggunakan model yang di-deploy untuk membuat prediksi pada image lokal menggunakan file JSON dan perintah curl berikut.

  • Buat file JSON permintaan bernama predict_request.json dan berikan gambar berenkode base64 di kolom "imageBytes".

predict_request.json

{
    "payload": {
        "image": {
            "image_bytes": "/9j/4QAYRXhpZgAA...base64-encoded-image...9tAVx/zDQDlGxn//2Q=="
        }
    }
}

  • Ganti MODEL_ID dengan ID untuk model Anda.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json" \
"https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:predict" -d @PATH_TO_JSON_FILE/predict_request.json

Permintaan yang berhasil akan menampilkan respons dengan satu atau beberapa kotak pembatas yang ditentukan oleh dua normalizedVertices yang berlawanan secara diagonal. Setiap kotak pembatas yang diidentifikasi memiliki keyakinan score dan anotasi (displayName) yang terkait.

{
  "payload": [
    {
      "imageObjectDetection": {
        "boundingBox": {
          "normalizedVertices": [
            {
              "x": 0.034553755,
              "y": 0.015524037
            },
            {
              "x": 0.941527,
              "y": 0.9912563
            }
          ]
        },
        "score": 0.9997793
      },
      "displayName": "Salad"
    },
    {
      "imageObjectDetection": {
        "boundingBox": {
          "normalizedVertices": [
            {
              "x": 0.11737197,
              "y": 0.7098793
            },
            {
              "x": 0.510878,
              "y": 0.87987
            }
          ]
        },
        "score": 0.63219965
      },
      "displayName": "Tomato"
    }
  ]
}

Batalkan deployment model Anda (opsional)

Model Anda akan dikenai biaya saat di-deploy. Untuk menghindari timbulnya biaya hosting model ini, Anda dapat membatalkan deployment model.

Jalankan perintah berikut untuk membatalkan deployment model Anda:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "x-goog-user-project: PROJECT_ID" \
  -H "Content-Type: application/json" \
  "https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:undeploy"

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan pada halaman ini, hapus project Google Cloud yang berisi resource tersebut.

Jika tidak lagi memerlukan model kustom dan set data terkait, Anda dapat menghapusnya.

Membuat daftar model

Anda dapat membuat daftar model untuk project Anda, bersama dengan ID-nya, menggunakan perintah berikut:

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models

Menghapus model

Anda dapat menghapus model menggunakan perintah berikut.

  • Ganti MODEL_ID dengan ID untuk model Anda.
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID

Mencantumkan set data

Anda dapat membuat daftar set data untuk project Anda, beserta ID-nya, menggunakan perintah berikut:

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/datasets

Menghapus set data

Anda dapat menghapus set data menggunakan perintah berikut.

  • Ganti DATASET_ID dengan ID untuk model Anda.
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID

Langkah selanjutnya