Capstone project, team of five

ZaiGuard.

A surveillance system that understands what its cameras see, filters out what doesn't matter, and learns from every operator decision.

A camera that cries wolf is worse than no camera at all. Most alerts from a raw detector are repeats, known-harmless activity, or near-copies of something an operator already dismissed. ZaiGuard sits between the cameras and the operator and decides which events deserve a human.

  • False alarms cut

    65–90%

    in testing, at sub-second latency.

  • Detection precision

    96.5%

    YOLO on ONNX with ByteTrack.

  • Automated tests

    101

    44 edge, 51 alert engine, 6 federated learning.

  • Threat types

    4

    after-hours access and dog attack run at the edge today.

How it works

From camera to operator.

  1. Detect at the edge

    Each feed (RTSP, HTTP, USB or a file, with automatic fallback) is sampled only when something moves, run through YOLO26s or YOLO11s on ONNX Runtime, and tracked with ByteTrack so every person and dog keeps an ID.

  2. Classify behaviour

    Classifiers turn tracks into events: a person on a camera outside its allowed hours, or a dog whose acceleration surges, thrashes, or closes in on a person, scored from 0 to 100.

  3. Filter centrally

    Candidates pass a five-layer FastAPI engine: sensitivity gate, enrichment, Redis de-duplication, PostgreSQL rule and Qdrant semantic suppression, then priority tiering. A transactional outbox keeps PostgreSQL and Qdrant in step.

  4. Review

    Operators see alerts, live camera status, analytics and system health on a Next.js dashboard, and confirm or dismiss each alert.

  5. Learn

    Every dismissal becomes a suppression signal. Edge nodes also improve a shared threat model with Flower federated learning: only model weights travel, never video.

Tech stack

What it's built with.

Edge vision

YOLO26s, YOLO11s
Person and dog detection, fine-tuned
ONNX Runtime
Inference on CUDA with a CPU fallback
ByteTrack
Persistent IDs across frames
OpenCV
Capture, motion gating and the live preview overlay

Alert engine

FastAPI
The five-layer middleware and its API
Redis
TTL windows for burst de-duplication
PostgreSQL (TimescaleDB)
Alerts, suppression rules and the outbox
Qdrant
HNSW vector search for semantic suppression

Learning

Flower
Cross-device federated averaging across LAN SuperNodes
PyTorch
Local training on each node

Dashboard and tooling

Next.js, ECharts
The operator dashboard and its charts
Docker Compose
PostgreSQL, Redis and Qdrant for local runs
uv, pytest
Python environments and the 101-test suite

Screens

On screen.

My part

What I built.

  • Built the five-layer FastAPI middleware (Redis TTL sliding windows, PostgreSQL B-trees, Qdrant HNSW vector suppression) that cut false-positive alarms by 65–90% in testing at sub-second latency.
  • Used a transactional outbox worker to prevent PostgreSQL/Qdrant dual-write inconsistencies, and coordinated cross-device Flower federated learning across LAN SuperNodes.
  • Built edge video ingestion with motion-gated frame sampling and an RTSP/HTTP/USB fallback chain, feeding an ONNX-accelerated YOLO detector (96.5% precision) with ByteTrack.

Next project

CivicSentinel

Hiring for backend, forward-deployed or GPU work? Let’s talk.

saxena.shikhar1808@gmail.com