Blog
Multi-frame confirmation: how we cut false positives by 80%
The first version of Lexerus sent an alert every time the model detected a suspicious behaviour. Within a week of internal testing, we'd drowned ourselves in noise.
The model was accurate on clean frames — but real camera streams aren't clean. Compression artefacts, lighting flickers, partial occlusion, and motion blur all produce detections that look plausible in isolation but aren't.
The confirmation approach
Our solution was a confirmation window. When a suspicious behaviour is first detected, we track it across subsequent frames. Only when the behaviour is confirmed consistently — not just a single-frame anomaly — do we escalate to an alert.
If the behaviour doesn't persist, it's treated as noise and no alert is dispatched. The person might still be tracked at a lower suspicion level, but staff aren't disturbed.
Tracking people across frames
For confirmation to work, we need to know that detection in frame 1 and frame 3 are showing the same person. We use person tracking to maintain identity across frames — no biometrics, no face recognition, just position-based matching.
This is deliberately simple and privacy-preserving. In the retail environments we're targeting — people browsing near shelving, self-checkout areas — it's reliable and adds minimal overhead.
What the tuning taught us
We tested various confirmation thresholds across a range of camera types and environments. Too low, and false positives are still common. Too high, and we start missing real incidents. The default settings hit the best balance for typical retail environments.
That said, different environments benefit from different settings. Busy supermarket checkouts benefit from slightly higher thresholds, while quieter sections can go lower. Detection sensitivity is configurable per environment.