Konfigurasi
Referensi lengkap format sub_analytics, parameter tiap logic, konfigurasi garis/zona, atribut, environment variable, dan argumen aplikasi Vehicle Analytics.
Parameter di halaman ini dikirim sebagai body JSON saat membuat pipeline (POST /pipeline/{node_num}/{stream_id}/{analytic_id}) atau mengubahnya (PUT pada endpoint yang sama). Struktur body berbeda antara varian multi-logic (NFV4-MVA, NFV4-MVAA, NFV4-MVAS) dan varian single-logic (NFV4-VC, NFV4-VC-HW, NFV4-VD, NFV4-VAS, NFV4-VCAT).
Vehicle Analytics tidak menyediakan preset konfigurasi (GET /config/preset/{analytic_id}/ mengembalikan daftar kosong) — berbeda dari Face Recognition.
Varian Multi-Logic (NFV4-MVA, NFV4-MVAA, NFV4-MVAS)
Body berisi object_confidence_threshold (default 0.4) dan array sub_analytics — satu objek per logic yang ingin diaktifkan. Setiap objek wajib memiliki name (counting, roi_counting, dwelling, density, atau speed khusus NFV4-MVAS) dan is_active (boolean) — pipeline gagal start dengan error JSON jika salah satu objek pada sub_analytics tidak memiliki is_active.
{
"object_confidence_threshold": 0.4,
"colordet_crop_w": 0.8,
"colordet_crop_h": 0.8,
"sub_analytics": [
{ "name": "counting", "is_active": true, "areas": [ /* garis */ ] },
{ "name": "roi_counting", "is_active": false },
{ "name": "dwelling", "is_active": false },
{ "name": "density", "is_active": false }
]
}Parameter Global
| Parameter | Fungsi | Default | Kapan diubah |
|---|---|---|---|
object_confidence_threshold | Confidence minimum deteksi kendaraan (0–1); dipakai oleh sub-analitik yang tidak mengirim override sendiri | 0.4 | Naikkan (0.5–0.6) untuk mengurangi false positive; turunkan (0.25–0.35) untuk menangkap motor kecil atau kondisi cuaca buruk |
colordet_crop_w | Rasio lebar crop bounding box untuk klasifikasi warna (NFV4-MVAA) | 0.8 | Turunkan jika noise di tepi kendaraan memengaruhi deteksi warna |
colordet_crop_h | Rasio tinggi crop bounding box untuk klasifikasi warna | 0.8 | Turunkan jika bagian atas/bawah kendaraan mengganggu klasifikasi |
Sub-Analitik counting
| Parameter | Fungsi | Default | Kapan diubah |
|---|---|---|---|
object_confidence_threshold | Override confidence khusus counting | mengikuti global (0.4) | Sama seperti parameter global |
dumping_sampling_time | Interval agregasi event saat objek melewati garis (ms) | 1000 | Turunkan (500–800) untuk kendaraan cepat di highway; naikkan (2000–3000) untuk toll gate |
dump_ignore_iou_threshold | Threshold IoU untuk menghapus kandidat dump duplikat (0–1) | 0.2 | Naikkan (0.3–0.5) jika terjadi double counting pada kendaraan lambat |
enable_group_tracking | Aktifkan group tracking untuk mendeteksi konvoi | false | Aktifkan untuk traffic padat dengan banyak motor berkelompok |
minimum_tracking_height | Tinggi minimum bounding box (rasio tinggi frame) agar kendaraan di-track | 0.05 | Turunkan untuk mendeteksi kendaraan yang jauh dari kamera |
maximum_tracking_objects | Jumlah maksimum objek yang di-track bersamaan | 30 | Naikkan (50–100) untuk jalan padat |
enable_visual_label | Tampilkan label kelas pada overlay live view | false | Aktifkan untuk debugging visual |
areas | Daftar garis counting — lihat format di bawah | satu garis default horizontal di y = 0.5 | Definisikan garis sesuai jalur/lajur yang ingin dihitung |
attributes | Konfigurasi klasifikasi atribut — lihat Atribut | — | Hanya diproses pada NFV4-MVAA |
Sub-Analitik roi_counting
| Parameter | Fungsi | Default | Kapan diubah |
|---|---|---|---|
object_confidence_threshold | Override confidence khusus roi_counting | mengikuti global | Sama seperti parameter global |
areas | Daftar zona polygon — sisi polygon diperlakukan sebagai garis counting dua arah | satu zona default seluruh frame | Definisikan zona masuk/keluar |
attributes | Konfigurasi atribut | — | Hanya diproses pada NFV4-MVAA |
dumping_sampling_time dan dump_ignore_iou_threshold diterima pada body roi_counting, tetapi karena kode pengecekannya memakai kunci yang salah eja (dumpling_sampling_time, bukan dumping_sampling_time — lihat src/packages/multi_logics/routines.hpp:156-161), nilai yang Anda kirim tidak pernah diterapkan. roi_counting selalu memakai nilai bawaan internal handler untuk kedua parameter ini. Ini adalah keterbatasan kode saat ini, bukan kesalahan konfigurasi Anda.
Sub-Analitik dwelling
| Parameter | Fungsi | Default | Kapan diubah |
|---|---|---|---|
object_confidence_threshold | Override confidence khusus dwelling | mengikuti global | Sama seperti parameter global |
dwelling_treshold_alert_sec | Ejaan treshold sesuai kunci JSON yang dibaca kode. Durasi (detik) sebelum event alert dikirim saat objek masih di zona; 0 menonaktifkan alert dini | 0 | Set mis. 60 untuk alert parkir ilegal setelah 1 menit |
minimum_dwelling_sec | Durasi minimum (detik) di zona agar event dihasilkan | 2 (dari DWELLING_MINIMUM_DWELLING_SEC) | Naikkan untuk mengurangi noise dari kendaraan yang sekadar melambat |
idle_time_sec | Jeda (detik) setelah objek tak lagi terdeteksi sebelum dianggap keluar | 1 | Naikkan (10–30) jika kendaraan sering hilang sesaat (occlusion singkat) |
object_intersect_threshold | Threshold interseksi untuk mencocokkan deteksi baru dengan objek yang di-track (0–1) | 0.85 | Turunkan ke 0.7 jika kendaraan di tepi zona tidak terdeteksi |
minimum_object_area_size | Luas minimum bounding box (piksel²) agar kendaraan dihitung; untuk motorcycle, threshold efektif dibagi 10 | 5000 | Turunkan untuk kendaraan yang lebih kecil/jauh dari kamera |
sharpness_filter_threshold | Filter ketajaman crop sebelum dump (0–10) | 0 | Naikkan untuk menolak crop buram |
enable_group_tracking | Aktifkan group tracking | false | Aktifkan untuk konvoi kendaraan |
only_dump_exit | Hanya kirim event saat objek benar-benar keluar zona (alasan dump = Exit Line); dump akibat time-over/tracker-mati/inaktif diabaikan | false (dari DWELLING_ONLY_DUMP_EXIT) | Aktifkan jika Anda hanya ingin event ringkasan per kunjungan |
areas | Daftar zona polygon — lihat format di bawah, termasuk entry_lines/exit_lines | satu zona default seluruh frame | Definisikan zona dwelling |
attributes | Konfigurasi atribut | — | Hanya diproses pada NFV4-MVAA |
Sub-Analitik density
| Parameter | Fungsi | Default | Kapan diubah |
|---|---|---|---|
object_confidence_threshold | Override confidence khusus density | mengikuti global | Sama seperti parameter global |
interval | Interval pelaporan kepadatan (detik) | 10 | Naikkan (30–120) untuk mengurangi volume event; turunkan untuk update lebih sering |
inside | Hitung kendaraan di dalam (true) atau di luar (false) zona | true | Set false untuk menghitung kendaraan di luar zona |
dump_attributes | Sertakan atribut per kendaraan pada pipeline_data.detected | true | Set false jika rincian atribut tidak diperlukan (lebih ringan). Hanya efektif pada NFV4-MVAA |
areas | Daftar zona untuk estimasi kepadatan | satu zona default seluruh frame | Definisikan zona okupansi |
Sub-Analitik speed (NFV4-MVAS saja)
| Parameter | Fungsi | Default | Kapan diubah |
|---|---|---|---|
object_confidence_threshold | Override confidence khusus speed | mengikuti global | Sama seperti parameter global |
speed_threshold_kmh | Kecepatan minimum (km/jam) agar event dipancarkan; 0 = kirim semua | 0 | Naikkan untuk hanya mendapat event kendaraan yang melebihi batas kecepatan |
minimum_tracking_height | Sama seperti pada counting | 0.05 | — |
maximum_tracking_objects | Sama seperti pada counting | 30 | — |
speed_smoothing_alpha | Faktor smoothing exponential moving average (0–1) | 0.5 | Naikkan agar estimasi lebih responsif tapi lebih noisy |
min_time_delta_ms | Delta waktu minimum antar pengukuran kecepatan (ms) | 30 | Naikkan jika hasil kecepatan terlalu noisy pada frame rate tinggi |
use_average_speed | Pakai kecepatan rata-rata (total jarak/total waktu) alih-alih EMA instan | true | Set false untuk kecepatan instan yang lebih responsif terhadap perubahan |
min_displacement_m | Perpindahan minimum (meter) sebelum event kecepatan dihasilkan | 1.0 | Naikkan untuk menyaring kendaraan yang hampir diam |
average_speed_frame_count | Jumlah frame terakhir untuk menghitung rata-rata kecepatan; 0 = semua frame | 5 | Sesuaikan dengan frame rate stream |
bbox_stability_threshold | Perubahan fraksional maksimum lebar/tinggi bbox antar frame sebelum pengukuran dilewati (redam noise oklusi) | 0.5 | Turunkan jika kecepatan sering melonjak akibat bbox tidak stabil |
plane_calibration.length_01_23 | Jarak dunia nyata (meter) antara titik kalibrasi 0-1 dan 2-3 | 10.0 | Ukur langsung di lapangan sesuai jarak dua garis referensi |
plane_calibration.width_03_12 | Jarak dunia nyata (meter) antara titik kalibrasi 0-3 dan 1-2 | 5.0 | Ukur langsung di lapangan |
plane_calibration.points | 4 titik kalibrasi {x, y} ternormalisasi pada frame, urut mengelilingi area kalibrasi | [] (kosong) | Wajib diisi tepat 4 titik — tanpa ini, homography tidak dapat dihitung (log Speed estimation: failed to compute homography, src/logics/speed_estimation/speed_estimation.hpp:217) dan estimasi kecepatan tidak valid |
Layanan atribut kendaraan (invoke_service<attribute_classification<vehicle_attribute>>) dipanggil untuk setiap kandidat dump pada NFV4-MVAS, sama seperti NFV4-MVAA. Namun fungsi yang menggabungkan hasilnya ke pipeline_data.attributes (src/handler/helper/snapshot.hpp:379-395, pipeline_data_append) hanya menangani analytic_id NFV4-MPAA, NFV4-MPA2, NFV4-MVAA, dan NFV4-PPE — tidak ada cabang untuk NFV4-MVAS. Akibatnya, meski Anda mengirim attributes pada body NFV4-MVAS, field color/type/brand tidak akan muncul pada event; hanya attributes.vehicle (label + confidence deteksi) yang selalu ada. Jika Anda butuh atribut kendaraan yang lengkap, gunakan NFV4-MVAA tanpa speed, atau jalankan NFV4-MVAA dan NFV4-MVAS berdampingan pada stream yang sama.
Format areas
Field areas dikirim di dalam masing-masing objek sub-analitik, bukan di level atas body.
Garis (counting) — array objek:
{ "name": "Gate A", "points": [{"x": 0.2, "y": 0.5}, {"x": 0.8, "y": 0.5}], "direction": "both", "bidirection": true }| Field | Fungsi | Default |
|---|---|---|
name | Nama garis; muncul kembali di area_name pada event | wajib |
points | Tepat 2 titik {x, y} ternormalisasi (0–1) | wajib |
direction | in, out, atau both | both |
bidirection | Hitung crossing kedua arah | true |
Zona (roi_counting, dwelling, density) — array objek:
{
"name": "Parking Zone A",
"roi_type": "whitelist",
"points": [{"x":0,"y":0.3}, {"x":0.4,"y":0.3}, {"x":0.4,"y":0.8}, {"x":0,"y":0.8}],
"entry_lines": [[0, 1]],
"exit_lines": [[2, 3]]
}| Field | Fungsi | Default |
|---|---|---|
name | Nama zona; muncul kembali di area_name/area pada event | wajib |
points | Minimal 3 titik {x, y} ternormalisasi, urut mengelilingi zona | wajib |
roi_type | whitelist/blacklist — diterima tetapi pada kode saat ini tidak ada logic yang membaca nilai ini | whitelist |
entry_lines / exit_lines | Hanya untuk dwelling: pasangan indeks titik (0-based, sesuai urutan points) yang menandai sisi polygon tersebut sebagai entry/exit. Sisi yang tidak terdaftar dianggap exit secara default | [] |
Jika areas tidak dikirim sama sekali pada sub-analitik yang aktif: counting memakai satu garis horizontal default di y = 0.5; roi_counting/dwelling/density memakai satu zona default yang mencakup seluruh frame.
Atribut Kendaraan (NFV4-MVAA)
Dikirim di dalam field attributes pada entri sub-analitik counting atau roi_counting.
{ "attributes": { "color": true, "color_confidence_threshold": 0.5, "brand": true, "brand_confidence_threshold": 0.4 } }| Parameter | Fungsi | Default |
|---|---|---|
color | Aktifkan klasifikasi warna | true |
color_confidence_threshold | Threshold confidence warna (0–1) | 0.4 |
type | Aktifkan klasifikasi tipe kendaraan. Tidak berlaku untuk motorcycle | true |
type_confidence_threshold | Threshold confidence tipe (0–1) | 0.4 |
brand | Aktifkan klasifikasi merek. Tidak berlaku untuk motorcycle | false |
brand_confidence_threshold | Threshold confidence merek (0–1) | 0.3 |
Nilai atribut yang mungkin: color — black, white, gray, silver, red, blue, yellow, orange, brown, green, maroon, golden, purple, other; type — SUV, MPV, wagon, hatchback, sedan, pickup, convertible, van, truck, other; brand — 24 merek umum (Toyota, Honda, Mercedes-Benz, BMW, Suzuki, Daihatsu, Mitsubishi, Nissan, Hyundai, Mazda, Wuling, Lexus, MINI, Land Rover, Porsche, Ford, Volkswagen, Chevrolet, KIA, Jeep, Chery, Isuzu, MG, Audi) atau other.
Varian Single-Logic
NFV4-VC, NFV4-VC-HW (Vehicle Counting)
Body hanya berisi object_confidence_threshold (default 0.4) dan areas (format garis, sama seperti sub-analitik counting di atas) di level atas — tidak ada sub_analytics.
{
"object_confidence_threshold": 0.4,
"dumping_sampling_time": 2000,
"areas": [
{ "name": "Lane 1", "points": [{"x": 0.2, "y": 0.5}, {"x": 0.8, "y": 0.5}], "direction": "both" }
]
}NFV4-VC-HW menggunakan body yang identik, tetapi mengabaikan label motorcycle selain pedestrian.
NFV4-VD (Vehicle Dwelling)
Body berisi object_confidence_threshold (default 0.4) dan areas (format zona polygon) di level atas — tanpa dwelling_treshold_alert_sec, minimum_dwelling_sec, atau parameter dwelling lain yang tersedia pada varian multi-logic.
{
"object_confidence_threshold": 0.4,
"areas": [
{ "name": "No Parking Zone", "points": [{"x":0.1,"y":0.2}, {"x":0.6,"y":0.2}, {"x":0.6,"y":0.9}, {"x":0.1,"y":0.9}] }
]
}NFV4-VAS (Vehicle Aerial Surveilance, POC)
Tidak menerima areas — pipeline memproses seluruh frame.
| Parameter | Fungsi | Default |
|---|---|---|
overlap_threshold | IoU minimum antara dua bounding box agar dianggap tumpang-tindih | 0 |
active_dump_threshold | Jumlah frame minimum overlap harus bertahan sebelum event di-dump saat overlap berakhir | 3 |
inactive_dump_threshold | Jumlah frame overlap boleh terputus sebelum pasangan objek dianggap benar-benar berpisah | 4 |
NFV4-VCAT (Vehicle Counting Attribute, POC)
Body berisi areas (format garis, sama seperti counting) — kendaraan yang melewati garis dicocokkan terhadap database embedding kendaraan yang telah di-enroll. Tidak menerima parameter atribut warna/tipe/merek.
Environment Variable
| Variable | Berlaku untuk | Default | Fungsi |
|---|---|---|---|
DWELLING_MINIMUM_DWELLING_SEC | Semua sub-analitik dwelling pada NFV4-MVA/NFV4-MVAA/NFV4-MVAS | 2 | Nilai default minimum_dwelling_sec jika tidak dikirim di body |
DWELLING_ONLY_DUMP_EXIT | Sama seperti di atas | 0 (false) | Nilai default only_dump_exit jika tidak dikirim di body |
Argumen Aplikasi
| Argumen | Default | Fungsi |
|---|---|---|
--fremis-coordinator-address | 127.0.0.1:4006 | Dilewatkan ke routine multi-logic saat pipeline dibuat. Relevan untuk varian analitik lain yang memanggil layanan koordinator eksternal; layanan atribut kendaraan sendiri dipanggil sebagai service internal pipeline, bukan lewat alamat ini. |
--db-disable-event-store | false | Jika true, event tidak disimpan ke database lokal node — hanya dipancarkan ke event channel WebSocket. |
Penjelasan lengkap ada di Configuration Reference.
Persyaratan
Spesifikasi kamera dan panduan penempatan kamera agar Vehicle Analytics — counting, dwelling, density, dan estimasi kecepatan — bekerja optimal.
Best Practices & Troubleshooting
Panduan penempatan kamera dan konfigurasi garis/zona, keterbatasan yang terverifikasi dari kode, dan runbook untuk pesan error umum Vehicle Analytics.