Nodeflux Central
Crowd Estimation

Crowd Estimation

Estimasi jumlah orang dan kepadatan kerumunan berbasis density map — analitik NFV4-CE untuk area sangat padat.

Crowd Estimation (NFV4-CE) adalah modul analitik Visionaire yang memperkirakan jumlah orang dalam area pengawasan menggunakan pendekatan density map regression — bukan tracking individu. Model memproses setiap frame, menghasilkan peta kepadatan piksel, lalu mengintegrasikan nilai kepadatan di dalam setiap ROI untuk menghasilkan estimasi jumlah orang secara periodik.

Kapan menggunakan NFV4-CE versus People Analytics?

Gunakan People Analytics (NFV4-MPAA / NFV4-MPA2) jika Anda membutuhkan tracking per-individu, counting berbasis line-crossing, atau klasifikasi atribut demografis — dan jumlah orang dalam frame tidak melebihi sekitar 50 orang.

Gunakan Crowd Estimation (NFV4-CE) jika area Anda berpotensi sangat padat (konser, stasiun transit, alun-alun, tempat wisata, atau pasar) dan Anda membutuhkan estimasi kepadatan yang andal meski tracking individu tidak memungkinkan. Lihat People Analytics untuk perbandingan lengkap.


Apa yang Dilakukan

Kemampuan

  • Estimasi jumlah orang per ROI — setiap ROI polygon yang Anda definisikan menghasilkan estimasi jumlah orang secara independen.
  • Density map regression — model menghasilkan peta kepadatan piksel yang lebih akurat dari counting berbasis bounding box pada kerumunan padat karena tidak bergantung pada deteksi bounding box per orang yang saling tumpang tindih.
  • Mode hibrida kepadatan rendah — pada kerumunan kecil (di bawah ambang batas internal), pipeline secara otomatis mengaktifkan deteksi tambahan berbasis person detection untuk meningkatkan akurasi.
  • Event periodik — setiap interval (default 10 detik), pipeline menerbitkan event berisi estimasi rata-rata, nilai minimum, dan nilai maksimum selama interval tersebut.
  • Visualisasi overlay — frame yang ditampilkan via MJPEG menampilkan titik kepadatan dan label estimasi per ROI secara real-time.

Yang TIDAK Dilakukan

  • Tidak melakukan tracking individu — tidak ada tracker_id per orang; gunakan People Analytics jika Anda memerlukan identitas atau rute individu.
  • Tidak melakukan counting line-crossing.
  • Tidak menghasilkan atribut demografis (usia, gender, warna pakaian, dll.).
  • Tidak mengenali identitas wajah — gunakan Face Recognition untuk itu.

Use Cases


Cara Kerja

Frame Video Head Detection(Service 0) Density Map Regression Filter per ROI Polygon Integrasi Titik Kepadatan Estimasi Jumlah Orang Event Periodik(setiap interval detik)

Pipeline bekerja dalam dua tahap komplementer:

  1. Density map regression (selalu aktif) — model utama memproses seluruh frame dan menghasilkan peta distribusi kepala orang dalam bentuk titik-titik kepadatan (bukan bounding box). Pendekatan ini tidak terganggu oleh occlusion parah karena mengestimasi probabilitas distribusi kepadatan, bukan mendeteksi setiap individu secara eksplisit.

  2. Secondary person detection (aktif secara adaptif) — ketika estimasi kerumunan rendah (di bawah ambang batas internal ~10 orang), pipeline mengaktifkan deteksi orang berbasis bounding box sebagai pelengkap untuk meningkatkan akurasi pada kerumunan kecil. Deteksi ini dinonaktifkan secara otomatis ketika kerumunan sangat padat (lebih dari ~500 estimasi).

Setiap interval, rata-rata estimasi dari seluruh frame selama interval tersebut dihitung dan dipublikasikan sebagai Event bersama nilai minimum dan maksimum historis selama interval tersebut.


Persyaratan

