Nodeflux Central
Vehicle Analytics (MVA/MVAA)

Vehicle Analytics (MVA/MVAA)

Analitik kendaraan real-time dengan counting, ROI counting, dwelling, density, dan klasifikasi atribut (warna, tipe, merek) untuk berbagai skenario traffic dan parkir.

Vehicle Analytics (MVA/MVAA)

Vehicle Analytics adalah analitik real-time untuk mendeteksi dan menganalisis kendaraan dalam video stream. Tersedia dalam dua varian: MVA (Multi-Logics Vehicle Analytics) untuk counting, dwelling, dan density, serta MVAA yang menambahkan klasifikasi atribut seperti warna, tipe, dan merek kendaraan.

Pada akhir halaman ini Anda akan memahami kemampuan Vehicle Analytics, cara kerjanya, dan cara mengonfigurasinya untuk skenario Anda. Untuk referensi endpoint API lengkap, lihat API Reference.


Apa yang Dilakukan

Kemampuan (Yang Dilakukan)

Vehicle Analytics mendeteksi empat jenis kendaraan — car, motorcycle, bus, dan truck — dan memproses setiap deteksi melalui empat sub-analitik secara paralel:

Sub-AnalitikDeskripsiContoh Penggunaan
CountingMenghitung kendaraan yang melewati garis virtualHitung kendaraan masuk/keluar parkir per lane
ROI CountingMenghitung kendaraan masuk/keluar area polygonMonitor zona drop-off atau loading bay
DwellingMendeteksi kendaraan yang berhenti di area tertentuAlert parkir ilegal, monitor loading bay overtime
DensityEstimasi jumlah kendaraan dalam area secara periodikReal-time occupancy parkir, kepadatan traffic

Varian MVAA menambahkan klasifikasi atribut per kendaraan:

AtributNilai yang DidukungCatatan
Warnablack, white, gray, silver, red, blue, yellow, orange, brown, green, maroon, golden, purple, otherWarna dominan body kendaraan
TipeSUV, MPV, wagon, hatchback, sedan, pickup, convertible, van, truck, otherUntuk label bus dan truck di-override otomatis ke bus/truck; untuk motorcycle field type tidak dikirim
MerekToyota, 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, otherDinonaktifkan secara default; untuk motorcycle field brand tidak dikirim

Apabila confidence atribut di bawah threshold yang dikonfigurasi, label akan menjadi unknown.

Yang TIDAK Dilakukan

  • Vehicle Analytics tidak mendeteksi pejalan kaki — label pedestrian otomatis diabaikan. Gunakan People Analytics untuk deteksi orang.
  • Vehicle Analytics tidak membaca nomor plat kendaraan. Gunakan License Plate Recognition untuk pembacaan plat.
  • Untuk motorcycle, atribut type dan brand tidak tersedia — hanya color yang dideteksi.

Use Cases

Parkir & Occupancy Monitoring

Real-time occupancy per zona menggunakan Density + ROI Counting. Kombinasikan dengan MVAA untuk identifikasi kendaraan tanpa LPR.

Traffic Flow & Volume Counting

Hitung volume kendaraan per lane di jalan raya atau persimpangan menggunakan Counting logic dengan multi-line.

Toll Gate Classification

Counting per gate dengan klasifikasi tipe kendaraan (MVAA) untuk penerapan tarif diferensial.

Deteksi Parkir Ilegal

Alert otomatis saat kendaraan berhenti lebih dari durasi yang dikonfigurasi di zona terlarang menggunakan Dwelling logic.

Loading Bay Management

Monitor durasi kendaraan di area bongkar-muat dan kirim notifikasi jika melebihi batas waktu operasional.


Cara Kerja

Input Deteksi Atribut — MVAA Multi-Logics Output Video Stream Vehicle Detection Filter Pedestrian Tracker Klasifikasi Warna / Tipe / Merek Counting ROI Counting Dwelling Density Event Bus

Video stream masuk dan diproses frame per frame pada 12 FPS. Setiap frame dianalisis oleh detektor kendaraan yang menghasilkan bounding box beserta confidence score dan label kelas. Deteksi pedestrian langsung dibuang, sedangkan deteksi kendaraan diteruskan ke tracker untuk mempertahankan identitas objek lintas frame.

Pada varian MVAA, setiap kendaraan yang di-track dikirim ke tahap klasifikasi atribut yang mengekstrak warna, tipe, dan merek dari area crop kendaraan. Hasil deteksi dan atribut kemudian diproses oleh keempat sub-analitik secara paralel, dan event yang dihasilkan dikirim ke event bus untuk dikonsumsi oleh sistem hilir.


