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 dan storage.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 objek
    • bigquery.models.getData pada model
    • bigquery.jobs.create

Biaya

Dalam dokumen ini, Anda akan 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. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and BigQuery Connection API APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and BigQuery Connection API APIs.

    Enable the APIs

Membuat set data

Buat set data bernama mobilenet_inference_test:

SQL

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Editor, jalankan pernyataan SQL berikut:

    CREATE SCHEMA `PROJECT_ID.mobilenet_inference_test`;

    Ganti PROJECT_ID dengan project ID Anda.

bq

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Activate Cloud Shell

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

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Klik Tambahkan, lalu klik Sumber data eksternal.

  3. Dalam daftar Connection type, pilih BigLake and remote functions (Cloud Resource).

  4. Di kolom Connection ID, ketik lake-connection.

  5. Klik Buat koneksi.

  6. Di panel Penjelajah, luaskan project Anda, luaskan node Koneksi eksternal, lalu pilih koneksi us.lake-connection.

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

  1. Di Cloud Shell, jalankan perintah bq mk untuk membuat koneksi:

    bq mk --connection --location=us --connection_type=CLOUD_RESOURCE \
    lake-connection
    
  2. Jalankan perintah bq show untuk mengambil informasi tentang koneksi:

    bq show --connection us.lake-connection
    
  3. Dari kolom properties, salin nilai properti serviceAccountId dan simpan di suatu tempat. Anda memerlukan informasi ini untuk memberikan izin ke akun layanan koneksi.

Membuat bucket Cloud Storage

  1. Buat bucket Cloud Storage.
  2. Buat dua folder di bucket, satu bernama mobilenet untuk file model dan satu lagi bernama flowers untuk set data.

Memberikan izin ke akun layanan koneksi

Konsol

  1. Buka halaman IAM & Admin.

    Buka IAM & Admin

  2. Klik Grant Access.

    Dialog Add principals akan terbuka.

  3. Di kolom New principals, masukkan ID akun layanan yang Anda salin sebelumnya.

  4. Di kolom Select a role, pilih Cloud Storage, lalu pilih Storage Object Viewer.

  5. Klik Simpan.

gcloud

Jalankan perintah gcloud storage buckets add-iam-policy-bindingdi 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:

  1. Download set data bunga ke komputer lokal Anda.
  2. Mengekstrak file flower_photos.tgz.
  3. Upload folder flower_photos ke folder flowers di bucket yang Anda buat sebelumnya.
  4. Setelah upload selesai, hapus file LICENSE.txt di folder flower_photos.

Membuat tabel objek

Buat tabel objek bernama sample_images berdasarkan set data bunga yang Anda upload:

SQL

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. 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:

  1. Download model MobileNet V3 ke komputer lokal Anda. Tindakan ini akan memberi Anda file saved_model.pb dan folder variables untuk model.
  2. Upload file saved_model.pb dan folder variables ke folder mobilenet di bucket yang Anda buat sebelumnya.

Memuat model ke BigQuery ML

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. 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:

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan project Anda, luaskan set data mobilenet_inference_test, lalu luaskan node Models.

  3. Klik model mobilenet.

  4. Di panel model yang terbuka, klik tab Schema.

  5. Lihat bagian Label. Elemen ini mengidentifikasi kolom yang merupakan output menurut model. Dalam hal ini, nilai nama kolom adalah feature_vector.

  6. Lihat bagian Features. Bagian ini mengidentifikasi kolom yang harus dimasukkan ke dalam model. Anda mereferensikannya dalam pernyataan SELECT untuk fungsi ML.DECODE_IMAGE. Dalam hal ini, nilai nama kolom adalah inputs.

Menjalankan inferensi

Jalankan inferensi pada tabel objek sample_images menggunakan model mobilenet:

  1. Buka halaman BigQuery.

    Buka BigQuery

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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.