Kamera

  • Posisi elevated atau wide-angle — kamera harus mencakup seluruh area kerumunan yang ingin dipantau. Posisi tinggi (di atas kerumunan, misalnya dari atap atau tiang setinggi 5–10 meter) memberikan visibilitas terbaik.
  • Sudut top-down atau semi-top-down lebih dianjurkan untuk Crowd Estimation dibandingkan untuk People Analytics, karena pendekatan density map tidak bergantung pada silhouette tubuh penuh.
  • FOV lebar — gunakan lensa wide-angle jika area yang dipantau sangat besar.
  • Resolusi minimal 720p — resolusi lebih tinggi meningkatkan akurasi pada area besar.

Lingkungan

  • Pencahayaan minimal 100 lux untuk akurasi model yang optimal.
  • Hindari kondisi backlit parah (cahaya matahari langsung dari belakang kerumunan ke lensa).

Dependensi

  • Lisensi seat NFV4-CE aktif pada deployment Visionaire.
  • GPU yang didukung: NVIDIA (T4, A2, A30, A100, L4, L40, Orin AGX) atau Intel Arc.
  • Minimum RAM: 2 GB per instance pipeline.
  • CPU: 3 core per instance pipeline.

Setting Up

Pasang Kamera di Posisi Elevated

Pastikan kamera mencakup seluruh area kerumunan yang ingin dipantau dari posisi elevated. Sudut pandang semi-top-down (45–80 derajat dari horizontal) memberikan keseimbangan antara cakupan area dan visibilitas kepala orang.

Daftarkan Stream

Daftarkan sumber video kamera sebagai Stream pada Node Visionaire:

POST /node/{node_num}/stream
Content-Type: application/json
Authorization: Basic <credentials>

{
  "stream_url": "rtsp://camera-ip/stream",
  "stream_id": "crowd-area-1"
}

Spawn Pipeline NFV4-CE

Buat Pipeline Crowd Estimation pada Stream yang telah terdaftar:

POST /pipeline/{node_num}/{stream_id}/NFV4-CE
Content-Type: application/json
Authorization: Basic <credentials>

{
  "areas": {
    "Plaza Utama": [
      {"x": 0.1, "y": 0.1},
      {"x": 0.9, "y": 0.1},
      {"x": 0.9, "y": 0.9},
      {"x": 0.1, "y": 0.9}
    ]
  },
  "interval": 10
}

Koordinat ROI menggunakan nilai relatif (0.0–1.0) terhadap dimensi frame.

Subscribe Event Channel

Berlangganan event melalui WebSocket untuk menerima estimasi secara real-time:

wss://{host}/event/{node_num}/{stream_id}/NFV4-CE

Atau berlangganan di tingkat stream untuk menerima semua event dari Stream tersebut:

wss://{host}/event/{node_num}/{stream_id}

Verifikasi dengan MJPEG Preview

Buka MJPEG stream untuk memverifikasi overlay visualisasi berjalan dengan benar — titik kepadatan dan label estimasi per ROI akan terlihat pada frame:

http://{host}/mjpeg/{node_num}/{stream_id}

Konfigurasi

Parameter API

Berikut parameter yang dapat dikonfigurasi saat membuat atau memperbarui Pipeline:

ParameterTipeDefaultKeterangan
areasobjectROI polygon per area. Key adalah nama area (string), value adalah array titik {x, y} dalam koordinat relatif (0.0–1.0). Wajib diisi.
intervalinteger10Interval dalam detik antara setiap event dump. Rentang valid: 1–99999.

Contoh konfigurasi dengan beberapa ROI:

{
  "areas": {
    "Pintu Masuk": [
      {"x": 0.0, "y": 0.0},
      {"x": 0.4, "y": 0.0},
      {"x": 0.4, "y": 1.0},
      {"x": 0.0, "y": 1.0}
    ],
    "Area Tengah": [
      {"x": 0.4, "y": 0.0},
      {"x": 1.0, "y": 0.0},
      {"x": 1.0, "y": 1.0},
      {"x": 0.4, "y": 1.0}
    ]
  },
  "interval": 30
}

Setiap ROI akan menghasilkan Event terpisah pada setiap interval. Jika Anda mendefinisikan 3 ROI, setiap interval akan menerbitkan 3 event.


Output yang Dihasilkan

Field Utama

Setiap event yang diterbitkan oleh pipeline berisi field pipeline_data dengan struktur berikut:

