This repository demonstrates the fundamentals of Multi-Object Tracking (MOT) using a football video dataset. It explains how modern tracking algorithms maintain the identity of objects across video frames and compares some of the most widely used tracking methods.
The project includes multiple experiments using different detection and tracking combinations to highlight their strengths and limitations.
A video is simply a sequence of images shown one after another. Each image is called a frame.
The speed of a video is measured in FPS (Frames Per Second), which indicates how many frames are displayed every second.
The goal of object tracking is to detect objects in every frame and keep the same identity for each object throughout the video.
A typical tracking pipeline consists of three main steps:
The detector identifies all objects in each frame and provides:
- Object class (label)
- Bounding box (BBox)
- Confidence score
The tracker determines whether an object detected in the current frame corresponds to an object detected in previous frames.
To make this decision, tracking algorithms use:
- Motion (location) information
- Visual (appearance) features
Each detected object receives a unique ID.
The objective is to preserve this ID across all frames as long as the object remains in the scene.
Sometimes an object temporarily disappears due to:
- Occlusion
- Low detector confidence
- Motion blur
When it appears again, the tracker may assign a new ID instead of the original one.
This problem is known as ID Switching.
If an object disappears for several frames and later reappears, an effective tracker should recognize that it is the same object and assign its original ID.
This process is called Re-Identification (Re-ID).
SORT is one of the earliest and fastest tracking algorithms.
It works by:
- Predicting the next object location using a Kalman Filter
- Matching predicted boxes with detected boxes using IoU
- Very fast
- Simple implementation
- Real-time performance
SORT only uses motion and location information.
It does not use appearance features, so when two nearby objects cross each other, ID switches can easily occur.
DeepSORT improves SORT by adding a deep neural network that extracts appearance features from every object.
Each object is represented by a feature vector that helps distinguish it from other objects.
DeepSORT combines:
- Motion information
- Appearance (visual) features
Another improvement is the Tentative State.
Instead of assigning a permanent ID immediately, a new object is observed for several frames before its track is confirmed, reducing false tracks.
- Better identity preservation
- Lower ID switching
- Supports Re-Identification
- Slower than SORT
- Higher computational cost
ByteTrack extends SORT by making use of both high-confidence and low-confidence detections.
Instead of discarding low-confidence detections, ByteTrack keeps them and performs a second association step.
- High-confidence detections → standard SORT association
- Low-confidence detections → IoU-based association
This significantly reduces the number of lost tracks.
If a football player is temporarily hidden behind another player or the referee, the detector may produce a low-confidence detection.
SORT may discard it, causing the player to receive a new ID later.
ByteTrack keeps these low-confidence detections, allowing the tracker to maintain the same identity.
- Faster than DeepSORT
- More accurate than SORT
- Better handling of temporary occlusions
BoT-SORT combines the strengths of ByteTrack and DeepSORT.
It uses:
- Motion information
- Appearance features
- High- and low-confidence association
For:
- High-confidence detections → appearance and motion features are used.
For:
- Low-confidence detections → association mainly relies on motion information.
This provides both high speed and strong identity preservation.
- High accuracy
- Better Re-ID performance
- Reduced ID switching
- Suitable for crowded scenes
| Scenario | Recommended Tracker |
|---|---|
| Simple scenes with few objects | ByteTrack |
| Crowded scenes with many objects | BoT-SORT |
| Maximum speed | SORT |
| Best identity preservation | DeepSORT / BoT-SORT |
├── SSD300 + BoT-SORT
├── SSD300 + ByteTrack
├── YOLO Tracking
└── README.md
The experiments are performed on a football video dataset containing multiple moving players. https://www.kaggle.com/datasets/iasadpanwhar/football-player-detection-yolov8
This repository includes four implementations:
- SSD300 object detection with BoT-SORT
- SSD300 object detection with ByteTrack
- YOLO-based object tracking
- Comparison of different tracking approaches
- Object Detection
- Bounding Boxes
- Kalman Filter
- IoU Matching
- Data Association
- Object Tracking
- Multi-Object Tracking (MOT)
- Appearance Features
- Re-Identification (Re-ID)
- ID Switching
- SORT
- DeepSORT
- ByteTrack
- BoT-SORT
- SORT
- DeepSORT
- ByteTrack
- BoT-SORT
- YOLO