DeepVisionStream is a modular DeepStream-based computer vision platform for real-time video analytics. It supports custom models like YOLO, SAM, and D-Fine, with C++ parsers and Python bindings. Inference results (bounding boxes, masks, metadata) are streamed to external apps using WebSocket.
- 🎥 Real-time inference with DeepStream and TensorRT
- 🧩 Plugin support for YOLO, SAM, D-Fine, and more
- 🐍 Python bindings for accessing frames and metadata
- 🌐 WebSocket server to broadcast metadata to clients
- 🐳 Docker Compose setup for simplified deployment
Currently, DeepVisionStream supports **YOLO ** models ** 8, 9, 10, 11, 12 **. You can use both detection and segmentation models.
-
For YOLO Detection:
- Use the script at
tools/export_yolo11.pyto convert your YOLO detection model - This will generate a
.onnxmodel file
- Use the script at
-
For YOLO Segmentation:
- Use Ultralytics (located in
tools/ultralytics) to export your YOLO segmentation model - Follow the Ultralytics README for proper export commands
- This will also generate a
.onnxmodel file
- Use Ultralytics (located in
After conversion, place your files as follows:
.onnxmodel files →deepstream/models/labels.txtfiles →deepstream/config/
Update the configuration files to point to your models:
- For YOLO Detection: Update
deepstream/config/config_infer_primary_yolo11.txt - For YOLO Segmentation: Update
deepstream/config/config_pgie_yolo_seg.txt
Make sure to adapt the paths in these config files to match your model and label file locations.
- NVIDIA GPU with CUDA support
- Docker and Docker Compose
- CUDA runtime (included in Docker image)
- Clone the repository:
git clone https://github.com/yourusername/DeepVisionStream.git cd DeepVisionStream - Build and start the services:
docker-compose up --build
- Access the WebSocket server at
ws://localhost:<port>(see your configuration).
The project includes a built-in API to interact with the DeepStream pipeline:
- Add sources (files or RTSP links) dynamically
- Delete sources from the pipeline
- Real-time inference results via WebSocket
You can add video sources as files (file:///deepstream_app/static/video.mp4) or RTSP streams (rtsp://camera-ip:port/stream) and remove them as needed during runtime.
Note: When adding file sources, make sure to place your video files in the static folder first. By default, video files are played in a loop.
DeepVisionStream/
├── backend
│ ├── app
│ ├── requirements.txt
├── deepstream
│ ├── app
│ ├── config
│ └── models
├── docker-compose.yml
├── docker_image
│ ├── compile_nvdsinfer_yolo.sh
│ ├── deepstream_python_apps
│ ├── DeepStream-Yolo
│ ├── Dockerfile
│ ├── nvdsinfer_yolo
│ ├── patch_libnvinfer.sh
│ └── run.sh
├── docs
├── LICENSE
├── README.md
└── tools
├── export_yolo11.py
└── ultralytics