Aplikasi Analisis Jumlah Tamu Vertex AI Vision dengan Pengelolaan Peristiwa

1. Tujuan

Ringkasan

Codelab ini akan berfokus pada pembuatan aplikasi Vertex AI Vision secara menyeluruh untuk mengirim peristiwa dengan fitur pengelolaan peristiwa. Kita akan menggunakan Analisis jumlah tamu model Khusus yang telah dilatih sebelumnya fitur bawaan untuk menghasilkan peristiwa berdasarkan pengambilan hal-hal berikut:

  • Hitung jumlah kendaraan dan orang yang menyeberang jalan pada garis tertentu.
  • Hitung jumlah kendaraan/orang di wilayah tetap di jalan.
  • Mendeteksi kemacetan di bagian mana pun dari jalan.

Yang akan Anda pelajari

  • Cara menyerap video untuk streaming
  • Cara membuat aplikasi di Vertex AI Vision
  • Berbagai fitur yang tersedia di Occupancy Analytics dan cara menggunakannya
  • Cara men-deploy aplikasi
  • Cara menelusuri video di Media Warehouse Vertex AI Vision dengan penyimpanan Anda.
  • Cara membuat Cloud Function yang memproses data model Occupancy Analytics.
  • Cara membuat Topik Pub/Sub & langganan Anda.
  • Cara menyiapkan pengelolaan peristiwa untuk mengirim peristiwa melalui Topik Pub/Sub.

2. Sebelum Memulai

  1. Di Konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud. Catatan: Jika Anda tidak berencana untuk menyimpan resource yang dibuat dalam prosedur ini, buat project alih-alih memilih project yang sudah ada. Setelah menyelesaikan langkah-langkah ini, Anda dapat menghapus project, sehingga semua resource yang terkait dengan project tersebut akan dihapus. Buka pemilih project
  2. Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
  3. Mengaktifkan Compute Engine API dan Vision AI API. Aktifkan API

Membuat akun layanan:

  1. Di konsol Google Cloud, buka halaman Buat akun layanan. Buka Buat akun layanan
  2. Pilih project Anda.
  3. Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud mengisi kolom Service account ID berdasarkan nama ini. Di kolom Deskripsi akun layanan, masukkan deskripsi. Misalnya, Akun layanan untuk panduan memulai.
  4. Klik Buat dan lanjutkan.
  5. Untuk memberikan akses ke project Anda, berikan peran berikut ke akun layanan Anda: Vision AI > Vision AI Editor, Compute Engine > Admin Instance Compute (beta), Penyimpanan > Penampil Objek Penyimpanan † . Di daftar Pilih peran, pilih peran. Untuk peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan. Catatan: Kolom Role memengaruhi resource mana yang dapat diakses akun layanan Anda di project Anda. Anda dapat mencabut peran ini atau memberikan peran tambahan di lain waktu. Dalam lingkungan produksi, jangan memberikan peran Pemilik, Editor, atau Viewer. Sebagai gantinya, berikan peran standar atau peran khusus yang memenuhi kebutuhan Anda.
  6. Klik Lanjutkan.
  7. Klik Selesai untuk menyelesaikan pembuatan akun layanan. Jangan tutup jendela browser Anda. Anda akan menggunakannya pada langkah berikutnya.

Membuat kunci akun layanan:

  1. Di Konsol Google Cloud, klik alamat email untuk akun layanan yang telah Anda buat.
  2. Klik Kunci.
  3. Klik Tambahkan kunci, lalu klik Buat kunci baru.
  4. Klik Create. File kunci JSON akan didownload ke komputer Anda.
  5. Klik Tutup.
  6. Instal dan lakukan inisialisasi Google Cloud CLI.

† Peran hanya diperlukan jika Anda menyalin file video sampel dari bucket Cloud Storage.

3. Menyerap file video untuk streaming

Anda dapat menggunakan Vaictl untuk melakukan streaming data video ke aplikasi analisis tingkat keterisian Anda.

Mulai dengan mengaktifkan Vision AI API di Cloud Console

Mendaftarkan streaming baru

  1. Klik tab Stream di panel kiri Vertex AI Vision.
  2. Klik Daftar
  3. Pada nama Feed, masukkan 'traffic-stream'
  4. Di region, masukkan 'us-central1'
  5. Klik daftar

Streaming akan memerlukan waktu beberapa menit untuk didaftarkan.

