1. Tujuan
Ringkasan
Codelab ini akan berfokus pada pembuatan aplikasi Vertex AI Vision end-to-end untuk mengirim peristiwa dengan fitur pengelolaan peristiwa. Kita akan menggunakan fitur bawaan model Khusus terlatih Analisis hunian untuk menghasilkan peristiwa berdasarkan pengambilan hal-hal berikut:
- Menghitung jumlah kendaraan dan orang yang menyeberang jalan di garis tertentu.
- Menghitung jumlah kendaraan/orang di wilayah tetap jalan.
- Mendeteksi kemacetan di bagian mana pun di jalan.
Yang akan Anda pelajari
- Cara memproses video untuk streaming
- Cara membuat aplikasi di Vertex AI Vision
- Berbagai fitur yang tersedia di Analisis Hunian dan cara menggunakannya
- Cara men-deploy aplikasi
- Cara menelusuri video di Media Warehouse Vertex AI Vision.
- Cara membuat Cloud Function yang memproses data model Analisis Hunian.
- Cara membuat Topik & langganan Pub/Sub.
- Cara menyiapkan pengelolaan peristiwa untuk mengirim peristiwa melalui Topik Pub/Sub.
2. Sebelum Memulai
- 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 baru alih-alih memilih project yang ada. Setelah menyelesaikan langkah-langkah ini, Anda dapat menghapus project, sehingga semua resource yang terkait dengan project tersebut akan dihapus. Buka pemilih project
- Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
- Aktifkan Compute Engine API dan Vision AI API. Aktifkan API
Buat akun layanan:
- Di konsol Google Cloud, buka halaman Buat akun layanan. Buka Buat akun layanan
- Pilih project Anda.
- 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 panduan memulai cepat.
- Klik Buat dan lanjutkan.
- Untuk memberikan akses ke project Anda, berikan peran berikut kepada akun layanan Anda: Vision AI > Vision AI Editor, Compute Engine > Compute Instance Admin (beta), Storage > Storage Object Viewer † . Di daftar Select a role, 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 berikan peran Pemilik, Editor, atau Pelihat. Sebagai gantinya, berikan peran standar atau peran khusus yang memenuhi kebutuhan Anda.
- Klik Lanjutkan.
- Klik Selesai untuk menyelesaikan pembuatan akun layanan. Jangan tutup jendela browser Anda. Anda akan menggunakannya pada langkah berikutnya.
Buat kunci akun layanan:
- Di konsol Google Cloud, klik alamat email untuk akun layanan yang telah Anda buat.
- Klik Kunci.
- Klik Tambahkan kunci, lalu klik Buat kunci baru.
- Klik Create. File kunci JSON akan didownload ke komputer Anda.
- Klik Tutup.
- Instal dan lakukan inisialisasi Google Cloud CLI.
† Peran hanya diperlukan jika Anda menyalin file video contoh dari bucket Cloud Storage.
3. Menyerap file video untuk streaming
Anda dapat menggunakan vaictl untuk melakukan streaming data video ke aplikasi analisis hunian Anda.
Mulai dengan mengaktifkan Vision AI API di Cloud Console
Mendaftarkan streaming baru
- Klik tab aliran di panel kiri Vertex AI Vision.
- Klik Daftar
- Di Nama aliran data, masukkan 'traffic-stream'
- Di region, masukkan 'us-central1'
- Klik daftar
Pendaftaran streaming akan memerlukan waktu beberapa menit.
Menyiapkan contoh video
- 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 Anda
- Untuk mengirim file video lokal ini ke aliran input aplikasi, gunakan perintah berikut. Anda harus melakukan penggantian variabel berikut:
- PROJECT_ID: Project ID Google Cloud Anda.
- LOCATION_ID: ID lokasi Anda. Misalnya, us-central1. Untuk mengetahui informasi selengkapnya, lihat Lokasi cloud.
- LOCAL_FILE: Nama 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
- Perintah ini akan melakukan streaming file video ke stream. Jika Anda menggunakan tanda –loop, video akan diulang ke 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 diperlukan waktu ~100 detik antara memulai operasi penyerapan vaictl dan video muncul di dasbor.
Setelah penyerapan streaming tersedia, Anda dapat melihat feed video di tab Streams di dasbor Vertex AI Vision dengan memilih streaming traffic-stream.
Tampilan langsung video yang diserap ke dalam aliran di konsol Google Cloud. Kredit video: Elizabeth Mavor di Pixabay (pikselasi ditambahkan).
4. Membuat Cloud Function
Kita akan memerlukan Cloud Function untuk memproses data model & membuat peristiwa yang nantinya akan dikirim melalui saluran peristiwa.
Anda dapat mempelajari Cloud Function lebih lanjut di sini
Membuat Cloud Function yang memantau model Anda
- Buka halaman pembuatan UI Cloud Function.
- Tetapkan nama fungsi, yang nantinya akan digunakan untuk merujuk ke Cloud Function ini di setelan Pengelolaan Peristiwa.
- Pastikan region cocok dengan aplikasi Anda.
- Sesuaikan, lalu simpan setelan pemicu.
- Klik tombol berikutnya untuk membuka bagian "kode".

