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. Kami akan menggunakan fitur bawaan Analisis jumlah tamu model Khusus terlatih untuk membuat peristiwa berdasarkan pengambilan hal-hal berikut:

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

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 penyimpanan Anda.
  • Cara membuat Cloud Function yang memproses data model Analisis Kehadiran.
  • Cara membuat Topik & langganan Pub/Sub.
  • 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 Anda buat dalam prosedur ini, buat project, bukan memilih project yang ada. Setelah menyelesaikan langkah-langkah ini, Anda dapat menghapus project, yang menghapus semua resource yang terkait dengan project ini. 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

Buat 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 akan mengisi kolom ID akun layanan berdasarkan nama ini. Di kolom Deskripsi akun layanan, masukkan deskripsi. Misalnya, Akun layanan untuk 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 > Compute Instance Admin (beta), Storage > Storage Object Viewer † . Di daftar Pilih peran, pilih peran. Untuk peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan. Catatan: Kolom Peran memengaruhi resource mana yang dapat diakses oleh 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 jumlah tamu.

Mulai dengan mengaktifkan Vision AI API di Cloud Console

Mendaftarkan streaming baru

  1. Klik tab aliran data di panel kiri Vertex AI Vision.
  2. Klik Daftar
  3. Di Nama aliran data, masukkan 'traffic-stream'
  4. Di region, masukkan 'us-central1'
  5. Klik daftar

Streaming akan memerlukan waktu beberapa menit untuk didaftarkan.

Menyiapkan contoh video

  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 Anda sendiri (misalnya, gs://BUCKET_NAME/FILENAME.mp4), atau menggunakan video contoh (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 file video lokal. Misalnya, street_vehicles_people.mp4.
  • Flag –loop: Opsional. Mengulangi 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 diputar berulang kali dalam streaming hingga Anda menghentikan perintah. Kita akan menjalankan perintah ini sebagai tugas latar belakang agar terus melakukan streaming.
  • ( tambahkan nohup di awal dan '&' di akhir untuk menjadikannya 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 perlu waktu ~100 detik antara memulai operasi transfer vaictl dan video muncul di dasbor.

Setelah penyerapan streaming tersedia, Anda dapat melihat feed video di tab Streams 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 menyerap data model & membuat peristiwa yang nantinya akan dikirim melalui saluran peristiwa.

Anda dapat mempelajari Cloud Functions 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 membuka bagian "kode". Gagal memuat contoh pembuatan Cloud Function
  6. Edit cloud function Anda. Berikut adalah contoh dengan 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 tombol "Deploy" untuk men-deploy fungsi.

5. Membuat Topik & langganan Pub/Sub

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 topik Pub/Sub lebih lanjut 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 sebenarnya 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 sebenarnya 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 berikut:

  • Penyerapan data: Feed video diserap 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.

Buat aplikasi di konsol Google Cloud.

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

Buka tab Aplikasi

  1. Klik tombol Create untuk menambahkan.
  2. Masukkan traffic-app sebagai nama aplikasi dan pilih wilayah Anda.
  3. Klik Buat.

Menambahkan node komponen aplikasi

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

  1. Node proses transfer: Resource streaming yang menyerap data.
  2. Node pemrosesan: Model analisis jumlah tamu yang bertindak berdasarkan data yang diserap.
  3. Node penyimpanan: Warehouse media yang menyimpan video yang telah 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 di dasbor Vertex AI Vision. Buka tab Applications
  2. Di baris aplikasi traffic, pilih Lihat grafik. Tindakan ini akan mengarahkan Anda ke visualisasi grafik pipeline pemrosesan.

Menambahkan node penyerapan data

  1. Untuk menambahkan node aliran data input, pilih opsi Streams di bagian Connectors 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 dan tambahkan traffic-stream 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 di Persilangan garis. Gunakan alat garis multi titik untuk menggambar garis tempat Anda perlu mendeteksi mobil atau orang yang keluar atau masuk.
  4. Gambarkan zona aktif untuk menghitung orang/kendaraan di zona tersebut.
  5. Menambahkan setelan untuk waktu diam guna mendeteksi kemacetan jika zona aktif digambar.
  • (saat ini zona aktif dan persimpangan garis tidak didukung secara bersamaan. Gunakan hanya satu fitur dalam satu waktu.)

3acdb6f1e8474e07.pngS ce63449d601995e9.png

194c54d2bbcf7e8a.png

Menambahkan node penyimpanan data

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

7. Mengonfigurasi Pengelolaan Peristiwa

Durasi 02:00

Kita akan menghubungkan model ke Cloud Function yang dibuat sebelumnya untuk pascapemrosesan, tempat Cloud Function dapat dengan bebas mencerna output model dan menghasilkan peristiwa yang sesuai dengan kebutuhan Anda. Kemudian, kita akan mengonfigurasi saluran peristiwa dengan mengonfigurasi Topik Pub/Sub yang telah dibuat sebelumnya sebagai target. Anda juga dapat menetapkan interval minimum, yang akan membantu menghindari saluran peristiwa Anda dibanjiri oleh peristiwa 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 otomatis menyimpan perubahan Anda.

Gagal memuat contoh konfigurasi pascapemrosesan

Mengonfigurasi Saluran Peristiwa

  1. Klik node pemrosesan data(analisis jumlah tamu) pada grafik aplikasi Anda untuk membuka menu samping.
  2. Klik "SETEL NOTIFIKASI ACARA" di bagian Notifikasi Acara. Gagal memuat contoh Notifikasi Peristiwa
  3. Pilih Topik Pub/Sub Anda di menu drop-down.
  4. (opsional) tetapkan interval/frekuensi minimum 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 di dasbor Vertex AI Vision. Buka tab Aplikasi
  2. Pilih Lihat grafik di samping aplikasi traffic-app 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 hingga selesai. 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. Kemudian, peristiwa tersebut harus dipublikasikan sebagai pesan melalui topik Pub/Sub Anda &diterima oleh langganan Anda.

Langkah-langkah berikut mengasumsikan bahwa Anda memiliki langganan pull.

  1. Buka daftar Langganan Pub/Sub di project Anda & temukan langganan yang sesuai. Buka halaman daftar langganan Pub/Sub
  2. Buka tab "Pesan".
  3. Klik tombol "tarik".
  4. Lihat pesan Anda di tabel. error loading pub/sub subscription message image

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

10. Selamat

Selamat, Anda 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 Cukup berguna