Tutorial: Menjalankan inferensi pada tabel objek dengan menggunakan model vektor fitur
Tutorial ini menunjukkan cara membuat tabel objek berdasarkan gambar dari set data bunga, lalu menjalankan inferensi pada tabel objek tersebut menggunakan Model MobileNet V3.
Model MobileNet V3
Model MobileNet V3 akan menganalisis file gambar dan menampilkan array vektor fitur. Array vektor fitur adalah daftar elemen numerik yang menjelaskan karakteristik gambar yang dianalisis. Setiap vektor fitur menjelaskan ruang fitur multi-dimensi, dan menyediakan koordinat gambar di ruang ini. Anda dapat menggunakan informasi vektor fitur untuk sebuah gambar guna mengklasifikasikan gambar tersebut lebih lanjut, misalnya dengan menggunakan kesamaan kosinus untuk mengelompokkan gambar serupa.
Input model MobileNet V3 menggunakan tensor
DType
tf.float32
dalam bentuk [-1, 224, 224, 3]
. Outputnya adalah array
tensor tf.float32
dalam bentuk [-1, 1024]
.
Izin yang diperlukan
- Untuk membuat set data, Anda memerlukan izin
bigquery.datasets.create
. Untuk membuat resource koneksi, Anda memerlukan izin berikut:
bigquery.connections.create
bigquery.connections.get
Untuk memberikan izin ke akun layanan koneksi, Anda memerlukan izin berikut:
resourcemanager.projects.setIamPolicy
Untuk membuat tabel objek, Anda memerlukan izin berikut:
bigquery.tables.create
bigquery.tables.update
bigquery.connections.delegate
Untuk membuat bucket, Anda memerlukan izin
storage.buckets.create
.Untuk mengupload set data dan model ke Cloud Storage, Anda memerlukan izin
storage.objects.create
danstorage.objects.get
.Untuk memuat model ke BigQuery ML, Anda memerlukan izin berikut:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
Untuk menjalankan inferensi, Anda memerlukan izin berikut:
bigquery.tables.getData
pada tabel objekbigquery.models.getData
pada modelbigquery.jobs.create
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- BigQuery: You incur storage costs for the object table you create in BigQuery.
- BigQuery ML: You incur costs for the model you create and the inference you perform in BigQuery ML.
- Cloud Storage: You incur costs for the objects you store in Cloud Storage.
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Untuk informasi selengkapnya tentang harga penyimpanan BigQuery, lihat Harga penyimpanan dalam dokumentasi BigQuery.
Untuk informasi selengkapnya tentang harga BigQuery ML, baca Harga BigQuery ML dalam dokumentasi BigQuery.
Untuk informasi selengkapnya tentang harga Cloud Storage, lihat halaman harga Cloud Storage.
Sebelum memulai
- 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API BigQuery and BigQuery Connection API.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API BigQuery and BigQuery Connection API.
Membuat set data
Buat set data bernama mobilenet_inference_test
:
SQL
Buka halaman BigQuery.
Di panel Editor, jalankan pernyataan SQL berikut:
CREATE SCHEMA `PROJECT_ID.mobilenet_inference_test`;
Ganti
PROJECT_ID
dengan project ID Anda.
bq
Di konsol Google Cloud, aktifkan Cloud Shell.
Jalankan perintah
bq mk
untuk membuat set data:bq mk --dataset --location=us PROJECT_ID:resnet_inference_test
Ganti
PROJECT_ID
dengan project ID Anda.
Buat koneksi
Buat koneksi bernama lake-connection
:
Konsol
Buka halaman BigQuery.
Klik
Tambahkan, lalu klik Sumber data eksternal.Dalam daftar Connection type, pilih BigLake and remote functions (Cloud Resource).
Di kolom Connection ID, ketik
lake-connection
.Klik Buat koneksi.
Di panel Penjelajah, luaskan project Anda, luaskan node Koneksi eksternal, lalu pilih koneksi
us.lake-connection
.Di panel Info koneksi, salin nilai dari kolom ID akun layanan. Anda memerlukan informasi ini untuk memberikan izin ke akun layanan koneksi di bucket Cloud Storage yang Anda buat pada langkah berikutnya.
bq
Di Cloud Shell, jalankan perintah
bq mk
untuk membuat koneksi:bq mk --connection --location=us --connection_type=CLOUD_RESOURCE \ lake-connection
Jalankan perintah
bq show
untuk mengambil informasi tentang koneksi:bq show --connection us.lake-connection
Dari kolom
properties
, salin nilai propertiserviceAccountId
dan simpan di suatu tempat. Anda memerlukan informasi ini untuk memberikan izin ke akun layanan koneksi.
Membuat bucket Cloud Storage
- Buat bucket Cloud Storage.
- Buat dua folder
di bucket, satu bernama
mobilenet
untuk file model dan satu lagi bernamaflowers
untuk set data.
Memberikan izin ke akun layanan koneksi
Konsol
Buka halaman IAM & Admin.
Klik Grant Access.
Dialog Add principals akan terbuka.
Di kolom New principals, masukkan ID akun layanan yang Anda salin sebelumnya.
Di kolom Select a role, pilih Cloud Storage, lalu pilih Storage Object Viewer.
Klik Simpan.
gcloud
Jalankan
perintah gcloud storage buckets add-iam-policy-binding
di Cloud Shell:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:MEMBER \ --role=roles/storage.objectViewer
Ganti MEMBER
dengan ID akun layanan yang Anda
salin sebelumnya. Ganti BUCKET_NAME
dengan nama
bucket yang Anda buat sebelumnya.
Untuk informasi selengkapnya, lihat Menambahkan akun utama ke kebijakan tingkat bucket.
Mengupload set data ke Cloud Storage
Dapatkan file set data dan sediakan di Cloud Storage:
- Download set data bunga ke komputer lokal Anda.
- Mengekstrak file
flower_photos.tgz
. - Upload folder
flower_photos
ke folderflowers
di bucket yang Anda buat sebelumnya. - Setelah upload selesai, hapus file
LICENSE.txt
di folderflower_photos
.
Membuat tabel objek
Buat tabel objek bernama sample_images
berdasarkan set data bunga yang Anda
upload:
SQL
Buka halaman BigQuery.
Di panel Editor, jalankan pernyataan SQL berikut:
CREATE EXTERNAL TABLE mobilenet_inference_test.sample_images WITH CONNECTION `us.lake-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://BUCKET_NAME/flowers/*']);
Ganti
BUCKET_NAME
dengan nama bucket yang Anda buat sebelumnya.
bq
Di Cloud Shell, jalankan
perintah bq mk
untuk membuat koneksi:
bq mk --table \ --external_table_definition='gs://BUCKET_NAME/flowers/*@us.lake-connection' \ --object_metadata=SIMPLE \ mobilenet_inference_test.sample_images
Ganti BUCKET_NAME
dengan nama bucket yang Anda
buat sebelumnya.
Mengupload model ke Cloud Storage
Dapatkan file model dan sediakan di Cloud Storage:
- Download model MobileNet V3 ke komputer lokal Anda. Tindakan ini akan memberi Anda
file
saved_model.pb
dan foldervariables
untuk model. - Upload file
saved_model.pb
dan foldervariables
ke foldermobilenet
di bucket yang Anda buat sebelumnya.
Memuat model ke BigQuery ML
Buka halaman BigQuery.
Di panel Editor, jalankan pernyataan SQL berikut:
CREATE MODEL `mobilenet_inference_test.mobilenet` OPTIONS( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/mobilenet/*');
Ganti
BUCKET_NAME
dengan nama bucket yang telah Anda buat sebelumnya.
Memeriksa model
Periksa model yang diupload untuk melihat kolom input dan output-nya:
Buka halaman BigQuery.
Di panel Explorer, luaskan project Anda, luaskan set data
mobilenet_inference_test
, lalu luaskan node Models.Klik model
mobilenet
.Di panel model yang terbuka, klik tab Schema.
Lihat bagian Label. Elemen ini mengidentifikasi kolom yang merupakan output menurut model. Dalam hal ini, nilai nama kolom adalah
feature_vector
.Lihat bagian Features. Bagian ini mengidentifikasi kolom yang harus dimasukkan ke dalam model. Anda mereferensikannya dalam pernyataan
SELECT
untuk fungsiML.DECODE_IMAGE
. Dalam hal ini, nilai nama kolom adalahinputs
.
Menjalankan inferensi
Jalankan inferensi pada tabel objek sample_images
menggunakan model mobilenet
:
Buka halaman BigQuery.
Di panel Editor, jalankan pernyataan SQL berikut:
SELECT * FROM ML.PREDICT( MODEL `mobilenet_inference_test.mobilenet`, (SELECT uri, ML.RESIZE_IMAGE(ML.DECODE_IMAGE(data), 224, 224, FALSE) AS inputs FROM mobilenet_inference_test.sample_images) );
Hasilnya akan terlihat seperti berikut:
-------------------------------------------------------------------------------------------------------------- | feature_vector | uri | inputs | —------------------------------------------------------------------------------------------------------------- | 0.850297749042511 | gs://mybucket/flowers/dandelion/3844111216_742ea491a0.jpg | 0.29019609093666077 | —------------------------------------------------------------------------------------------------------------- | -0.27427938580513 | | 0.31372550129890442 | —------------------------- ------------------------ | -0.23189745843410492 | | 0.039215687662363052 | —------------------------- ------------------------ | -0.058292809873819351 | | 0.29985997080802917 | —-------------------------------------------------------------------------------------------------------------
Pembersihan
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.