Aplikasi Pemantauan Traffic Vertex AI Vision

1. Tujuan

Ringkasan

Codelab ini akan berfokus pada pembuatan aplikasi Vertex AI Vision secara menyeluruh untuk memantau rekaman video traffic real-time. Kita akan menggunakan Analisis jumlah tamu model Khusus yang telah dilatih sebelumnya fitur bawaan untuk merekam 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 menyiapkan VM guna 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 menghubungkan output ke BigQuery, menulis kueri SQL untuk mengekstrak insight dari output JSON model dan memvisualisasikan hasilnya di Looker Studio secara real time.

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. Siapkan VM untuk melakukan streaming video

Sebelum membuat Aplikasi di Occupancy Analytics, Anda harus mendaftarkan aliran data yang dapat digunakan nanti oleh Aplikasi.

Dalam tutorial ini, Anda akan membuat instance VM Compute Engine yang menghosting video, dan Anda mengirimkan data video streaming tersebut dari VM.

Membuat VM Linux

Langkah pertama dalam mengirim video dari instance VM Compute Engine adalah membuat instance VM.

  1. Di konsol, buka halaman VM instances. Buka instance VM
  2. Pilih project Anda, lalu klik Continue.
  3. Klik Create instance.
  4. Tentukan Name untuk VM Anda. Untuk mengetahui informasi selengkapnya, lihat Konvensi penamaan resource.
  5. Opsional: Ubah Zone untuk VM ini. Compute Engine mengacak daftar zona dalam setiap region untuk mendorong penggunaan di beberapa zona.
  6. Terima opsi default yang tersisa. Untuk mengetahui informasi selengkapnya tentang opsi ini, lihat Membuat dan memulai VM.
  7. Untuk membuat dan memulai VM, klik Create.

Menyiapkan lingkungan VM

Setelah VM dimulai, Anda dapat menggunakan console untuk melakukan SSH ke VM dari browser. Lalu, Anda dapat mendownload alat command line vaictl untuk menyerap video ke streaming Anda.

Membuat koneksi SSH ke VM

  1. Di konsol, buka halaman VM instances. Buka instance VM
  2. Di bagian Connect pada baris instance yang Anda buat, klik SSH. Tindakan ini akan membuka koneksi SSH di jendela browser baru. Opsi SSH di UI

Download alat command line vaictl

  1. Di jendela SSH-in-browser, download alat command line Vertex AI Vision (vaictl) menggunakan perintah berikut:
wget https://github.com/google/visionai/releases/download/v0.0.4/visionai_0.0-4_amd64.deb
  1. Instal alat command line dengan menjalankan perintah berikut:
sudo apt install ./visionai_0.0-4_amd64.deb
  1. Anda dapat menguji penginstalan dengan menjalankan perintah berikut:
vaictl --help

4. Menyerap file video untuk streaming

Setelah menyiapkan lingkungan VM, Anda dapat menyalin file video sampel, lalu 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.

Menyalin video sampel ke VM

  1. Di jendela SSH-in-browser untuk VM Anda, salin 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 .

Melakukan streaming video dari VM dan menyerap data ke streaming 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 streaming tetap berjalan bahkan setelah VM terputus.
  • ( 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).

5. 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 penyerapan: Resource aliran yang menyerap data yang dikirim dari instance VM Compute Engine yang Anda buat.
  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.

6. Hubungkan Output ke Tabel BigQuery

Saat Anda menambahkan konektor BigQuery ke aplikasi Vertex AI Vision, semua output model aplikasi yang terhubung akan ditransfer ke tabel target.

Anda dapat membuat tabel BigQuery sendiri dan menentukan tabel tersebut saat menambahkan konektor BigQuery ke aplikasi, atau membiarkan platform aplikasi Vertex AI Vision membuat tabel tersebut secara otomatis.

Pembuatan tabel otomatis

Jika mengizinkan platform aplikasi Vertex AI Vision membuat tabel secara otomatis, Anda dapat menentukan opsi ini saat menambahkan node konektor BigQuery.

Kondisi set data dan tabel berikut berlaku jika Anda ingin menggunakan pembuatan tabel otomatis:

  • Set data: Nama set data yang dibuat secara otomatis adalah visionai_dataset.
  • Tabel: Nama tabel yang dibuat secara otomatis adalah visionai_dataset.APPLICATION_ID.
  • Penanganan error:
  • Jika tabel dengan nama yang sama dalam set data yang sama tidak ada, pembuatan otomatis tidak akan dilakukan.
  1. Buka tab Applications pada dasbor Vertex AI Vision. Buka tab Aplikasi
  2. Pilih Lihat aplikasi di samping nama aplikasi Anda dari daftar tersebut.
  3. Di halaman builder aplikasi, pilih BigQuery dari bagian Konektor.
  4. Biarkan kolom BigQuery path kosong. ee0b67d4ab2263d.png
  5. Di metadata toko dari: hanya pilih 'Analisis jumlah tamu' dan hapus centang pada feed.

