Skip to content
Threadbull
RESEARCH

Real-time basketball player tracking

Tracking every player through fast, occluded game footage in real time with a native C++ pipeline.

// Architecture

Real-time basketball player tracking: Video frames → YOLO detection (TensorRT) → DeepSORT tracking → Player tracksVideo framesYOLO detection (TensorRT)DeepSORT trackingPlayer tracks
Architecture sketch

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

Need this kind of engineering?