- Edit fungsi cloud 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);
}
- Klik tombol "Deploy" untuk men-deploy fungsi.
5. Buat Topik & langganan Pub/Sub
Kita perlu menyediakan topik Pub/Sub ke aplikasi yang dapat mengirimkan peristiwa. Untuk menerima peristiwa, langganan Pub/Sub harus berlangganan ke optic 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 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 aliran.
- Analisis data: Model AI(Computer Vision) dapat ditambahkan setelah penyerapan.
- Penyimpanan data: Dua versi feed video (streaming asli dan streaming yang diproses oleh model AI) dapat disimpan di gudang media.
Di konsol Google Cloud, aplikasi ditampilkan sebagai grafik.
Membuat aplikasi kosong
Sebelum dapat mengisi grafik aplikasi, Anda harus membuat aplikasi kosong terlebih dahulu.
Buat aplikasi di konsol Google Cloud.
- Buka konsol Google Cloud.
- Buka tab Applications di dasbor Vertex AI Vision.
- Klik tombol Buat.
- Masukkan traffic-app sebagai nama aplikasi dan pilih region Anda.
- Klik Buat.
Menambahkan node komponen aplikasi
Setelah membuat aplikasi kosong, Anda dapat menambahkan tiga node ke grafik aplikasi:
- Node penyerapan: Resource stream yang menyerap data.
- Node pemrosesan: Model analisis hunian yang bertindak berdasarkan data yang di-ingest.
- Node penyimpanan: Gudang media yang menyimpan video yang diproses, dan berfungsi sebagai penyimpanan metadata. Penyimpanan metadata mencakup informasi analisis tentang data video yang di-ingest, dan informasi yang disimpulkan oleh model AI.
Tambahkan node komponen ke aplikasi Anda di konsol.
- Buka tab Applications di dasbor Vertex AI Vision. Buka tab Aplikasi
- Di garis traffic-aplikasi, pilih Lihat grafik. Tindakan ini akan membawa Anda ke visualisasi grafik pipeline pemrosesan.
Menambahkan node penyerapan data
- Untuk menambahkan node input stream, pilih opsi Streams di bagian Connectors pada menu samping.
- Di bagian Sumber pada menu Aliran yang terbuka, pilih Tambahkan aliran.
- Di menu Tambahkan aliran, pilih Daftarkan aliran baru dan tambahkan traffic-stream sebagai nama aliran.
- Untuk menambahkan aliran ke grafik aplikasi, klik Tambahkan aliran.
Menambahkan node pemrosesan data
- Untuk menambahkan node model jumlah hunian, pilih opsi analisis hunian di bagian Model khusus pada menu samping.
- Biarkan pilihan default Orang dan Kendaraan.
- Menambahkan Garis di Persimpangan garis. Gunakan alat garis multi-titik untuk menggambar garis di tempat Anda perlu mendeteksi mobil atau orang yang keluar atau masuk.
- Gambarkan zona aktif untuk menghitung orang/kendaraan di zona tersebut.
- Menambahkan setelan untuk waktu tunggu guna mendeteksi kemacetan jika zona aktif digambar.
- (saat ini, zona aktif dan deteksi garis tidak didukung secara bersamaan. Gunakan hanya satu fitur dalam satu waktu.)


