Nodeflux Central
Statistics

Statistics: People Analytics

Logika Counting, Dwelling, dan Density (kepadatan per-frame dan ambang crowding) untuk statistik orang (analitik MPA), atribut demografis termasuk MPA2, tiga dashboard Bawaan, komponen library, dan contoh query.

Pengenalan

Bayangkan pengelola pusat perbelanjaan yang ingin tahu tiga hal tentang pengunjungnya: berapa yang masuk dan keluar (penghitungan), berapa lama mereka bertahan di depan etalase dan apakah mereka akhirnya masuk (durasi tinggal), serta seberapa padat suatu area pada jam tertentu (kepadatan). Statistik People Analytics menjawab ketiganya dari event yang dihasilkan analitik orang Visionaire, lengkap dengan atribut seperti gender, usia, masker, dan warna pakaian.

Pada Statistics, seluruh varian analitik orang digabung dalam satu analitik registry dengan ID MPA (label People Analytics) yang memiliki tiga Logika (sub-mode): Penghitungan (counting, bawaan), Dwelling (dwelling), dan Kepadatan (density). Setiap logika punya metrik sendiri, sedangkan dimensi atribut dibagi bersama. Lenz menyertakan satu dashboard Bawaan per logika.

Varian tipe event yang tercakup: NFV4-MPA, NFV4-MPAA, NFV4-MPA2, dan NFV4-MPAW (deteksi senjata). Dimensi berlabel MPA2 di editor widget (body_type, face_expression, footwear_color, gloves, upper_cloth, lower_cloth, people) hanya berisi data dari stream yang menjalankan NFV4-MPA2; saat dipilih, backend otomatis membaca agregat MPA2 sehingga angka widget itu tidak mencakup stream MPAA lama. Dimensi weapon_type hanya berisi data dari stream NFV4-MPAW.


Cara Menggunakan

Membaca Dashboard Bawaan Counting

Buka dashboard Bawaan People Analytics untuk logika Counting

Di daftar Dashboard, buka kartu Bawaan People Analytics (MPAA) dengan akhiran Counting. Dashboard ini mendeklarasikan NFV4-MPA:counting, NFV4-MPAA:counting, dan NFV4-MPA2:counting untuk Tampilkan di Detail Stream. Dua kartu lainnya (Density dan Dwelling) mengikuti pola yang sama untuk logikanya masing-masing.

Salah satu dashboard bawaan People Analytics (MPAA): scorecard total, tren harian, distribusi per stream, heatmap jam tersibuk, dan kontainer Tab atribut demografis. Tersedia satu dashboard per logika: Counting, Density, dan Dwelling.
Salah satu dashboard bawaan People Analytics (MPAA): scorecard total, tren harian, distribusi per stream, heatmap jam tersibuk, dan kontainer Tab atribut demografis. Tersedia satu dashboard per logika: Counting, Density, dan Dwelling.

Baca angka kunci dan arah

Tiga Scorecard: Total people, People in, dan People out. Line chart People over time by direction menggambar total per hari dipecah per nilai Direction (in, out). Bagian In & Out Breakdown menambahkan bar Gender by direction dan In & Out by area untuk melihat siapa yang masuk lewat area mana.

Telusuri atribut dan jam tersibuk

Bagian Stream Distribution (donat By Stream dan tabel Stream details) serta heatmap People by hour mengikuti pola dashboard Bawaan lainnya. Kontainer Tab Attributes memuat tab Direction, Gender, Age, Mask, Glasses, Head covering, warna pakaian, dan atribut MPA2 seperti Body type dan Upper cloth.

Cari jam paling dan paling tidak ramai

Bagian Busiest & Quietest Hours membandingkan Total people per jam, bukan per hari: bar horizontal Busiest hours (10 jam dengan angka tertinggi) dan Quietest hours (10 terendah), lalu tabel Busiest hours by stream dan Quietest hours by stream yang memecah 10 jam teratas/terbawah itu per stream. Karena widget ini memakai granularitas Per jam, rentang tanggal yang bisa dipilih maksimal 31 hari.


Membaca Dashboard Bawaan Dwelling

Baca durasi tinggal

Baris atas dashboard Dwelling menampilkan Visits, Avg dwell duration, Min dwell duration, dan Max dwell duration (detik). Donat Dwell duration distribution membagi kunjungan ke empat pita: Short visits (0-60s), Medium visits (61-300s), Long visits (301-900s), dan Very long visits (>900s). Line chart Dwell duration over time memplot rata-rata, median, dan maksimum per hari.

Baca perilaku pengunjung

Bagian Visitor Behavior mengklasifikasikan setiap kunjungan: Entered (melintasi garis masuk), Lookers (tidak masuk tetapi bertahan lebih dari 10 detik), dan Passersby (tidak masuk dan bertahan 10 detik atau kurang). Scorecard Entered, Did not enter, Solo visitors, dan Group visitors dilengkapi donat Visitor behavior, bar Visitor behavior over time, dan bar Visitor behavior by solo/group yang memecah ketiga kelas berdasarkan dimensi Solo/Group.

