VigiLense
AI surveillance and incident response across multiple cameras.
VigiLense watches several camera feeds at once, detects people, fire and smoke in real time, ranks incidents by priority, switches the operator to the most important camera, and logs evidence-backed alerts on a live dashboard.
The problem
Security teams in control rooms watch walls of camera feeds, and the moments that matter, a fire starting or someone entering a restricted area, are easy to miss. Existing systems either record passively or raise so many alerts that operators start ignoring them.
The goal: an assistant that watches every feed continuously, recognises dangerous events, and puts the right camera in front of a human at the right time, with evidence attached.
What I built
- Fire & smoke detection model fine-tuned from YOLO26n on the public D-Fire dataset, trained on Google Colab GPUs.
- Multi-camera pipeline that reads three or more feeds (video files, RTSP streams or webcams) and runs one batched detection pass for all of them.
- Priority scoring that ranks each camera by what it sees and automatically promotes the most critical one to the main view.
- Incident logging to SQLite with a snapshot image per alert, served on a live web dashboard built with FastAPI.
Architecture
Key decisions
Nano model over a larger one
Surveillance means many feeds on modest hardware. A nano YOLO keeps latency low enough for real-time use, and accuracy can be recovered with better data and thresholds.
Process the newest frame, not every frame
Each camera thread keeps only its latest frame. If detection falls behind, stale frames are skipped, so the dashboard always shows what is happening now.
One batched pass for all cameras
Sending every feed through the model together uses the GPU far better than running each camera separately.
Cooldown on repeated alerts
A 10-second cooldown per camera and label stops one fire from producing hundreds of alerts, which is how real alarm systems lose operators' trust.
Security
- Camera credentials and RTSP URLs kept out of Git in a
.envfile - Evidence snapshots and incident database excluded from version control
- Feature-branch workflow with pull requests into
main
Results
What I'd improve next
- Weapon detection model (guns and knives)
- Person tracking with ByteTrack and cross-camera re-identification
- React dashboard with alert history and evidence video clips
- Raising recall: in a safety system a missed fire costs more than a false alarm