Menambahkan node penyimpanan data
- Untuk menambahkan node tujuan output (penyimpanan), pilih opsi Vertex AI Vision's Media Warehouse di bagian Connectors pada menu samping.
- Di menu Vertex AI Vision's Media Warehouse, klik Connect warehouse.
- Di menu Connect warehouse, pilih Create new warehouse. Beri nama traffic gudang-gudang, dan biarkan durasi TTL 14 hari.
- Klik tombol Buat untuk menambahkan gudang.
7. Mengonfigurasi Pengelolaan Acara
Durasi 02:00
Kita akan menghubungkan model ke Cloud Function yang dibuat sebelumnya untuk pemrosesan pasca, di mana Cloud Function dapat dengan bebas memproses output model dan menghasilkan peristiwa yang sesuai dengan kebutuhan Anda. Kemudian, kita akan mengonfigurasi saluran peristiwa dengan mengonfigurasi Topik Pub/Sub yang dibuat sebelumnya sebagai target. Anda juga dapat menetapkan interval minimum, yang akan membantu menghindari saluran acara Anda dibanjiri oleh acara yang sama dalam waktu singkat.
Pilih Cloud Function untuk pasca-pemrosesan
- Klik node pemrosesan data(analisis hunian) pada grafik aplikasi Anda untuk membuka menu samping.
- Pilih Cloud Function Anda (diidentifikasi berdasarkan nama fungsinya) di drop-down Pemrosesan pasca.
- Grafik aplikasi akan otomatis menyimpan perubahan Anda.

Mengonfigurasi Channel Acara
- Klik node pemrosesan data(analisis hunian) pada grafik aplikasi Anda untuk membuka menu samping.
- Klik "SIAPKAN NOTIFIKASI ACARA" di bagian Notifikasi Acara.

- Pilih Topik Pub/Sub Anda di menu drop-down.
- (opsional) tetapkan interval/frekuensi minimum untuk publikasi peristiwa.

8. Men-deploy aplikasi Anda untuk digunakan
Setelah Anda membuat aplikasi end-to-end dengan semua komponen yang diperlukan, langkah terakhir untuk menggunakan aplikasi adalah men-deploy-nya.
- Buka tab Applications di dasbor Vertex AI Vision. Buka tab Aplikasi
- Pilih Lihat grafik di samping aplikasi traffic-app dalam daftar.
- Dari halaman pembuat grafik aplikasi, klik tombol Deploy.
- Pada dialog konfirmasi berikutnya, pilih Deploy. Operasi deployment mungkin memerlukan waktu beberapa menit hingga selesai. Setelah deployment selesai, tanda centang hijau akan muncul di samping node.

9. Memverifikasi Peristiwa/Pesan dalam langganan Pub/Sub
Setelah Anda menyerap data video ke aplikasi pemrosesan, Cloud Function akan menghasilkan peristiwa setelah model analisis hunian menghasilkan anotasi. Kemudian, peristiwa tersebut harus dipublikasikan sebagai pesan melalui topik Pub/Sub Anda dan diterima oleh langganan Anda.
Langkah-langkah berikut mengasumsikan bahwa Anda memiliki langganan pull.
- Buka daftar Langganan Pub/Sub di project Anda & temukan langganan yang sesuai. Buka halaman daftar langganan Pub/Sub
- Buka tab "Pesan".
- Klik tombol "pull".
- Lihat pesan Anda di tabel.

Atau, Anda dapat mempelajari cara menerima pesan tanpa UI. Buka halaman langganan
10. Selamat
Selamat, Anda telah menyelesaikan lab ini.
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
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