This repository provides a smart video surveillance demo for a single-GPU workstation running Ubuntu 24.04 x86_64 and is designed around two local-first demo paths:
deepstream/: DeepStream 8.0-based local analytics demoqwen_vqa/: Qwen-based local Video VQA web demo
Core goals:
- Run near-real-time analysis on local MP4 inputs.
- Produce outputs that are ready to show in a live demo.
- Keep language features optional and isolated, not bundled into local multi-GPU deployments.
The project has three conceptual layers:
DeepStreamlocal analytics pathQwen Video VQAlocal Q&A path- optional
VSSintegration path
+-----------------------------------+
| assets/videos/*.mp4 |
| crash_cctv_footage.mp4, outputs |
+----------------+------------------+
|
+-------------------+-------------------+
| |
v v
+---------------------------+ +---------------------------+
| DeepStream Local Demo | | Qwen Video VQA |
| deepstream-app in Docker | | FastAPI on host |
| NVIDIA GPU inference | | Frame sampling + VLM |
+------------+--------------+ +-------------+------------+
| |
v v
+-------------------------------+ +--------------------------------+
| out_source0_annotated.mp4 | | Browser UI + Q&A responses |
| detection/tracking overlays | | timestamps + evidence frames |
+-------------------------------+ +--------------------------------+
|
v
+-----------------------------------+
| Optional Remote VSS Sidecar |
| remote API / summary / reports |
+-----------------------------------+
- Runs with Docker and the NVIDIA Container Toolkit.
- Uses
assets/videos/crash_cctv_footage.mp4by default. deepstream-appperforms inference and overlay rendering.- Output is written to
assets/videos/out_source0_annotated.mp4by default.
- Single FastAPI service.
- Reads the same sample video, extracts frames, selects relevant frames, and sends them to the VLM.
- Default model is
Qwen/Qwen2.5-VL-3B-Instruct. - Open in a browser at
http://localhost:8000.
| Descriptive query | Event-detection query |
|---|---|
![]() |
![]() |
- The VSS path is optional.
- It is separate from local DeepStream and is not a hard dependency.
- Provides environment variables and helper containers for remote API / remote VLM / remote LLM connectivity.
make bootstrap-envThis creates the following files only if they do not already exist.
.envdeepstream/configs/vss/.envqwen_vqa/vqa.env
make doctor
make vqa-checkRequired prerequisites:
- Ubuntu 24.04 x86_64
- NVIDIA driver and
nvidia-smi - Docker Engine
- Docker Compose v2
- NVIDIA Container Toolkit
uv(when runningqwen_vqa)
make download-sample-videoDefault input file:
assets/videos/crash_cctv_footage.mp4
Validate composition:
make deepstream-checkRun:
make demo-localStop:
make demo-stopKey outputs:
- Input:
assets/videos/crash_cctv_footage.mp4 - Output:
assets/videos/out_source0_annotated.mp4
Environment check:
make vqa-checkRun:
make vqa-runAccess URL:
http://localhost:8000
This path runs directly on the host; the first run may perform uv sync and model download.
make deepstream-vss-optionalSet remote endpoint and credentials in deepstream/configs/vss/.env before running.
make help
make bootstrap-env
make doctor
make download-sample-video
make deepstream-check
make deepstream-run
make deepstream-stop
make demo-local
make demo-stop
make deepstream-vss-optional
make vqa-check
make vqa-run
make validate.
|-- README.md
|-- Makefile
|-- assets/
|-- deepstream/
| |-- configs/
| |-- docker/
| |-- docs/
| |-- run_demo_local.sh
| |-- run_vss_optional.sh
| `-- stop_demo_local.sh
|-- qwen_vqa/
| |-- app/
| |-- README.md
| |-- TROUBLESHOOTING.md
| |-- check_vqa_env.sh
| |-- pyproject.toml
| `-- run_local_vqa.sh
`-- scripts/
|-- bootstrap_env.sh
|-- doctor.sh
`-- validate_repo.sh
deepstream/docker/compose.deepstream.yml: DeepStream compose for local executiondeepstream/configs/deepstream/: DeepStream app, analytics, and tracker configurationdeepstream/docs/: DeepStream execution and operations documentationqwen_vqa/app/: FastAPI service and static frontend assetsscripts/doctor.sh: root environment checkscripts/validate_repo.sh: repository structure and Compose validation
deepstream/docs/getting-started.md: DeepStream getting started guidedeepstream/docs/architecture.md: Architecture overviewdeepstream/docs/demo-script.md: Demo walkthrough scriptdeepstream/docs/troubleshooting.md: Troubleshooting guidedeepstream/docs/vss-optional.md: Optional VSS integration documentationqwen_vqa/README.md: Video VQA detailed documentationqwen_vqa/TROUBLESHOOTING.md: VQA path troubleshooting
The current state of the repository is as follows:
- The DeepStream local path is configured for single MP4 input-based demos.
- Analysis results are written directly to an annotated MP4 file ready for presentation.
- The Qwen-based Video VQA path is available as a separate component for Q&A over the same sample video.
- The VSS path is isolated as an optional component and does not require a heavy local deployment.
- This repository prioritizes demo reproducibility and explainability over production-grade systems.
- RTSP, custom model training, and large local multimodal model deployments are out of scope for v1.
- The simplest flow from a fresh clone is:
make bootstrap-env→make doctor→make download-sample-video→make demo-local.

