State-of-the-art Real Time Object Detection & Tracking System integrated with ReID architecture
Project description
🚀 Solovision
Solovision is a state-of-the-art real-time object detection and tracking system that seamlessly integrates with ReID (Re-Identification) architecture. Built on top of YOLO object detection, it provides robust multi-object tracking capabilities with advanced features for identity preservation across frames.
✨ Key Features
- 🎯 High-Performance Tracking: Implements ByteTrack algorithm for reliable multi-object tracking
- 🔄 ReID Integration: Advanced re-identification capabilities for maintaining object identity
- 🚀 Real-time Processing: Optimized for real-time applications with efficient processing
- 📊 Multiple Detection Backends: Support for YOLOv8, YOLOv9, YOLOv11 and all other previous YOLO variants
- 💪 Robust Motion Prediction: Kalman filtering for smooth trajectory estimation
- 🎨 Flexible Visualization: Customizable visualization options for tracking results
- 🔧 Easy-to-use CLI: Simple command-line interface for quick deployment
🛠️ Installation
Install the solovision package in a Python>=3.9 environment.
pip install solovision
Install from source:
git clone https://github.com/AIEngineersDev/solovision.git
cd solovision
pip install .
Install in Dev
pip install poetry
poetry install
poetry shell
🚀 Quick Start
Basic Usage
from solovision import ByteTracker
from ultralytics import YOLO
import cv2
# Initialize tracker
tracker = ByteTracker(
reid_weights="path/to/reid/weights",
device="cuda",
half=True
)
# Process video
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
# Get detections from yolo
model = YOLO('yolov8m.pt')
detections = model.predict(frame)
# Update tracker
tracks = tracker.update(detections, frame)
# Process tracking results
for track in tracks:
bbox = track[:4]
track_id = track[4]
# Draw or process tracking results
Command Line Interface
# Detect objects across videos or streams
solovision detect --source video_path --conf 0.25 --iou 0.45
# Track objects using unique id with custom settings
solovision track --source video_path --yolo-model yolov8n.pt --reid-model osnet_x1_0_msmt17.pt --show --save --half \
--show-trajectories --save-txt --save-crops --per-class \
--classes 0 2 --device 0 --imgsz 640
# Runs Interactive Web Application to perform real-time inference
solovision run_app
# View all available CLI args
solovision --help
🎯 ReID Models Support
Solovision supports various state-of-the-art ReID architectures:
- OSNet (x0.25, x0.5, x0.75, x1.0)
- OSNet-AIN
- OSNet-IBN
- ResNet (50, 101)
- CLIP-ReID
Check out the Model Zoo for pre-trained weights and performance benchmarks.
🔧 Advanced Features
- Tracking Analytics: Line graphs and timestamp plotting for track id's
- Separate Merged Tracks: Save separate videos of persistant tracks from multiple video sources
- Per-Class Tracking: Enable separate tracking for different object classes
- Feature History: Maintain temporal appearance features for robust tracking
- Camera Motion Compensation: Automatic adjustment for camera movement
- Multi-Camera Support: Persist Tracker across multiple cameras/source
📊 Performance
- Runs at 30+ FPS on modern GPUs with YOLOv8n
- Support for half-precision (FP16) inference
- Optimized for both accuracy and speed
- Scalable for multi-camera deployments
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
📝 License
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
📚 Citation
@software{solovision2024,
author = {Diddi, Dhruv and Mohammed, Zeeshaan},
title = {Solovision: State-of-the-art Real-Time Object Tracking System},
year = {2024},
publisher = {GitHub},
organization = {AIEngineersDev},
url = {https://github.com/AIEngineersDev/solovision}
}
🙏 Acknowledgments
- ByteTrack algorithm implementation
- Ultralytics YOLO
- OSNet for ReID features
- BOXMOT
- FastReID
Made with ❤️ by Solo
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file solovision-0.0.1.tar.gz.
File metadata
- Download URL: solovision-0.0.1.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86f3a4227a4b44e8bd96d96ea4e1a3e2c3f545260b1699d723ae2e99b5475c8b
|
|
| MD5 |
073f52255bd2aaf639735034822b6d0d
|
|
| BLAKE2b-256 |
7985aa29d3a9c0ea25adc834aa4e5a7aed407bb5d9f6571d32652668d29225ac
|
File details
Details for the file solovision-0.0.1-py3-none-any.whl.
File metadata
- Download URL: solovision-0.0.1-py3-none-any.whl
- Upload date:
- Size: 1.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b02e4a13fd0dee58952b3d4053adac629282cb5b4fdbfe7899a803f231de0225
|
|
| MD5 |
df2b77a66f18c65334a6faf32e0cda7e
|
|
| BLAKE2b-256 |
9d10d45ade989b296794b0349a8af3c9f970e097b8cc5d9f99be8cd55d1904ef
|