1. Tujuan
Ringkasan
Codelab ini berfokus pada pembuatan aplikasi Vertex AI Vision menyeluruh untuk mendemonstrasikan pengiriman video dengan fitur pemfilteran gerakan. Dalam tutorial ini, kita akan membahas berbagai parameter dalam konfigurasi filter gerakan:
- Sensitivitas deteksi gerakan
- Durasi peristiwa minimum
- Periode lihat-balik
- Waktu tunggu
- Zona deteksi gerakan
Yang akan Anda pelajari
- Cara menyerap video untuk streaming
- Berbagai fitur yang tersedia di Filter Gerakan dan cara menggunakannya
- Tempat untuk memeriksa statistik Filter Gerakan
- Cara menyesuaikan setelan berdasarkan video Anda
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, 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
- Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
- Aktifkan Compute Engine dan Vision AI API. Aktifkan API
Buat akun layanan:
- Di konsol Google Cloud, buka halaman Buat akun layanan. Buka Create service account
- 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 memulai.
- Klik Buat dan lanjutkan.
- 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.
- Klik Lanjutkan.
- Klik Selesai untuk menyelesaikan pembuatan akun layanan. Jangan tutup jendela browser Anda. Anda akan menggunakannya pada langkah berikutnya.
Membuat 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. Filter Gerakan
Filter gerakan menangkap segmen video produk dan gerakan yang berisi peristiwa gerakan. Dengan menyesuaikan sensitivitas gerakan, durasi peristiwa minimum, periode lihat balik, periode tunggu, dan zona deteksi gerakan, pengguna dapat mengonfigurasi dasar filter sesuai kebutuhan mereka sendiri.
Konfigurasi Filter Gerakan
Ada 5 konfigurasi yang tersedia di filter gerakan untuk penyesuaian.
- Sensitivitas gerakan: seberapa sensitif gerakan harus dipicu.
- Durasi peristiwa minimum: durasi minimum peristiwa gerakan yang akan direkam.
- Periode lihat balik: berapa lama video harus mulai merekam sebelum peristiwa gerakan terdeteksi.
- Periode tunggu: setelah peristiwa gerakan berakhir, periode tunggu dengan durasi yang ditentukan akan terjadi. Selama periode tunggu, peristiwa gerakan tidak akan dipicu.
- Zona deteksi gerakan: zona yang dikonfigurasi pengguna untuk menentukan tempat deteksi gerakan harus dijalankan. (Akan dijelaskan di bagian selanjutnya)
Sensitivitas gerakan
Gunakan flag motion_detection_sensitivity
dalam perintah vaictl.String
. Media default. Dapat memilih dari rendah, sedang, atau tinggi.
Semakin tinggi sensitivitas deteksi gerakan, semakin sensitif terhadap kebisingan dan gerakan yang lebih kecil. Setelan ini direkomendasikan untuk setelan yang memiliki objek bergerak yang lebih kecil (seperti orang dari kejauhan) dan pencahayaan yang stabil.
Di sisi lain, sensitivitas rendah kurang sensitif terhadap gangguan pencahayaan. Setelan ini sangat cocok jika ada lebih banyak gangguan pencahayaan seperti lingkungan luar ruangan dan untuk kualitas video yang lebih rendah yang mungkin memiliki lebih banyak derau. Karena setelan ini adalah pemfilteran yang paling agresif, setelan ini dapat mengabaikan gerakan dari objek kecil.
Durasi peristiwa minimum
Gunakan flag min_event_length_in_seconds
dalam perintah vaictl.
Bilangan bulat. Defaultnya adalah 10 detik. Rentang waktu mulai dari 0 detik hingga 3600 detik.
Durasi minimum video peristiwa gerakan yang akan diurai setelah segmen peristiwa gerakan terdeteksi dalam frame.
Periode lihat balik
Gunakan flag look_back_window_in_seconds
dalam perintah vaictl.
Bilangan bulat. Default 3 detik. Rentang waktu mulai dari 0 detik hingga 3600 detik.
Periode lihat balik adalah durasi yang di-cache sebelum peristiwa gerakan terdeteksi. Hal ini berguna saat kita ingin melihat apa yang terjadi dalam frame beberapa detik sebelum peristiwa gerakan terdeteksi.
Periode tunggu
Gunakan flag cool_down_period_in_seconds
dalam perintah vaictl.
Bilangan bulat. Default 300 detik. Rentang dari 0 detik hingga 3600 detik.
Periode tunggu adalah durasi jeda deteksi gerakan setelah peristiwa gerakan direkam. Selama periode tunggu, tidak ada komputasi yang akan dijalankan untuk mendeteksi gerakan.
4. Contoh filter gerakan dasar
Panduan Vaictl SDK
Untuk memeriksa vaictl
secara manual untuk aliran input dengan filter gerakan, gunakan perintah di bawah.
vaictl send video-file applying motion-filter -h
Menyiapkan video sampel
- Anda dapat menyalin contoh video 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 .
Menyiapkan variabel lingkungan
Tetapkan variabel lingkungan di bawah untuk menggunakan template perintah yang disediakan.
variabel vaictl
- 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.
- –loop flag: Opsional. Mengulangi data file untuk menyimulasikan streaming.
export PROJECT_ID=<Your Google Cloud project ID> export LOCATION_ID=us-central1
Variabel filter gerakan
- MOTION_SENSITIVITY: Seberapa sensitif deteksi gerakan.
- MIN_EVENT_LENGTH: Durasi minimum peristiwa gerakan.
- LOOK_BACK_WINDOW: Durasi yang akan direkam sebelum gerakan pertama dalam peristiwa gerakan.
- COOL_DOWN_PERIOD: Periode saat deteksi gerakan akan dijeda setelah peristiwa gerakan direkam.
export MOTION_SENSITIVITY=<low or medium or high> export MIN_EVENT_LENGTH=<0-3600> export LOOK_BACK_WINDOW=<0-3600> export COOL_DOWN_PERIOD=<0-3600>
Menyiapkan perintah filter gerakan
Ada dua opsi untuk menggunakan filter gerakan dengan aliran input. Opsi pertama adalah mengirimkan peristiwa gerakan ke aliran data di konsol cloud. Opsi kedua adalah mengirim peristiwa gerakan ke penyimpanan lokal.
Mengirim hasil ke konsol cloud
Anda dapat menggunakan vaictl untuk melakukan streaming data video output ke konsol cloud. Mulai dengan mengaktifkan Vision AI API di Cloud Console.
Daftarkan streaming baru
- Klik tab aliran data di panel kiri Vertex AI Vision.
- Klik Daftar
- Di Nama aliran data, masukkan
motion-detection-stream
- Di wilayah, masukkan
us-central1
- Klik daftar
Mengirim hasil ke streaming
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.
INPUT_VIDEO=street_vehicles_people.mp4 vaictl -p $PROJECT \ -l $LOCATION_ID \ -c application-cluster-0 \ --service-endpoint visionai.googleapis.com \ send video-file --file-path $INPUT_VIDEO \ applying motion-filter --motion-sensitivity=$MOTION_SENSITIVITY \ --min-event-length=$MIN_EVENT_LENGTH \ --lookback-length=$LOOK_BACK_WINDOW \ --cooldown-length=$COOL_DOWN_PERIOD \ to streams motion-detection-stream --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.
Mengirim hasil ke penyimpanan lokal
Perintah ini melakukan streaming file video ke streaming.
Tambahkan nohup
di awal dan &
di akhir untuk menjadikannya tugas latar belakang.
INPUT_VIDEO=street_vehicles_people.mp4 OUTPUT_PATH=<path_to_store_motion_events_on_local_disk> nohup vaictl -p $PROJECT \ -l $LOCATION_ID \ -c application-cluster-0 \ --service-endpoint visionai.googleapis.com \ send video-file --file-path $INPUT_VIDEO \ applying motion-filter --motion-sensitivity=$MOTION_SENSITIVITY \ --min-event-length=$MIN_EVENT_LENGTH \ --lookback-length=$LOOK_BACK_WINDOW \ --cooldown-length=$COOL_DOWN_PERIOD \ to mp4file --mp4-file-path=$OUTPUT_PATH --loop
5. Zona deteksi gerakan
Di bagian ini, kita akan membahas penggunaan zona deteksi gerakan dan cara mengonfigurasinya. Zona ini dimaksudkan untuk meningkatkan deteksi gerakan dengan menyamarkan gerakan yang berasal dari area yang tidak Anda minati.
Zona deteksi gerakan memiliki dua jenis, (1) zona positif tempat deteksi gerakan hanya berjalan di area yang dianotasi; (2) zona negatif tempat deteksi gerakan mengabaikan gerakan apa pun di area yang dianotasi.
Anotasi zona
Gunakan flag zone_annotation
dalam perintah vaictl untuk memasukkan koordinat untuk poligon zona.
String. Default-nya kosong untuk anotasi zona.
Anotasi zona akan berupa input string dari pengguna, yang menunjukkan zona dalam bingkai yang ingin disembunyikan atau difokuskan oleh pengguna. Untuk menganotasi zona, pengguna harus menentukan koordinat gambar sumbu x dan y untuk setiap node di zona. Zona harus memiliki tiga node atau lebih agar dapat membentuk poligon. Dalam satu bingkai, dapat ada beberapa zona. Jika zona tumpang-tindih, area yang dicakup oleh kedua zona tersebut akan tetap tercakup.
Anotasi zona memiliki sintaksis input khusus yang harus diikuti.
- Untuk menunjukkan node tunggal, gunakan
:
untuk menghubungkan sumbu x dan y dari koordinasi gambar. Misalnya, node(0,0)
di sudut kiri atas akan dilambangkan sebagai0:0
. - Untuk menunjukkan semua node dalam satu zona, gunakan
;
untuk menghubungkan node. Misalnya, untuk zona dengan node(0,0)
,(100,0)
,(100,100)
, dan(0, 100)
, zona tersebut akan dilambangkan sebagai0:0;100:0;100:100;0:100
. Selalu masukkan node sebagai node penghubung di samping satu sama lain, urutannya dapat searah jarum jam atau berlawanan arah jarum jam.
*Zona persegi dengan empat node.
*Zona segitiga dengan tiga node.
- Untuk menunjukkan beberapa zona dalam satu frame, gunakan
-
untuk menghubungkan zona yang berbeda. Misalnya, jika kita ingin memasukkan(0,0)
,(100,0)
,(100,100)
,(0,100)
, dan(120,120)
,(110,150)
,(200,160)
, anotasi zona input akan menjadi0:0;100:0;100:100;0:100-120:120;110:150;200:160
.
*Dua zona dalam satu bingkai.
Untuk mendapatkan koordinat dari gambar, ada beberapa alat yang tersedia secara online untuk membantu mendapatkan koordinat. Misalnya, lihat Wolfram - Get Coordinates from Image
Kecualikan zona yang dianotasi
Gunakan flag exclude_annotated_zone
dalam perintah vaictl untuk mengonfigurasi deteksi gerakan di zona atau di luar zona.
Boolean. Defaultnya adalah salah (false).
Exclude annotated zone adalah input boolean dari pengguna, yang menunjukkan apakah pengguna ingin mengecualikan zona yang dianotasi dalam deteksi gerakan atau tidak.
- Jika ditetapkan ke
true
, zona yang dianotasi akan berfungsi sebagai zona negatif. Gerakan di zona yang dianotasi tidak akan terdeteksi.
*Hanya jalankan deteksi gerakan di luar zona input.
- Jika disetel ke salah (false), zona tersebut akan bertindak sebagai zona positif, yang akan difokuskan oleh deteksi gerakan.
*Hanya jalankan deteksi gerakan di zona input.
6. Contoh filter gerakan dengan zona deteksi gerakan
Dalam contoh ini, kita akan menggunakan video yang memiliki pohon yang terus bergerak di latar depan sebagai contoh. Dalam setelan filter gerakan reguler, video hanya akan menghasilkan satu peristiwa gerakan yang memiliki durasi video asli karena filter gerakan mendaftarkan pohon yang bergerak sebagai "terus bergerak di seluruh video". Namun, dengan bantuan zona deteksi gerakan, kita dapat menyamarkan gerakan dari pohon dengan benar dan berfokus pada gerakan dari mobil dan pejalan kaki.
Persiapan video
Video contoh (gs://cloud-samples-data/vertex-ai-vision/dynamic-background-fall.mp4 ) berisi pohon, mobil, dan pejalan kaki dari www.changedetection.net.
Kredit video: N. Goyette, P.-M. Jodoin, F. Porikli, J. Konrad, dan P. Ishwar, changedetection.net: A new change detection benchmark dataset, in Proc. IEEE Workshop on Change Detection (CDW-2012) at CVPR-2012, Providence, RI, 16-21 Jun., 2012
Persiapan variabel lingkungan
Variabel project Google Cloud.
export PROJECT_ID=<Your Google Cloud project ID> export LOCATION_ID=us-central1 export LOCAL_FILE=street_vehicles_people.mp4
Konfigurasi filter gerakan dasar.
export MOTION_SENSITIVITY=<low or medium or high> export MIN_EVENT_LENGTH=<0-3600> export LOOK_BACK_WINDOW=<0-3600> export COOL_DOWN_PERIOD=<0-3600>
Konfigurasi zona deteksi gerakan.
Pilih dari bawah ini untuk melihat berbagai jenis penggunaan zona deteksi gerakan.
Kecualikan pohon untuk deteksi gerakan.
export ZONE_ANNOTATION="0:0;680:0;660:70;380:320;100:150" export EXCLUDE_ANNOTATED_ZONE=true
*Hanya jalankan deteksi gerakan di luar zona input.
Memfokuskan deteksi gerakan di jalan.
export ZONE_ANNOTATION="0:300;780:300;780:480;0:480" export EXCLUDE_ANNOTATED_ZONE=false
*Hanya jalankan deteksi gerakan di luar zona input.
Mengirim streaming video dengan filter gerakan
Mengirim peristiwa gerakan ke konsol cloud
Anda dapat menggunakan vaictl untuk melakukan streaming data video output ke konsol cloud. Mulailah dengan mengaktifkan Vision AI API di Konsol Cloud.
Daftarkan streaming baru
- Klik tab aliran data di panel kiri Vertex AI Vision.
- Klik Daftar
- Di Nama aliran data, masukkan
motion-detection-stream
- Di wilayah, masukkan
us-central1
- Klik daftar
Mengirim hasil ke streaming
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.
vaictl -p $PROJECT \ -l $LOCATION_ID \ -c application-cluster-0 \ --service-endpoint visionai.googleapis.com \ send video-file --file-path $INPUT_VIDEO \ applying motion-filter --motion-sensitivity=$MOTION_SENSITIVITY \ --min-event-length=$MIN_EVENT_LENGTH \ --lookback-length=$LOOK_BACK_WINDOW \ --cooldown-length=$COOL_DOWN_PERIOD \ --zone_annotation=ZONE_ANNOTATION \ --exclude_annotated_zone=$EXCLUDE_ANNOTATED_ZONE \ to streams motion-detection-stream --loop
Mungkin perlu waktu ~100 detik antara memulai operasi transfer vaictl dan video 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.
Mengirim hasil ke penyimpanan lokal
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 terus melakukan streaming.
Tambahkan nohup
di awal dan &
di akhir untuk menjadikannya tugas latar belakang.
OUTPUT_PATH=<path_to_store_motion_events> vaictl -p $PROJECT \ -l $LOCATION_ID \ -c application-cluster-0 \ --service-endpoint visionai.googleapis.com \ send video-file --file-path $INPUT_VIDEO \ applying motion-filter --motion-sensitivity=$MOTION_SENSITIVITY \ --min-event-length=$MIN_EVENT_LENGTH \ --lookback-length=$LOOK_BACK_WINDOW \ --cooldown-length=$COOL_DOWN_PERIOD \ --zone_annotation=$ZONE_ANNOTATION \ --exclude_annotated_zone=$EXCLUDE_ANNOTATED_ZONE \ to mp4file --mp4-file-path=$OUTPUT_PATH --loop
7. Selamat
Selamat, Anda telah menyelesaikan lab!
Pembersihan
Agar tidak menimbulkan tagihan ke akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, akhiri operasi vaictl SDK melalui command line dengan ctrl
+ z
.
Referensi
https://cloud.google.com/vision-ai/docs/overview
https://cloud.google.com/vision-ai/docs/motion-filtering-model
https://cloud.google.com/vision-ai/docs/create-manage-streams
Masukan
Klik di sini untuk Memberikan Masukan