# Surveillance Dashboard Real-time multi-camera surveillance app with: - Person detection using Ultralytics YOLO - Group gathering detection (2+ people together) - Alert when group duration is over 20 seconds - Web dashboard with live feed, camera selector, and alert history - GPU-only inference (CUDA required) ## Features - Switch between multiple cameras from UI - Draw person boxes and group timer overlays - Save alert snapshots to `alerts/` - Read camera credentials from `.env` ## Project Structure - `camera_stream.py` - backend stream processing, detection, and API - `templates/dashboard.html` - dashboard UI - `requirements.txt` - minimal Python dependencies - `.env` - credentials and camera IPs - `alerts/` - captured alert images ## Requirements - Python 3.11+ (3.14 can work but ecosystem support may vary) - NVIDIA GPU + CUDA drivers - RTSP cameras reachable from this machine - Utopia VPN access to reach the camera network ## Setup Create and activate virtual environment: ```powershell python -m venv .venv .\.venv\Scripts\Activate.ps1 ``` Install PyTorch with CUDA (recommended command from PyTorch site): ```powershell pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124 ``` Install project dependencies: ```powershell pip install -r requirements.txt ``` ## Environment Variables Create `.env` in project root: ```env username=YOUR_CAMERA_USERNAME password=YOUR_CAMERA_PASSWORD camera_ip_1=192.168.x.x camera_ip_2=192.168.x.x ``` To add more cameras, add more `camera_ip_*` keys and update code list size if needed. ## Run ```powershell .\.venv\Scripts\python camera_stream.py ``` Open: - http://localhost:5000 ## Notes - App is configured to require CUDA GPU; it will exit if CUDA is not available. - Alert condition: at least 2 people in a group for 20+ seconds. - Alert snapshots are stored in `alerts/`. - Utopia VPN is required to access camera streams from outside the office network. - For VPN or camera network access, contact Samad (IT Department, Head Office).