The problem

The client is a general contractor running a dozen active commercial job sites, each already fitted with security cameras. Their safety team had enabled motion-based alerts to catch people entering exclusion zones around heavy equipment, but motion detection fired on everything: wind-blown tarps, shadows, birds, and vehicles. Supervisors received hundreds of alerts a day and had started muting them, which defeated the purpose. The safety team also wanted to know when hard hats and high-visibility vests were missing in active work areas.

What we actually did

Object detection instead of motion detection

We trained an object detection model to recognize people, hard hats, high-visibility vests, and the specific heavy equipment used on site. Starting from a pretrained detection architecture, we fine-tuned on around 9,000 frames from the client's own cameras, labeled across weather, lighting, and camera angles, because generic construction datasets didn't match their camera placements.

Zones drawn per camera

For each camera, site supervisors draw exclusion zones and active work areas in a simple web tool. An alert fires only when a detected person is inside an exclusion zone while equipment is present in that zone, or when a person in an active work area is missing required protective equipment for more than a few seconds. Requiring the condition to persist across several frames removed most single-frame false positives.

Running on the edge

Inference runs on a small GPU edge device at each site, reading the existing camera streams locally. Only alerts, with a short clip, leave the site. That kept bandwidth costs low on sites with limited connectivity and meant continuous video never had to be uploaded anywhere.

A design decision worth calling out
The system detects situations, not identities. It doesn't perform facial recognition, doesn't track individuals across cameras, and blurs faces in alert clips by default. That design was agreed with the client's workforce representatives before deployment, and it's what made the rollout acceptable on site.

Challenges and tradeoffs

Results

Compared with the previous motion-based alerts, false alarms dropped 71% on the pilot sites, measured from supervisors' alert reviews, and supervisors stopped muting them. The system now covers all twelve active sites using only the cameras that were already installed, with on-site alert latency under a second. The safety team uses weekly summaries of zone breaches by area to adjust site layouts, which turned the alerts from a nuisance into planning data.

What we'd do differently

We would involve workforce representatives before the pilot rather than just before rollout. Their input shaped the privacy design, and earlier involvement would have saved a round of changes.