Bagian Visitor Behavior pada dashboard People Analytics (MPAA) Dwelling: pengunjung yang masuk (Entered), melihat-lihat (Lookers), atau hanya lewat (Passersby), dipisah Solo dan Group.
Bagian Visitor Behavior pada dashboard People Analytics (MPAA) Dwelling: pengunjung yang masuk (Entered), melihat-lihat (Lookers), atau hanya lewat (Passersby), dipisah Solo dan Group.

Bandingkan area dan stream

Bagian Area Analysis berisi donat Solo vs group dan tabel Area details (Visits, Min/Avg/Max dwell duration, Entered, Lookers, Passersby per area). Bagian Stream Distribution dan heatmap Visits by hour menutup dashboard sebelum kontainer Longest & Shortest Stays.

Temukan area dengan kunjungan terlama dan tersingkat

Bagian Longest & Shortest Stays membandingkan durasi antar area: bar horizontal Longest stays by area (10 area dengan Max dwell duration tertinggi) dan Shortest stays by area (10 area dengan Min dwell duration terendah), lalu tabel Dwell time by stream and area per day yang merinci Visits serta durasi min/rata-rata/maks per stream, area, dan hari. Tab Attributes menutup dashboard.


Membaca Dashboard Bawaan Density

Baca kepadatan per frame

Empat Scorecard di baris atas: Total detections (setiap orang yang terdeteksi di tiap frame, dijumlahkan — bukan tingkat kepadatan, melainkan total throughput), Avg density, Peak density, dan Lowest density (jumlah orang per frame). Line Detections over time memplot total per hari, sedangkan People per frame over time memplot rata-rata, puncak, dan terendah per hari dalam satu grafik. Lowest density hanya menghitung frame yang memang mendeteksi orang — frame kosong tidak ikut menurunkan angkanya.

Bandingkan stream dan area

Bagian Stream Distribution berisi donat Detections by stream dan tabel Stream details (Total detections, Frames with people, Avg/Peak/Lowest density per stream). Bagian Area Analysis berisi bar Density by area (Avg dan Peak density) serta tabel Area details per stream dan area.

Atur ambang kepadatan (Crowding Threshold)

Bagian Crowding Threshold menjawab "seberapa sering dan seberapa lama suatu area menampung minimal N orang dalam satu frame". Scorecard Time occupied (persentase frame yang berisi minimal satu orang), Time above threshold dan Frames above threshold (persentase dan jumlah frame dengan minimal N orang), serta Frames observed (total frame yang diamati) dilengkapi line Time above threshold over time, bar Time above threshold by area, dan tabel Threshold by stream and area. N diatur lewat selektor At least pada metrik; dashboard Bawaan memakai N = 10, dan frame kosong tetap dihitung sebagai waktu yang diamati.

Periksa jam terpadat

Bagian Peak Time Analysis menampilkan heatmap Detections by hour dan Avg density by hour (people/frame). Tab Attributes menutup dashboard, dengan catatan bahwa baris atribut hanya terisi dari frame yang mendeteksi orang — irisan gender/usia dan sebagainya tidak berlaku untuk frame kosong.


Metrik & Dimensi

Logika Penghitungan (counting)

Prop

Type

Dimensi khusus logika ini: direction (Direction, string, biasanya in dan out).

Logika Dwelling (dwelling)

Rilis terbaru mengganti label Dwelling events menjadi Visits di seluruh metrik dwelling — nilai dan cara hitungnya sama, hanya labelnya yang berubah agar lebih jelas bagi operator.

Prop

Type

Dimensi khusus logika ini: party (Solo/Group, enum Solo, Group, Unknown).

Logika Kepadatan (density)

Selain total deteksi, logika ini menghitung kepadatan per frame: berapa orang yang terdeteksi dalam satu frame kamera, dirata-ratakan atau diambil puncak/terendahnya. Frame yang sama sekali tidak mendeteksi orang tidak ikut dihitung pada metrik per-frame, sehingga Avg/Lowest density tidak tertarik ke nol oleh waktu area kosong.

Prop

Type

Frames above threshold dan Time above threshold memakai parameter At least dengan pilihan tetap: 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 25, 30, 40, 50, 75, atau 100 orang per frame. Nilai di luar daftar ini ditolak dengan kode INVALID_PARAM.

Dimensi bersama

Tersedia untuk Kelompokkan dan Filter pada ketiga logika (semua filter memakai operator in):

