description
PPE-compliance rule: detect a tracked person NOT wearing required protective equipment (helmet and/or safety clothes). Per-frame SGIE classifier scores (not_wearing_helmet, wearing_safetyclothes_1/6) are voted across a short ppe_check_window_seconds window — small or frame-edge boxes are dropped as unreliable — and the rule fires once per track when the violating fraction clears voting_ratio_threshold. The voting window suppresses single-frame misclassifications (turned heads, brief occlusions). Which PPE items are enforced is configurable, so helmet-only or vest-only deployments reuse the same rule.
use cases
- hard-hat / helmet enforcement on factory floors, docks and construction-like areas
- hi-vis / safety-clothing enforcement in vehicle-traffic zones
- entry-gate PPE checks (short dwell is enough thanks to the voting window)
limitations
- requires a PPE attribute classifier (SGIE) emitting the *_scores — detector alone is not enough
- {'attribute-level check': 'verifies worn/not-worn, not whether PPE is worn CORRECTLY (e.g. chinstrap)'}
- distant/low-resolution person crops degrade classifier scores — camera placement matters
config parameters
general
| Parameter | Type | Default | Notes |
|---|---|---|---|
| target_class | array of string | ["person"] | |
| ppe_check_window_seconds | number | 3.0 | (min 0.5) |
| voting_ratio_threshold | number | 0.7 | (min 0.0, max 1.0) |
| min_voting_samples | integer | 3 | (min 1) |
| min_area_percentage | number | 0.4 | (min 0.0) |
| not_wearing_helmet_threshold | number | 0.7 | (min 0.0, max 1.0) |
| not_wearing_safetyclothes_threshold | number | 0.7 | (min 0.0, max 1.0) |
| strict_voting | boolean | false | |
| check_helmet | boolean | true | |
| check_safetyclothes | boolean | true |
advanced
| Parameter | Type | Default | Notes |
|---|---|---|---|
| cam_resolution | array of integer | — | (min items 2, max items 2) |
golden replay cases
| Case | Frames | Expected events |
|---|---|---|
| no-helmet | 5 | 1 |