FieldTipeKeterangan
areastringNama ROI area sesuai yang didefinisikan dalam konfigurasi areas.
estimationintegerEstimasi rata-rata jumlah orang dalam ROI selama interval terakhir.
history_minintegerEstimasi minimum yang tercatat selama interval terakhir.
history_maxintegerEstimasi maksimum yang tercatat selama interval terakhir.
intervalintegerDurasi interval dalam detik (nilai konfigurasi saat pipeline dibuat).

Contoh Event

{
  "analytic_id": "NFV4-CE",
  "stream_id": "crowd-area-1",
  "pipeline_data": {
    "area": "Plaza Utama",
    "estimation": 23,
    "history_min": 18,
    "history_max": 31,
    "interval": 10
  },
  "timestamp": "2026-05-04T08:30:00Z"
}
{
  "analytic_id": "NFV4-CE",
  "stream_id": "crowd-area-1",
  "pipeline_data": {
    "area": "Plaza Utama",
    "estimation": 347,
    "history_min": 290,
    "history_max": 412,
    "interval": 30
  },
  "timestamp": "2026-05-04T20:15:00Z"
}

Best Practices

Penempatan Kamera

  • Posisikan kamera setinggi mungkin di atas area kerumunan — idealnya 5–10 meter atau lebih.
  • Sudut semi-top-down (60–80 derajat dari horizontal) memberikan cakupan area terbaik untuk density map.
  • Pastikan tidak ada objek besar (pohon, tiang, atap) yang menghalangi FOV secara signifikan.
  • Untuk area yang sangat luas, pertimbangkan beberapa kamera dengan ROI yang tumpang tindih sedikit sebagai redundansi.

Definisi ROI

  • Batasi ROI pada area yang benar-benar ingin dipantau kepadatannya — ROI yang terlalu besar mencakup area kosong akan mengencerkan estimasi.
  • Gunakan koordinat relatif (0.0–1.0) sehingga ROI tetap proporsional meski resolusi stream berubah.
  • Beri nama ROI yang deskriptif ("Pintu Masuk Utara", "Area Panggung") agar mudah diidentifikasi pada event.

Tuning Interval

  • Default interval: 10 cocok untuk monitoring real-time.
  • Naikkan ke interval: 30 atau interval: 60 untuk skenario analitik historis yang tidak memerlukan respons cepat — ini juga mengurangi volume event yang harus diproses aplikasi Anda.
  • Turunkan ke interval: 5 jika Anda memerlukan respons cepat untuk alert overcrowding (misalnya pada sistem keselamatan massa).

Threshold Overcrowding

Karena NFV4-CE tidak memiliki built-in alerting threshold, implementasikan logika alert di sisi aplikasi Anda:

# Contoh: alert jika estimasi melebihi batas kapasitas
KAPASITAS_MAKSIMAL = 500
if event["pipeline_data"]["estimation"] > KAPASITAS_MAKSIMAL:
    kirim_alert(f"Overcrowding terdeteksi: {event['pipeline_data']['estimation']} orang")

Limitations

  • Tidak ada tracker_id / identitas individu — NFV4-CE hanya menghasilkan angka estimasi agregat per ROI. Jika Anda memerlukan data per-individu, gunakan People Analytics.
  • Estimasi statistik, bukan hitungan exact — pipeline menggunakan density map regression yang menghasilkan estimasi probabilistik. Akurasi biasanya ±10–20% tergantung kondisi.
  • Akurasi turun pada pencahayaan sangat rendah — di bawah 50 lux, akurasi model menurun signifikan.
  • Sangat bergantung pada posisi kamera — model dilatih untuk sudut elevated; kamera setinggi bahu atau horizontal akan menghasilkan estimasi yang tidak akurat.
  • Objek non-manusia — bayangan besar, objek berwarna gelap, atau pola lantai tertentu dapat memengaruhi density map.
  • Frame rate pipeline rendah — pipeline berjalan pada 1 FPS untuk efisiensi komputasi; ini cukup untuk estimasi kepadatan tetapi tidak untuk analitik gerakan cepat.

Modul Terkait

On this page