Grafik aplikasi akhir akan terlihat seperti ini:

1787242465fd6da7.pngS

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

8. Telusuri konten video di gudang penyimpanan

Setelah menyerap data video ke dalam aplikasi pemrosesan, Anda dapat melihat data video yang dianalisis dan menelusuri data berdasarkan informasi analisis tingkat keterisian.

  1. Buka tab Warehouses pada dasbor Vertex AI Vision. Buka tab Warehouse
  2. Temukan warehouse traffic warehouse dalam daftar, lalu klik Lihat aset.
  3. Di bagian Jumlah orang atau Jumlah kendaraan, tetapkan nilai Min ke 1, dan nilai Maksimum ke 5.
  4. Untuk memfilter data video yang diproses dan disimpan di Media Warehouse Vertex AI Vision, klik Telusuri.

e636361b19738c8d.png

Tampilan data video tersimpan yang cocok dengan kriteria penelusuran di Konsol Google Cloud. Kredit video: Elizabeth Mavor di Pixabay (kriteria penelusuran diterapkan).

9. Menganalisis Output di Tabel BigQuery

Buka BigQuery

Pilih {i>dataset<i}: visionai_dataset

Pilih tabel: APPLICATION_ID (dalam hal ini traffic-app)

Klik tiga titik di sebelah kanan nama tabel dan klik Query

Tulis kueri berikut

Kueri1: Kueri untuk memeriksa Jumlah Kendaraan yang melintasi setiap baris per menit

abc.sql

—- Get list of active marked lines for each timeframe
WITH line_array AS (
  SELECT
  t.ingestion_time AS ingestion_time,
  JSON_QUERY_ARRAY(t.annotation.stats["crossingLineCounts"]) AS lines
  FROM
  `PROJ_ID.visionai_dataset.APP_ID` AS t
),
—- Flatten active lines to get individual entities details
flattened AS (
  SELECT
  line_array.ingestion_time,
  JSON_VALUE(line.annotation.id) as line_id,
  JSON_QUERY_ARRAY(line["positiveDirectionCounts"]) AS entities
  FROM line_array, unnest(line_array.lines) as line
 )
—- Generate aggregate vehicle count per zone w.r.t time 
SELECT
  STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time, line_id,
  SUM(INT64(entity["count"])) as vehicle_count
FROM
  flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, line_id

Query2: Kueri untuk memeriksa Jumlah Kendaraan per menit di setiap Zona

—- Get list of active zones for each timeframe
WITH zone_array AS (
     SELECT
     t.ingestion_time AS ingestion_time,
     JSON_QUERY_ARRAY(t.annotation.stats["activeZoneCounts"]) AS zones
     FROM
     `PROJ_ID.visionai_dataset.APP_ID` AS t
),
—- Flatten active zones to get individual entities details
flattened AS (
   SELECT zone_array.ingestion_time, JSON_VALUE(zone.annotation.id) as zone_id,
         JSON_QUERY_ARRAY(zone["counts"]) AS entities
   FROM zone_array, unnest(zone_array.zones) as zone
 )
—- Generate aggregate vehicle count per zone w.r.t time 
SELECT 
STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time, 
zone_id,
SUM(INT64(entity["count"])) as vehicle_count
FROM flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, zone_id

Pada kueri di atas, Anda dapat mengubah "Kendaraan" menjadi "Person" untuk menghitung Orang.

Codelab ini akan menampilkan contoh data dan visualisasi untuk Query1 saja. Anda dapat mengikuti proses serupa untuk Query2.

e6fd891f3a46246.png

Klik Explore Data di menu sebelah kanan dan pilih jelajahi dengan Looker Studio

9e737ddb4d0d25b6.pngS

Di ‘dimensi' tambahkan {i>add time<i} dan ubah konfigurasi waktu menjadi {i>date-time<i}. Di ‘dimensi perincian' tambahkan line_id. b5da9704ccd8db.png

Grafik di atas menunjukkan jumlah kendaraan/orang yang melintasi setiap jalur per menit.

Batang biru tua dan biru muda menunjukkan dua ID garis yang berbeda.

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