Menyiapkan video sampel

  1. Anda dapat menyalin video contoh dengan perintah gsutil cp berikut. Ganti variabel berikut:
  • SUMBER: Lokasi file video yang akan digunakan. Anda dapat menggunakan sumber file video sendiri (misalnya, gs://BUCKET_NAME/FILENAME.mp4), atau menggunakan video sampel (gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4 )(video dengan orang dan kendaraan, sumber)
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4
gsutil cp $SOURCE .

Menyerap data ke dalam aliran data Anda

  1. Untuk mengirim file video lokal ini ke aliran data input aplikasi, gunakan perintah berikut. Anda harus melakukan penggantian variabel berikut:
  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION_ID: ID lokasi Anda. Misalnya, us-central1. Untuk mengetahui informasi selengkapnya, lihat Lokasi Cloud.
  • LOCAL_FILE: Nama file dari file video lokal. Misalnya, street_vehicles_people.mp4.
  • –loop flag: Opsional. Mengulang data file untuk menyimulasikan streaming.
export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1
export LOCAL_FILE=street_vehicles_people.mp4
  1. Perintah ini melakukan streaming file video ke streaming. Jika Anda menggunakan flag –loop, video akan diulang ke streaming sampai Anda menghentikan perintah. Kita akan menjalankan perintah ini sebagai tugas latar belakang agar tugas dapat terus streaming.
  • ( tambahkan nohup di awal dan ‘&' di akhir untuk menjadikannya sebagai tugas latar belakang)
nohup vaictl -p $PROJECT_ID \
    -l $LOCATION_ID \
    -c application-cluster-0 \
    --service-endpoint visionai.googleapis.com \
send video-file to streams 'traffic-stream' --file-path $LOCAL_FILE --loop &

Mungkin diperlukan waktu ~100 detik antara memulai operasi penyerapan konversi dan video yang muncul di dasbor.

Setelah proses transfer streaming tersedia, Anda dapat melihat feed video di tab Streaming pada dasbor Vertex AI Vision dengan memilih streaming traffic-stream.

Buka tab Streaming

Tampilan video live yang sedang di-streaming di UITampilan live video yang ditransfer ke streaming di konsol Google Cloud. Kredit video: Elizabeth Mavor di Pixabay (pikselasi ditambahkan).

4. Membuat Cloud Function

Kita memerlukan Cloud Function untuk mencerna data model & menghasilkan peristiwa yang nantinya akan dikirim melalui saluran peristiwa.

Anda dapat mempelajari Cloud Function lebih lanjut di sini

Membuat Cloud Function yang memproses model Anda

  1. Buka halaman pembuatan UI Cloud Function.
  2. Tetapkan nama fungsi, yang nantinya akan digunakan untuk dirujuk ke Cloud Function ini di setelan Pengelolaan Peristiwa.
  3. Pastikan region cocok dengan aplikasi Anda.
  4. Sesuaikan lalu simpan setelan pemicu.
  5. Klik tombol berikutnya untuk menemukan "kode" bagian. Gagal memuat contoh pembuatan Cloud Function
  6. Edit fungsi cloud Anda. Berikut adalah contoh runtime Node.js.
/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.hello_http = (req, res) => {
 // Logging statement can be read with cmd `gcloud functions logs read {$functionName}`.
 // For more about logging, please see https://cloud.google.com/functions/docs/monitoring

 // The processor output will be stored in req.body.
 const messageString = constructMessage(req.body);

 // Send your message to operator output with res HTTP response context.
 res.status(200).send(messageString);
};

function constructMessage(data) {
 /**
  * Typically, your processor output should contains appPlatformMetadata & it's designed output.
  * For example here, if your output is of tyoe OccupancyCountingPredictionResult, you will need
  * to construct the return annotation as such. 
  */

 // access appPlatformMetat.
 const appPlatformMetadata = data.appPlatformMetadata;

 // access annotations.
 const annotations = data.annotations.map(annotation => {
  // This is a mock OccupancyCountingPredictionResult annotation.
  return {"annotation" : {"track_info": {"track_id": "12345"}}};
 });

 const events = [];
 for(const annotation of annotations) {
   events.push({
       "event_message": "Detection event",
       "payload" : {
         "description" : "object detected"
       },
       "event_id" : "track_id_12345"
     });
 }

  /**
   * Typically, your cloud function should return a string represent a JSON which has two fields:
   * "annotations" must follow the specification of the target model.
   * "events" should be of type "AppPlatformEventBody".
   */
 const messageJson = {
   "annotations": annotations,
   "events": events,
 };
 return JSON.stringify(messageJson);
}
  1. Klik "Deploy" untuk men-deploy fungsi.

5. Membuat Topik Pub/Sub & langganan

Kita harus menyediakan topik Pub/Sub ke aplikasi yang menjadi tujuan pengiriman peristiwa. Untuk menerima peristiwa, langganan Pub/Sub harus berlangganan optik yang dikonfigurasi.

Anda dapat mempelajari lebih lanjut topik Pub/Sub di sini dan langganan di sini.

Membuat Topik Pub/Sub

Untuk membuat topik Pub/Sub, Anda dapat menggunakan gcloud CLI: (Anda harus mengganti SUBSCRIPTION_ID dengan nilai riil dari penyiapan Anda)

gcloud pubsub topics create TOPIC_ID

Atau, Anda dapat menggunakan UI Pub/Sub

Membuat Langganan Pub/Sub

Untuk membuat langganan Pub/Sub, Anda dapat menggunakan gcloud CLI: (Anda harus mengganti SUBSCRIPTION_ID &TOPIC_ID dengan nilai riil dari penyiapan Anda)

gcloud pubsub subscriptions create SUBSCRIPTION_ID \
    --topic=TOPIC_ID \

Atau, Anda dapat menggunakan UI Pub/Sub

6. Membuat aplikasi

Langkah pertama adalah membuat aplikasi yang memproses data Anda. Aplikasi dapat dianggap sebagai pipeline otomatis yang menghubungkan hal-hal berikut:

  • Penyerapan data: Feed video ditransfer ke dalam streaming.
  • Analisis data: Model AI(Computer Vision) dapat ditambahkan setelah penyerapan.
  • Penyimpanan data: Kedua versi feed video (streaming asli dan streaming yang diproses oleh model AI) dapat disimpan di media warehouse.

Di konsol Google Cloud, aplikasi direpresentasikan sebagai grafik.

Membuat aplikasi kosong

Sebelum dapat mengisi grafik aplikasi, Anda harus membuat aplikasi kosong terlebih dahulu.

Membuat aplikasi di Konsol Google Cloud.

  1. Buka Konsol Google Cloud.
  2. Buka tab Applications pada dasbor Vertex AI Vision.

Buka tab Aplikasi

  1. Klik tombol tambahkan Buat.
  2. Masukkan traffic-app sebagai nama aplikasi dan pilih region Anda.
  3. Klik Buat.

Menambahkan node komponen aplikasi

Setelah membuat aplikasi kosong, Anda selanjutnya dapat menambahkan tiga node ke grafik aplikasi:

  1. Node proses transfer: Resource streaming yang menyerap data.
  2. Node pemrosesan: Model analisis jumlah tamu yang menindaklanjuti data yang diserap.
  3. Node penyimpanan: Media warehouse yang menyimpan video yang diproses, dan berfungsi sebagai penyimpanan metadata. Penyimpanan metadata mencakup informasi analisis tentang data video yang ditransfer, dan informasi yang disimpulkan oleh model AI.

Tambahkan node komponen ke aplikasi Anda di konsol.

  1. Buka tab Applications pada dasbor Vertex AI Vision. Buka tab Aplikasi
  2. Di baris aplikasi traffic, pilih Lihat grafik. Anda akan diarahkan ke visualisasi grafik pipeline pemrosesan.

Menambahkan node penyerapan data

  1. Untuk menambahkan node aliran data input, pilih opsi Stream di bagian Konektor pada menu samping.
  2. Di bagian Sumber pada menu Aliran yang terbuka, pilih Tambahkan aliran data.
  3. Di menu Tambahkan aliran data, pilih Daftarkan aliran data baru, lalu tambahkan aliran traffic sebagai nama aliran data.
  4. Untuk menambahkan aliran data ke grafik aplikasi, klik Tambahkan aliran data.

Menambahkan node pemrosesan data

  1. Untuk menambahkan node model jumlah tamu, pilih opsi analisis tingkat keterisian di bagian Model khusus pada menu samping.
  2. Biarkan pilihan default Orang dan Kendaraan.
  3. Menambahkan Garis pada Persilangan garis. Gunakan alat multi-garis titik untuk menggambar garis di tempat Anda perlu mendeteksi mobil atau orang yang keluar atau masuk.
  4. Gambar zona aktif untuk menghitung orang/kendaraan di zona tersebut.
  5. Tambahkan setelan untuk lama singgah guna mendeteksi kemacetan jika zona aktif digambar.
  • (zona aktif dan perlintasan garis keduanya tidak didukung secara bersamaan. Gunakan hanya satu fitur dalam satu waktu.)

3acdb6f1e8474e07.pngS ce63449d601995e9.png

194c54d2bbcf7e8a.pngS

Menambahkan node penyimpanan data

  1. Untuk menambahkan node tujuan output (penyimpanan), pilih opsi Media Warehouse dari Vertex AI Vision di bagian Connectors pada menu samping.
  2. Di menu Media Warehouse dari Vertex AI Vision, klik Connect warehouse.
  3. Di menu Connect warehouse, pilih Create new warehouse. Beri nama gudang traffic gudang, dan biarkan durasi TTL pada 14 hari.
  4. Klik tombol Buat untuk menambahkan warehouse.

7. Mengonfigurasi Pengelolaan Peristiwa

Durasi 02:00

Kita akan menghubungkan model ke Cloud Function yang dibuat sebelumnya untuk pascapemrosesan, sehingga Cloud Function dapat dengan bebas mencerna output model dan menghasilkan peristiwa sesuai kebutuhan Anda. Kemudian, kita akan mengonfigurasi saluran peristiwa dengan mengonfigurasi Topik Pub/Sub yang telah dibuat sebelumnya sebagai target. Anda juga dapat menetapkan interval minimal, agar channel acara Anda tidak dibanjiri acara yang sama dalam waktu singkat.

Pilih Cloud Function untuk pascapemrosesan

  1. Klik node pemrosesan data(analisis tingkat keterisian) di grafik aplikasi Anda untuk membuka menu samping.
  2. Pilih Cloud Function Anda (diidentifikasi berdasarkan nama fungsinya) di drop-down Pasca-pemrosesan.
  3. Grafik aplikasi akan menyimpan perubahan Anda secara otomatis.

Gagal memuat contoh konfigurasi pascapemrosesan

Mengonfigurasi Saluran Peristiwa

  1. Klik node pemrosesan data(analisis tingkat keterisian) di grafik aplikasi Anda untuk membuka menu samping.
  2. Klik "SIAPKAN NOTIFIKASI ACARA" di bagian Notifikasi Peristiwa. Gagal memuat contoh Notifikasi Peristiwa
  3. Pilih Topik Pub/Sub di menu drop-down.
  4. (opsional) tetapkan interval/frekuensi minimal untuk publikasi peristiwa.

Gagal memuat contoh dialog Notifikasi Peristiwa

8. Men-deploy aplikasi untuk digunakan

Setelah Anda membangun aplikasi end-to-end dengan semua komponen yang diperlukan, langkah terakhir untuk menggunakan aplikasi adalah men-deploy-nya.

  1. Buka tab Applications pada dasbor Vertex AI Vision. Buka tab Aplikasi
  2. Pilih Lihat grafik di samping aplikasi traffic aplikasi dalam daftar.
  3. Dari halaman pembuat grafik aplikasi, klik tombol Deploy.
  4. Dalam dialog konfirmasi berikut, pilih Deploy. Operasi deployment mungkin memerlukan waktu beberapa menit untuk diselesaikan. Setelah deployment selesai, tanda centang hijau akan muncul di samping node. ee78bbf00e5db898.png

9. Memverifikasi Peristiwa/Pesan di langganan Pub/Sub

Setelah Anda menyerap data video ke dalam aplikasi pemrosesan, Cloud Function akan membuat peristiwa setelah model analisis tingkat keterisian menghasilkan anotasi. Maka peristiwa tersebut harus dipublikasikan sebagai pesan melalui topik Pub/Sub Anda & yang diterima oleh langganan Anda.

Langkah-langkah berikut mengasumsikan bahwa Anda memiliki langganan pull.

  1. Buka daftar Langganan Pub/Sub di project Anda & menemukan langganan yang sesuai. Buka halaman daftar langganan Pub/Sub
  2. Buka "Pesan" tab.
  3. Klik "tarik" tombol.
  4. Lihat pesan Anda dalam tabel. terjadi error saat memuat gambar pesan langganan pub/sub

Atau, Anda dapat mempelajari cara menerima pesan tanpa UI. Buka halaman langganan

10. Selamat

Selamat, kamu telah menyelesaikan lab!

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource, atau simpan project dan hapus resource satu per satu.

Menghapus project

Menghapus resource satu per satu

Referensi

https://cloud.google.com/vision-ai/docs/overview

https://cloud.google.com/vision-ai/docs/occupancy-count-tutorial

Masukan

Klik di sini untuk Memberikan Masukan

Survei

Bagaimana Anda akan menggunakan tutorial ini?

Hanya membacanya Membacanya dan menyelesaikan latihan

Seberapa berguna codelab ini?

Sangat berguna Berguna sedang