description
Loitering / inactivity detection on tracked persons. Fires when a person stays effectively stationary — bbox center barely shifts vs the still-streak anchor (move_distance_threshold) — for longer than limit_time seconds (default 130s), with the detections over the streak clearing mean/median confidence + count gates to suppress flicker. Honours cam_zones polygons when configured (only fires inside monitored areas). Per-track, fire-once per still-streak; any real movement resets the streak. Pure geometry over tracking (tier 1) — no extra model beyond a person detector; a downstream VLM recheck can be layered as the evidence gate.
use cases
- worker down / unresponsive person detection (stationary too long in a work area)
- loitering in restricted or dangerous zones
- idle-time monitoring at workstations (person present but not moving)
- unattended-person alerts in areas that should be pass-through only
limitations
- stationary != inactive — a person standing still while working also triggers; tune limit_time/zones
- needs stable tracking; heavy occlusion or crowd churn fragments the still-streak
- does not distinguish sitting/lying/standing posture (that needs a pose or VLM layer)
config parameters
general
| Parameter | Type | Default | Notes |
|---|---|---|---|
| target_class | array of string | ["person"] | |
| limit_time | number | 130.0 | (min 1) |
| mean_conf_threshold | number | 0.65 | (min 0.0, max 1.0) |
| median_conf_threshold | number | 0.66 | (min 0.0, max 1.0) |
| move_distance_threshold | number | 0.25 | (min 0.0) |
| min_confidence | number | 0.5 | (min 0.0, max 1.0) |
zone
| Parameter | Type | Default | Notes |
|---|---|---|---|
| cam_zones | array of array of pair of integer | — |
advanced
| Parameter | Type | Default | Notes |
|---|---|---|---|
| cam_resolution | array of integer | — | (min items 2, max items 2) |
golden replay cases
| Case | Frames | Expected events |
|---|---|---|
| stationary | 7 | 1 |