1. Tujuan
Ringkasan
Codelab ini berfokus pada pembuatan aplikasi Vertex AI Vision end-to-end 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 pendinginan
- Zona deteksi gerakan
Yang akan Anda pelajari
- Cara memproses 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 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. Filter Gerakan
Filter gerakan merekam gerakan dan segmen video produk yang berisi peristiwa gerakan. Dengan menyesuaikan sensitivitas gerakan, durasi peristiwa minimum, periode lihat kembali, periode pendinginan, dan zona deteksi gerakan, pengguna dapat mengonfigurasi filter berdasarkan kebutuhannya 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 akan direkam.
- Periode lihat balik: durasi video harus mulai merekam sebelum peristiwa gerakan terdeteksi.
- Periode tunggu: setelah peristiwa gerakan berakhir, periode tunggu dengan durasi yang ditentukan akan terjadi. Selama periode pendinginan, peristiwa gerakan tidak akan dipicu.
- Zona deteksi gerakan: zona yang dikonfigurasi pengguna untuk menentukan tempat deteksi gerakan harus berjalan. (Akan dijelaskan lebih lanjut di bagian berikutnya)
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 deteksi gerakan terhadap kebisingan dan gerakan kecil. Setelan ini direkomendasikan untuk setelan dengan 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 saat ada lebih banyak gangguan pencahayaan seperti di lingkungan luar ruangan dan untuk kualitas video yang lebih rendah di mana mungkin ada lebih banyak noise. Karena setelan ini adalah pemfilteran paling agresif dari semuanya, setelan ini dapat mengabaikan gerakan dari objek kecil.
Durasi peristiwa minimum
Gunakan flag min_event_length_in_seconds dalam perintah vaictl.
Bilangan bulat. Default 10 detik. Rentang dari 0 detik hingga 3600 detik.
Durasi minimum video peristiwa gerakan yang akan diuraikan 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 dari 0 detik hingga 3600 detik.
Periode lihat balik adalah durasi yang di-cache sebelum peristiwa gerakan terdeteksi. Fitur 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 pendinginan adalah berapa lama deteksi gerakan akan dijeda setelah peristiwa gerakan terekam. Selama periode tunggu, tidak ada komputasi yang akan dijalankan untuk mendeteksi gerakan.
4. Contoh filter gerakan dasar
Manual SDK Vaictl
Untuk memeriksa manual vaictl untuk aliran input dengan filter gerakan, gunakan perintah di bawah.
vaictl send video-file applying motion-filter -h
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 .
Siapkan variabel lingkungan
Tetapkan variabel lingkungan di bawah untuk menggunakan template perintah yang disediakan.
Variabel vaictl
- 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
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.
- PERIODE_PENDINGINAN: Periode saat deteksi gerakan akan dijeda setelah peristiwa gerakan terekam.
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>
Siapkan perintah filter gerakan
Ada dua opsi untuk menggunakan filter gerakan dengan aliran input. Opsi pertama adalah mengirim peristiwa gerakan ke stream di konsol cloud. Opsi kedua adalah mengirimkan 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 Konsol Cloud.
Mendaftarkan aliran baru
- Klik tab aliran di panel kiri Vertex AI Vision.
- Klik Daftar
- Di kolom Nama aliran data, masukkan
motion-detection-stream - Di wilayah, masukkan
us-central1 - Klik daftar
Mengirim hasil ke streaming
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.
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 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.
Mengirim hasil ke penyimpanan lokal
Perintah ini akan melakukan streaming file video ke stream.
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 mempelajari 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 diberi anotasi; (2) zona negatif tempat deteksi gerakan mengabaikan gerakan apa pun di area yang diberi anotasi.
Anotasi zona
Gunakan flag zone_annotation dalam perintah vaictl untuk memasukkan koordinat poligon zona.
String. Default kosong untuk anotasi zona.
Anotasi zona akan berupa input string dari pengguna, yang menunjukkan zona dalam frame yang ingin disembunyikan atau difokuskan oleh pengguna. Untuk memberi anotasi pada zona, pengguna harus menentukan koordinat gambar sumbu x dan y untuk setiap node di zona. Zona harus memiliki tiga node atau lebih untuk membentuk poligon. Dapat ada beberapa zona dalam frame. Jika zona saling tumpang-tindih, area yang dicakup oleh kedua zona akan tetap dicakup.
Anotasi zona memiliki sintaksis input tertentu yang harus diikuti.
- Untuk menunjukkan satu node, 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 yang berdekatan, urutannya bisa 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),(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
Mengecualikan zona yang diberi anotasi
Gunakan flag exclude_annotated_zone dalam perintah vaictl untuk mengonfigurasi deteksi gerakan di dalam zona atau di luar zona.
Boolean. Defaultnya adalah salah (false).
Kecualikan zona yang diberi anotasi adalah input boolean dari pengguna, yang menunjukkan apakah pengguna ingin mengecualikan zona yang diberi anotasi dalam deteksi gerakan atau tidak.
- Jika disetel ke
true, zona yang diberi anotasi akan bertindak sebagai zona negatif. Gerakan di zona yang diberi anotasi tidak akan terdeteksi.
*Hanya jalankan deteksi gerakan di luar zona input.
- Jika disetel ke false, zona akan bertindak sebagai zona positif, tempat deteksi gerakan akan difokuskan.
*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 sepanjang video". Namun, dengan bantuan zona deteksi gerakan, kita dapat menutupi 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, dalam Proc. IEEE Workshop on Change Detection (CDW-2012) di CVPR-2012, Providence, RI, 16-21 Jun., 2012
Persiapan variabel lingkungan
Variabel project cloud Google.
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 salah satu dari bawah 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.
Fokuskan 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.
Mengirimkan streaming video dengan filter gerakan
Mengirim peristiwa gerakan ke konsol cloud
Anda dapat menggunakan vaictl untuk melakukan streaming data video output ke konsol cloud. Mulai dengan mengaktifkan Vision AI API di Konsol Cloud.
Mendaftarkan aliran baru
- Klik tab aliran di panel kiri Vertex AI Vision.
- Klik Daftar
- Di kolom Nama aliran data, masukkan
motion-detection-stream - Di wilayah, masukkan
us-central1 - Klik daftar
Mengirim hasil ke streaming
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.
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 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.
Mengirim hasil ke penyimpanan lokal
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.
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 ini.
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, akhiri operasi SDK vaictl 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