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 menggunakan komponen Google Cloud yang dapat ditagih berikut:

  • BigQuery: Anda akan dikenai biaya penyimpanan untuk tabel objek yang Anda buat di BigQuery.
  • BigQuery ML: Anda akan dikenai biaya untuk model yang Anda buat dan inferensi yang dilakukan di BigQuery ML.
  • Cloud Storage: Anda akan dikenai biaya untuk objek yang Anda simpan di 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. 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. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

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

  4. Enable the BigQuery and BigQuery Connection API APIs.

    Enable the APIs

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

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

  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.

    Aktifkan 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 Add data, lalu klik External data source.

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

gsutil

Jalankan perintah gsutil iam chdi Cloud Shell:

gsutil iam ch serviceAccount:MEMBER:objectViewer gs://BUCKET_NAME

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. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.