Persyaratan

Persyaratan Kamera

AspekMinimumRekomendasi
Resolusi480 × 360 (480p)1280 × 720 (720p) atau lebih tinggi
Frame Rate12 FPS15–30 FPS
CodecH.264H.264 / H.265
Sudut pemasangan15° dari horizontal20°–45° dari horizontal
Tinggi pemasangan3 meter4–6 meter
Field of ViewMencakup seluruh jalurTanpa blind spot pada area target

Persyaratan Lingkungan

KondisiKeterangan
PencahayaanPencahayaan merata; hindari backlight atau bayangan besar langsung pada kendaraan
Malam hariKamera IR atau dengan cahaya lampu jalan yang cukup. Akurasi atribut warna menurun pada kondisi gelap.
Cuaca burukHujan lebat atau kabut pekat dapat menurunkan akurasi deteksi; turunkan object_confidence_threshold

Dependensi

  • Visionaire API berjalan dan dapat diakses pada VISIONAIRE_API_URL (default http://localhost:4004)
  • Stream video aktif dan dapat diakses oleh Visionaire sebelum pipeline dibuat
  • Lisensi NFV4-MVA atau NFV4-MVAA tersedia (seat tidak penuh)

Setting Up

Pilih Varian Analitik

Tentukan apakah Anda membutuhkan atribut kendaraan:

  • NFV4-MVA — counting, dwelling, density tanpa atribut. Lebih ringan di GPU (~16–20%).
  • NFV4-MVAA — semua fitur MVA ditambah klasifikasi warna, tipe, dan merek (~19–23% GPU).

Gunakan MVAA hanya jika informasi atribut dibutuhkan oleh sistem hilir Anda.

Tentukan Sub-Analitik yang Aktif

Aktifkan hanya sub-analitik yang diperlukan untuk meminimalkan overhead pemrosesan. Setiap sub-analitik memiliki konfigurasi independen:

Sub-AnalitikKapan Diaktifkan
countingPerlu data masuk/keluar per garis
roi_countingPerlu data masuk/keluar per zona polygon
dwellingPerlu alert kendaraan berhenti terlalu lama
densityPerlu laporan kepadatan periodik

Konfigurasi Garis dan Zona

Untuk counting, definisikan garis virtual menggunakan koordinat ternormalisasi (0–1 relatif terhadap dimensi frame). Letakkan garis di area dengan traffic flow lancar, bukan di dekat lampu merah atau area perlambatan.

Untuk ROI counting, dwelling, dan density, definisikan polygon zona. Gunakan minimal 3 titik per zona.

Semua koordinat dalam format [[x1, y1], [x2, y2]] untuk garis dan [[x1,y1], [x2,y2], ...] untuk polygon, di mana 0,0 adalah pojok kiri atas dan 1,1 adalah pojok kanan bawah frame.

Buat Pipeline via API

Kirim POST /pipeline/{node_num}/{stream_id}/{analytic_id} dengan request body berisi konfigurasi lengkap. Lihat API Reference untuk contoh request body.

Pipeline mulai memproses segera setelah respons 200 diterima.

Verifikasi dengan Snapshot atau MJPEG

Gunakan endpoint /snapshot atau /mjpeg untuk memverifikasi bahwa garis counting dan zona ROI sudah berada di posisi yang tepat sebelum pipeline digunakan secara penuh.


Konfigurasi

Parameter API

Parameter Global

ParameterTipeDefaultKapan Disesuaikan
object_confidence_thresholdfloat0.4Naikkan (0.5–0.6) untuk mengurangi false positive; turunkan (0.25–0.35) untuk menangkap motor kecil atau kondisi cuaca buruk
colordet_crop_wfloat0.8Turunkan jika terdapat noise pada tepi kendaraan mempengaruhi deteksi warna
colordet_crop_hfloat0.8Turunkan jika bagian atas/bawah kendaraan mengganggu klasifikasi warna

Counting Logic

ParameterTipeDefaultKapan Disesuaikan
dumping_sampling_timeint (ms)1000Turunkan (500–800) untuk kendaraan cepat di highway; naikkan (2000–3000) untuk toll gate
dump_ignore_iou_thresholdfloat0.2Naikkan (0.3–0.5) jika terjadi double counting pada kendaraan lambat
enable_group_trackingboolfalseAktifkan untuk traffic padat dengan banyak motor berkelompok
maximum_tracking_objectsint30Naikkan (50–100) untuk jalan padat; turunkan (15–20) untuk menghemat memori
minimum_tracking_heightfloat0.05Turunkan untuk mendeteksi kendaraan yang jauh dari kamera

Konfigurasi garis (field areas di dalam logic counting):

SettingApa yang DilakukanDefault
nameNama tampilan garis
pointsDua titik garis [{"x":x1,"y":y1},{"x":x2,"y":y2}] dalam koordinat normalized 0–1
direction"in", "out", atau "both""both"
bidirectiontrue jika menghitung kedua arahtrue

Untuk roi_counting, dwelling, dan density, gunakan areas berisi polygon (points minimal 3 titik dengan format {x, y}).

Dwelling Logic

ParameterTipeDefaultKapan Disesuaikan
dwelling_treshold_alert_secint (detik)0Set durasi alert (misal 60 untuk parkir ilegal >1 menit, 0 = nonaktifkan alert)
minimum_dwelling_secint (detik)2Naikkan untuk mengurangi noise event dari kendaraan yang sekadar melambat
idle_time_secint (detik)1Naikkan (10–30) jika kendaraan sering hilang sesaat dari deteksi (occlusion singkat)
object_intersect_thresholdfloat0.85Turunkan ke 0.7 jika kendaraan di tepi ROI tidak terdeteksi
minimum_object_area_sizeint (piksel²)5000Turunkan untuk kendaraan yang lebih kecil/jauh dari kamera

Penulisan dwelling_treshold_alert_sec dengan typo (treshold bukan threshold) sesuai dengan kunci konfigurasi yang diterima oleh source code.

Density Logic

ParameterTipeDefaultKapan Disesuaikan
intervalint (detik)10Naikkan (30–120) untuk mengurangi volume event; turunkan untuk update lebih sering
insidebooltrueSet false untuk menghitung kendaraan di luar ROI
dump_attributesbooltrueSet false jika rincian atribut per objek tidak diperlukan pada laporan density (lebih ringan)

Atribut MVAA

Konfigurasi atribut diletakkan di dalam field attributes pada masing-masing sub-analytic.

ParameterTipeDefaultKapan Disesuaikan
colorbooltrueSet false untuk menghemat resource jika warna tidak diperlukan
color_confidence_thresholdfloat0.4Naikkan (0.5–0.6) jika warna sering salah; pertimbangkan pencahayaan
typebooltrueSet false untuk menghemat resource jika tipe tidak diperlukan
type_confidence_thresholdfloat0.4Naikkan (0.5–0.6) untuk toll gate dengan tarif diferensial
brandboolfalseAktifkan hanya jika resolusi kamera memadai (kendaraan minimal 100×100 px)
brand_confidence_thresholdfloat0.3Sesuaikan setelah mengaktifkan brand detection

Output yang Dihasilkan

Setiap event memiliki struktur top-level berikut, dengan detail spesifik logic berada di field pipeline_data. Setiap event mewakili satu hasil sub-analytic — bukan array deteksi.

Field Top-LevelTipeDeskripsi
analytic_idstringNFV4-MVA atau NFV4-MVAA
stream_idstringID stream yang menghasilkan event
stream_namestringNama stream
node_numintegerNomor node yang memproses
timestampinteger (ms)Unix timestamp event
primary_textstringTeks utama (mis. label kendaraan atau nama area)
secondary_textstringTeks pelengkap (mis. arah, durasi, jumlah)
image_jpegstring (base64)Cuplikan frame saat event
pipeline_dataobjectPayload utama (lihat di bawah)

Field pipeline_data per Logic

FieldTipeTersedia Pada
logicstringsemua
labelstringcounting, roi_counting, dwelling (car/motorcycle/bus/truck)
confidencefloatcounting, roi_counting, dwelling
tracker_idintegercounting, roi_counting, dwelling
group_idintegercounting, roi_counting, dwelling
area_namestringcounting, roi_counting, dwelling
directionstringcounting, roi_counting
time_in / time_out / time_alertinteger (ms)dwelling
durationfloat (detik)dwelling
attributesobjectsemua varian; lebih lengkap di MVAA (color/type/brand)
areastringdensity (nama ROI)
estimationintegerdensity (jumlah kendaraan dalam ROI)
intervalinteger (detik)density
detectedarraydensity (rincian per kendaraan dengan tracker_id, bbox, label, confidence, dan attributes saat MVAA + dump_attributes: true)
event_idstringsemua

Contoh Event

{
  "analytic_id": "NFV4-MVA",
  "stream_id": "stream_001",
  "timestamp": 1705314600000,
  "primary_text": "car",
  "secondary_text": "in",
  "pipeline_data": {
    "logic": "counting",
    "label": "car",
    "confidence": 0.88,
    "tracker_id": 12,
    "group_id": 0,
    "area_name": "Gate A",
    "direction": "in",
    "attributes": {
      "vehicle": { "label": "car", "confidence": 0.88 }
    },
    "event_id": "1705314600000-3a1f9d4c"
  }
}
{
  "analytic_id": "NFV4-MVAA",
  "stream_id": "stream_001",
  "timestamp": 1705314600000,
  "primary_text": "car",
  "secondary_text": "in",
  "pipeline_data": {
    "logic": "counting",
    "label": "car",
    "confidence": 0.88,
    "tracker_id": 12,
    "area_name": "Gate A",
    "direction": "in",
    "attributes": {
      "vehicle": { "label": "car", "confidence": 0.88 },
      "color": { "label": "white", "confidence": 0.91 },
      "type":  { "label": "SUV",   "confidence": 0.85 },
      "brand": { "label": "Toyota","confidence": 0.72 }
    }
  }
}
{
  "analytic_id": "NFV4-MVA",
  "stream_id": "stream_001",
  "timestamp": 1705314600000,
  "primary_text": "No Parking Zone",
  "secondary_text": "180.000 s",
  "pipeline_data": {
    "logic": "dwelling",
    "label": "truck",
    "confidence": 0.78,
    "tracker_id": 5,
    "area_name": "No Parking Zone",
    "time_in": 1705314420000,
    "time_out": null,
    "time_alert": 1705314480000,
    "duration": 180.0,
    "attributes": {
      "vehicle": { "label": "truck", "confidence": 0.78 },
      "from": { "label": "", "confidence": 0 },
      "to": { "label": "", "confidence": 0 }
    }
  }
}
{
  "analytic_id": "NFV4-MVA",
  "stream_id": "stream_001",
  "timestamp": 1705314600000,
  "primary_text": "Parking Lot",
  "secondary_text": "45",
  "pipeline_data": {
    "logic": "density",
    "interval": 10,
    "area": "Parking Lot",
    "estimation": 45,
    "detected": [
      {
        "tracker_id": 11,
        "label": "car",
        "confidence": 0.84,
        "bbox": { "top": 220, "left": 310, "width": 180, "height": 120 }
      }
    ]
  }
}

Best Practices

Penempatan Kamera

SkenarioSudutTinggiCatatan
Jalan raya / highway20°–35°5–8 meterPosisi agak menyamping terhadap arah traffic; shutter speed tinggi untuk motion blur
Parkir / area terbuka30°–45°3–5 meterPastikan seluruh area target masuk frame
Persimpangan25°–40°4–6 meterHindari posisi menghadap langsung lampu kendaraan
Toll gate20°–30°3–4 meterSatu kamera per lane untuk akurasi tertinggi

Konfigurasi Garis Counting

  • Letakkan garis di area dengan flow lancar, bukan di dekat lampu merah atau area antrean
  • Untuk toll gate, gunakan dumping_sampling_time: 2000 karena kendaraan bergerak lambat
  • Hindari garis yang terlalu pendek; pastikan seluruh lebar jalur tercakup
  • Test konfigurasi dengan berbagai jenis kendaraan (motor, truk) sebelum go-live

Konfigurasi Zona (ROI/Dwelling/Density)

  • Zona dwelling sebaiknya mengecualikan area keluar-masuk agar kendaraan yang sekadar melintas tidak memicu event
  • Untuk parking occupancy, definisikan zona per area (bukan satu zona besar) untuk granularitas yang lebih baik
  • Set idle_time_sec sesuai dengan pola traffic — area dengan occlusion tinggi perlu nilai lebih besar

Limitations

  • Occlusion traffic padat — pada kondisi kendaraan yang sangat berdekatan atau bertumpuk, beberapa kendaraan mungkin tidak terdeteksi atau tracker kehilangan ID
  • Malam tanpa inframerah — akurasi deteksi menurun signifikan pada kondisi sangat gelap tanpa pencahayaan buatan atau kamera IR
  • Sudut ekstrem (top-down) — sudut kamera mendekati 90° (langsung ke bawah) mengurangi akurasi deteksi tipe kendaraan; sudut 20°–45° optimal
  • Kecepatan sangat tinggi — kendaraan bergerak lebih cepat dari ~120 km/jam pada jarak jauh dapat menyebabkan motion blur yang mengurangi akurasi
  • Warna kendaraan gelap di malam hari — klasifikasi warna (MVAA) dapat kurang akurat pada kondisi pencahayaan rendah atau kendaraan kotor
  • Motorcycle — atribut type dan brand tidak tersedia untuk label motorcycle

Modul Terkait

On this page