Skip to main content

State-of-the-art Real Time Object Detection & Tracking System integrated with ReID architecture

Project description

🚀 Solovision

Solovision Logo

Python 3.9+ License: AGPL v3 PyPI - Downloads PyPI - Version

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.

SoloVision Results

✨ 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

solovision-0.0.1.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

solovision-0.0.1-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

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

Hashes for solovision-0.0.1.tar.gz
Algorithm Hash digest
SHA256 86f3a4227a4b44e8bd96d96ea4e1a3e2c3f545260b1699d723ae2e99b5475c8b
MD5 073f52255bd2aaf639735034822b6d0d
BLAKE2b-256 7985aa29d3a9c0ea25adc834aa4e5a7aed407bb5d9f6571d32652668d29225ac

See more details on using hashes here.

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

Hashes for solovision-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b02e4a13fd0dee58952b3d4053adac629282cb5b4fdbfe7899a803f231de0225
MD5 df2b77a66f18c65334a6faf32e0cda7e
BLAKE2b-256 9d10d45ade989b296794b0349a8af3c9f970e097b8cc5d9f99be8cd55d1904ef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page