DimensiLabelTipeNilai / catatan
stream_idStreamstringID stream
areaAreastringNama area yang digambar pada konfigurasi analitik
analytic_idAnalytic variantenumNFV4-MPA, NFV4-MPAA, NFV4-MPA2, NFV4-MPAW
genderGenderenumFemale, Male
ageAgeenumAdult, Child, Elderly, Unknown
maskMaskenumMask, No Mask
glassesGlassesenumGlasses, No Glasses
head_coveringHead coveringenumHat, Hijab, None, Unknown
upper_colorUpper colorstringWarna pakaian atas
lower_colorLower colorstringWarna pakaian bawah
body_typeBody typestringHanya MPA2
face_expressionFace expressionstringHanya MPA2
footwear_colorFootwear colorstringHanya MPA2
glovesGlovesstringHanya MPA2
upper_clothUpper clothstringHanya MPA2 (jenis pakaian atas)
lower_clothLower clothstringHanya MPA2 (jenis pakaian bawah)
peoplePeople attributesstringHanya MPA2; atribut gabungan orang
weapon_typeWeapon typestringHanya MPAW; unknown bila model tidak memberi verdict

Granularitas: hour, day, week, month, quarter, year, atau kosong. Batas rentang: 31 hari (hour), 365 hari (day), 730 hari (lainnya). Pengelompokan Harian kini mengikuti hari kalender lokal site (bawaan WIB/Asia Jakarta, dapat dikonfigurasi per deployment) untuk ketiga logika, bukan lagi jendela 07:00–07:00 seperti sebelumnya.


Komponen Library

Panel Tambah komponen untuk Analytic People Analytics meminta Logika lebih dulu, lalu menawarkan:

LogikaKomponen
PenghitunganKPI Total people, People in, People out; Tren harian; Periode puncak; Periode tersibuk / Periode tersepi; Direction dari waktu ke waktu; Distribusi per atribut orang (Gender, Age, Mask, Glasses, Head covering, Upper color, Lower color, dan atribut MPA2); Arus arah (proporsi in vs out); Gender per arah dan Area per arah; Stream teratas; Distribusi stream; Perbandingan Area
DwellingKPI Visits, Avg dwell duration, Median dwell duration (approx), Min dwell duration, Max dwell duration, Entered, Did not enter, Avg dwell (entered); Tren harian; Periode puncak; Periode tersibuk / Periode tersepi; Distribusi per atribut; Perilaku pengunjung; Perilaku pengunjung dari waktu ke waktu; Solo vs grup; Perilaku pengunjung per solo/grup; Ringkasan Area; Durasi menetap dari waktu ke waktu; Distribusi durasi dwell; Proporsi durasi dwell; Stream teratas; Distribusi stream; Perbandingan Area
KepadatanKPI Total detections, Avg density, Peak density, Lowest density, Frames observed, Time occupied; Tren harian; Periode puncak; Periode tersibuk / Periode tersepi; Distribusi per atribut; Stream teratas; Distribusi stream; Perbandingan Area

Komponen Periode tersibuk / Periode tersepi dan Perbandingan Area memakai peringkat 10 teratas/terbawah secara bawaan. Bagian Busiest & Quietest Hours, Longest & Shortest Stays, dan Crowding Threshold pada dashboard Bawaan bukan komponen Library yang bisa ditambahkan langsung — widget itu disusun manual di editor widget memakai kontrol Urutan (Semua/N teratas/N terbawah, tersedia untuk visualisasi Bar dan Tabel) dan, untuk metrik berparameter seperti Frames with ≥N people, selektor At least yang muncul otomatis saat metrik itu dipilih.


Contoh Query API

Perilaku pengunjung per Solo/Group untuk satu area selama 30 hari (setara widget Visitor behavior by solo/group):

POST /api/statistics/query
{
  "analytic": "MPA",
  "sub_mode": "dwelling",
  "metrics": ["entered_count", "looker_count", "passerby_count"],
  "dimensions": ["party"],
  "granularity": "",
  "time_range": { "start": "2026-08-20", "end": "2026-09-18" },
  "filters": {
    "area": { "op": "in", "value": ["Etalase A"] }
  },
  "viz_kind": "bar"
}

Penghitungan per jam untuk satu hari dengan pemisahan arah (setara drill-down pada People over time by direction):

POST /api/statistics/query
{
  "analytic": "MPA",
  "sub_mode": "counting",
  "metrics": ["total_people"],
  "dimensions": ["direction"],
  "granularity": "hour",
  "time_range": { "start": "2026-09-17", "end": "2026-09-17" },
  "filters": {
    "stream_id": { "op": "in", "value": ["stream-lobby-01"] }
  }
}

Seberapa sering area menampung minimal 20 orang dalam satu frame, per area, selama 7 hari terakhir (setara widget Threshold by stream and area dengan N diubah ke 20):

POST /api/statistics/query
{
  "analytic": "MPA",
  "sub_mode": "density",
  "metrics": ["frame_samples", "frames_above", "share_above"],
  "dimensions": ["area"],
  "granularity": "",
  "time_range": { "start": "2026-09-12", "end": "2026-09-18", "preset": "last_7d" },
  "params": { "threshold": 20 }
}

Query tanpa sub_mode pada analitik MPA ditolak dengan kode EMPTY_SELECTION pada field sub_mode. Endpoint legacy GET /api/statistics/mpa/* dan /api/statistics/mpaa/* masih tersedia; lihat API Reference.


Tips & Troubleshooting


Selanjutnya

On this page