RESEARCH
Real-time basketball player tracking
Tracking every player through fast, occluded game footage in real time with a native C++ pipeline.
// Architecture
Problem
Track every player through fast, occluded, broadcast-quality game footage — in real time. Basketball is a hard case for tracking: ten players in close contact, constant occlusion, similar uniforms, fast camera pans, and motion blur.
Constraints
- Real-time throughput on a single workstation GPU, not a cloud cluster.
- Identity has to survive occlusion: a player who disappears behind two others for half a second must come back as the same track.
- Ordinary footage — not a calibrated multi-camera arena rig.
Approach
A native C++ pipeline rather than a Python prototype wrapped in a service. Detection runs a YOLO model optimized for TensorRT; DeepSORT associates detections across frames using motion and appearance; OpenCV handles decode, pre-processing, and visualization. Every stage has a fixed per-frame budget, the same way a game engine budgets a frame.
What it demonstrates for clients
- Performance-critical AI. Models are only part of the system. Throughput comes from the code around them: memory layout, batching, avoiding copies, and keeping the GPU fed.
- GPU inference optimization. Taking a model from “runs” to “runs within budget” with TensorRT.
- Production-style C++ around ML models. Clear stage boundaries, measurable budgets, and failure handling — not a notebook.
// Stack
- C++
- YOLO
- DeepSORT
- OpenCV
- TensorRT
- Windows