Buat set produk dan cari produk
Panduan memulai ini menunjukkan cara membuat dan menggunakan tiga jenis resource Product Search Vision API: kumpulan produk yang berisi grup produk, dan gambar referensi yang terkait dengan produk tersebut.
Dalam panduan memulai ini, Anda akan membuat set produk, produk, dan gambar referensinya dalam satu langkah melalui impor batch.
Setelah kumpulan produk diindeks, Anda dapat membuat kueri untuk kumpulan produk menggunakan Product Search Vision API.
Panduan memulai ini akan memandu Anda melalui proses:
- Menggunakan CSV dan impor massal untuk membuat set produk, produk, dan gambar referensi.
- Membuat permintaan ke Product Search Vision API dengan gambar yang disimpan dalam bucket Cloud Storage.
Sebelum memulai
Jika Anda belum melakukannya, siapkan project seperti yang dijelaskan di bawah.
Menyiapkan project
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vision API:
gcloud services enable vision.googleapis.com
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/storage.objectViewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vision API:
gcloud services enable vision.googleapis.com
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/storage.objectViewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
Menetapkan variabel lingkungan
Agar lebih mudah untuk menjalankan contoh curl
dalam panduan memulai ini, tetapkan
variabel lingkungan berikut dengan:
- PROJECT_ID adalah ID project Google Cloud Anda.
- LOCATION_ID adalah lokasi Google Cloud yang akan menjalankan tutorial
Anda, misalnya,
us-east1
. ID lokasi yang valid adalah:us-west1
,us-east1
,europe-west1
, danasia-east1
.
Menggunakan set data
Dalam panduan memulai ini, Anda menggunakan set data yang berisi ~100 entri kategori produk
apparel-v2
. Set data yang tersedia secara publik ini terletak pada bucket
Cloud Storage publik di:
Berikut format CSV-nya:
gs://cloud-ai-vision-data/product-search-tutorial/images/filename1.jpg,image0,product_set0,product_id0,apparel-v2,,"style=women,category=shoe", gs://cloud-ai-vision-data/product-search-tutorial/images/filename2.jpg,image1,product_set0,product_id1,apparel-v2,,"style=men,category=shoe", gs://cloud-ai-vision-data/product-search-tutorial/images/filename3.jpg,image2,product_set0,product_id2,apparel-v2,,"style=women,category=dress",
Gunakan impor massal untuk membuat set produk, produk, dan gambar referensi
Gunakan perintah curl
berikut untuk membuat set produk baru dengan produk dan
gambar referensi. Kumpulan ini bernama product_set0
, nilai yang dideklarasikan dalam
CSV impor.
Pertama-tama, buat file permintaan JSON bernama import_request.json
dan simpan di
direktori kerja Anda saat ini:
import_request.json
{ "inputConfig": { "gcsSource": { "csvFileUri": "gs://cloud-samples-data/vision/product_search/product_catalog.csv" } } }
Setelah membuat file permintaan JSON, kirim permintaan:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ -d @import_request.json \ https://vision.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/productSets:import
Respons yang berhasil berisi objek operasi yang berjalan lama:
{ "name": "locations/LOCATION_ID/operations/0a0aec86192599fa" }
Responsnya juga berisi ID operasi relatif (misalnya,
0a0aec86192599fa
) yang dapat digunakan untuk mendapatkan status operasi.
Mendapatkan status operasi impor
Anda dapat menggunakan operation-id yang ditampilkan dari operasi impor untuk memeriksa status operasi impor massal:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://vision.googleapis.com/v1/locations/LOCATION_ID/operations/OPERATION_ID
Respons yang berhasil akan terlihat seperti ini:
{ "name": "locations/LOCATION_ID/operations/0a0aec86192599fb", "metadata": { "@type": "type.googleapis.com/google.cloud.vision.v1.BatchOperationMetadata", "state": "SUCCESSFUL", "submitTime": "2018-11-30T03:11:04.808114024Z", "endTime": "2018-11-30T03:11:38.624444324Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.vision.v1.ImportProductSetsResponse", "referenceImages": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id0/referenceImages/image0", "uri": "gs://cloud-ai-vision-data/product-search-tutorial/images/46a0cbcf70ba11e89399d20059124800.jpg" }, { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id1/referenceImages/image1", "uri": "gs://cloud-ai-vision-data/product-search-tutorial/images/46a1aea370ba11e888d4d20059124800.jpg" }, ... { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id93/referenceImages/image93", "uri": "gs://cloud-ai-vision-data/product-search-tutorial/images/4697319970ba11e8a7bfd20059124800.jpg" }, { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id94/referenceImages/image94", "uri": "gs://cloud-ai-vision-data/product-search-tutorial/images/4698596370ba11e8bf6ad20059124800.jpg" } ], "statuses": [ {}, {}, [...] {}, {} ] } }
Pengindeksan
Indeks Product Search untuk produk diperbarui sekitar 30 menit sekali. Ketika gambar ditambahkan atau dihapus, perubahan tidak akan ditampilkan dalam respons Product Search hingga indeks diperbarui berikutnya.
Untuk memastikan pengindeksan telah berhasil diselesaikan, periksa kolom
indexTime
dari
kumpulan produk.
Mencantumkan set produk dan memeriksa pengindeksan
Anda dapat mencantumkan semua set produk dan menggunakan kolom indexTime
untuk memverifikasi bahwa
pengindeksan telah berhasil diselesaikan:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://vision.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/productSets
Respons yang berhasil akan mencantumkan semua kumpulan produk Anda, termasuk ID kumpulan produk
(misalnya, product_set0
) serta kolom indexTime
yang menunjukkan
saat pengindeksan selesai:
{ "productSets": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/productSets/product_set0", "displayName": " ", "indexTime": "2019-11-30T18:33:40.093508652Z", "indexError": {} } ] }
Membuat daftar produk
Anda dapat menggunakan PRODUCT_SET_ID yang ditampilkan dari daftar set produk untuk mencantumkan semua produk dalam set produk 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://vision.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/productSets/PRODUCT_SET_ID/products?pageSize=15
Respons yang berhasil akan mencantumkan detail produk.
Dalam permintaan ini, Anda menggunakan parameter kueri opsional
pageSize
untuk menetapkan daftar hasil ke 15 produk. nextPageToken
dalam respons juga menunjukkan ada produk lain
yang dapat dicantumkan. Anda dapat menggunakan token yang tercantum untuk mengambil hasil lebih lanjut. Untuk
informasi selengkapnya tentang penggunaan pageToken
, lihat
Mendapatkan dan mencantumkan resource.
{ "products": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id0", "displayName": " ", "productCategory": "apparel", "productLabels": [ { "key": "style", "value": "women" }, { "key": "category", "value": "shoe" } ] }, { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id1", "displayName": " ", "productCategory": "apparel", "productLabels": [ { "key": "style", "value": "men" }, { "key": "category", "value": "shoe" } ] }, ... { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id21", "displayName": " ", "productCategory": "apparel", "productLabels": [ { "key": "style", "value": "women" }, { "key": "category", "value": "dress" } ] } ], "nextPageToken": "1LqhSgZfM_uWKOxvog" }
Telusuri produk yang cocok dengan Product Search Vision API
Setelah pengindeksan selesai, Anda dapat menelusuri produk yang cocok dengan gambar sampel. Dalam panduan memulai ini, Anda menggunakan image yang disimpan dalam bucket Google Cloud Storage seperti gambar berikut.
Menelusuri menggunakan gambar eksternal
Gunakan permintaan berikut untuk menelusuri menggunakan image yang disimpan di bucket Cloud Storage publik.
Pertama-tama, buat file permintaan JSON bernama search_request.json
dan simpan di
direktori kerja Anda saat ini. Ubah nilai berikut dalam permintaan JSON
agar sesuai dengan informasi project Anda:
- PROJECT_ID
- LOCATION_ID
- PRODUCT_SET_ID
search_request.json
{ "requests": [ { "image": { "source": { "gcsImageUri": "gs://cloud-ai-vision-data/product-search-tutorial/images/468f782e70ba11e8941fd20059124800.jpg" } }, "features": [ { "type": "PRODUCT_SEARCH" } ], "imageContext": { "productSearchParams": { "productSet": "projects/PROJECT_ID/locations/LOCATION_ID/productSets/PRODUCT_SET_ID", "productCategories": [ "apparel-v2" ], "filter": "style=womens OR style=women" } } } ] }
Setelah membuat file permintaan JSON, kirim permintaan:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ -d @search_request.json \ https://vision.googleapis.com/v1/images:annotate
Permintaan yang berhasil akan menampilkan daftar produk yang cocok, yang ditunjukkan oleh ID produknya. Hasil ini akan diperinci lebih lanjut berdasarkan masing-masing produk yang diidentifikasi dengan kotak pembatas jika terdapat beberapa produk dalam satu gambar.
Untuk contoh deteksi produk tunggal dan multi-deteksi produk dalam gambar, lihat Memahami respons penelusuran & multi-deteksi.
Kolom score
juga ditampilkan. Kolom ini menunjukkan
keyakinan terhadap layanan yang menganggap produk tersebut cocok dengan gambar yang diberikan,
dalam skala 0 (tanpa keyakinan) hingga 1 (keyakinan penuh).
Kolom indexTime
menunjukkan versi indeks yang sedang ditelusuri. Perubahan gambar
yang dilakukan setelah waktu ini tidak akan ditampilkan dalam hasil.
Selamat! Anda telah membuat permintaan images.annotate
pertama ke
layanan Product Search Vision API.
Pembersihan
-
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
-
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Langkah berikutnya
- Mulai Product Search Vision API dalam bahasa pilihan Anda dengan menggunakan Library Klien Product Search Vision API.
- Pelajari Panduan Cara Kerja.
- Ikuti Tutorial.