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 fitur bawaan Analisis jumlah tamu model Khusus terlatih untuk menangkap hal-hal berikut:

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

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 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, 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 Create service account
  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 berikan peran Pemilik, Editor, atau Pelihat. 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 contoh dari bucket Cloud Storage.

3. Siapkan VM untuk melakukan streaming video

Sebelum membuat Aplikasi di Analytics Kehadiran, 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 mengirim 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 Instance VM. Buka instance VM
  2. Pilih project Anda, lalu klik Continue.
  3. Klik Create instance.
  4. Tentukan Name untuk VM Anda. Untuk informasi selengkapnya, lihat Konvensi penamaan resource.
  5. Opsional: Ubah Zone untuk VM ini. Compute Engine mengacak daftar zona di 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. Kemudian, Anda dapat mendownload alat command line vaictl untuk menyerap video ke dalam streaming.

Membangun koneksi SSH ke VM Anda

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

Mendownload 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 contoh, lalu 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. Pada nama Feed, masukkan 'traffic-stream'
  4. Di region, masukkan 'us-central1'
  5. Klik daftar

Perlu waktu beberapa menit untuk mendaftarkan streaming.

Menyalin contoh video ke VM Anda

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

Menstreaming video dari VM dan menyerap data ke dalam 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 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 sehingga terus melakukan streaming meskipun 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 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).

5. 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: Dua 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 tambahkan Buat.
  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 transfer: Resource streaming yang menyerap data yang dikirim dari instance VM Compute Engine yang Anda buat.
  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 Source pada menu Stream yang terbuka, pilih Add streams.
  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 jumlah tamu, pilih opsi occupancy analytics di bagian Specialized models 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. Tambahkan setelan untuk lama singgah guna mendeteksi kemacetan jika zona aktif digambar.
  • (saat ini zona aktif dan persimpangan garis tidak didukung secara bersamaan. Hanya gunakan 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 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.

6. Menghubungkan Output ke Tabel BigQuery

Saat Anda menambahkan konektor BigQuery ke aplikasi Vertex AI Vision, semua output model aplikasi yang terhubung akan diserap 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 secara otomatis.

Pembuatan tabel otomatis

Jika Anda 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 sudah ada, pembuatan otomatis tidak akan terjadi.
  1. Buka tab Applications di dasbor Vertex AI Vision. Buka tab Applications
  2. Pilih Lihat aplikasi di samping nama aplikasi Anda dari daftar tersebut.
  3. Di halaman Application Builder, pilih BigQuery dari bagian Connectors.
  4. Biarkan kolom Jalur BigQuery kosong. ee0b67d4ab2263d.png
  5. Di bagian simpan metadata dari:, pilih hanya 'Analytics jumlah tamu' dan hapus centang pada aliran data.

Grafik aplikasi akhir akan terlihat seperti ini:

1787242465fd6da7.png

7. Men-deploy aplikasi untuk digunakan

Setelah Anda mem-build aplikasi menyeluruh 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 Applications
  2. Pilih Lihat grafik di samping aplikasi traffic-app dalam daftar.
  3. Dari halaman pembuat grafik aplikasi, klik tombol Deploy.
  4. Pada 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 Gudang
  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 Max ke 5.
  4. Untuk memfilter data video yang diproses dan disimpan di Media Warehouse Vertex AI Vision, klik Telusuri.

e636361b19738c8d.png

Tampilan data video yang disimpan 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 set data: 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 jalur 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

Kueri2: 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

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

Codelab ini hanya akan menampilkan data dan visualisasi contoh untuk Kueri1. Anda dapat mengikuti proses yang serupa untuk Kueri2.

e6fd891f3a46246.png

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

9e737ddb4d0d25b6.png

Di panel 'dimensi', tambahkan waktu dan ubah konfigurasi waktu menjadi tanggal-waktu. 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 baris yang berbeda.

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 Sedang berguna