SwarmSort Documentation
High-performance multi-object tracking optimized for microscopy and scenarios with hundreds of objects
SwarmSort is a standalone Python library for real-time multi-object tracking (MOT) that maintains consistent object identities across video frames. It implements state-of-the-art algorithms including uncertainty-based cost systems, smart embedding freezing for collision scenarios, and hybrid assignment strategies to achieve robust tracking in challenging conditions.
Quick Start
from swarmsort import SwarmSortTracker, Detection, SwarmSortConfig
import numpy as np
# Configure tracker for your use case
config = SwarmSortConfig(
max_distance=80.0, # Maximum association distance
uncertainty_weight=0.33, # Enable uncertainty-aware tracking
assignment_strategy='hybrid', # Smart assignment strategy
do_embeddings=True # Use visual features
)
tracker = SwarmSortTracker(config)
# Process detections from your detector
detections = [
Detection(position=np.array([100, 200]), confidence=0.9),
Detection(position=np.array([300, 400]), confidence=0.85)
]
# Get tracked objects with persistent IDs
tracked_objects = tracker.update(detections)
for obj in tracked_objects:
print(f"Track {obj.id}: position {obj.position}")
Key Features
- Robust Identity Management
Maintains consistent IDs through occlusions, crossings, and disappearances using motion prediction and visual re-identification.
- Uncertainty-Aware Association
Adaptive cost computation based on track age, local density, and detection reliability for robust tracking.
- Smart Collision Handling
Prevents ID switches in dense scenarios through intelligent embedding freezing and density-based adaptation.
- Real-Time Performance
30-120 FPS through Numba JIT compilation, vectorized operations, and optional GPU acceleration.
- Production Ready
200+ unit tests, cross-platform support, and comprehensive error handling.
How It Works
SwarmSort uses a position-centric additive cost model for detection-track association:
cost = position_distance + embedding_weight × embedding_distance × max_distance
Tracking Pipeline:
Motion Prediction - Kalman filter predicts track positions
Cost Computation - Calculate association costs (spatial + appearance)
Assignment - Match detections to tracks (Hungarian/greedy/hybrid)
Track Management - Confirm new tracks, delete lost tracks
Re-identification - Recover lost tracks using visual features
Contents
Getting Started
Reference
- Configuration Guide
- Configuration Overview Table
- Parameter Relationships
- Core Parameters Detailed
- Motion Modeling
- Uncertainty System
- Embedding Features
- Embedding Scaling
- Collision Handling
- Assignment Strategy
- Track Initialization
- Re-identification
- Probabilistic Mode
- Debug Settings
- Configuration Examples
- Loading from YAML