ByteTrack-Eigen is a C++ implementation of the ByteTrack object tracking method, leveraging the Eigen library for high-performance matrix and vector operations. This library is designed for tracking objects in video frames using Kalman Filters and the Hungarian algorithm.
yolox-byte-track-demo.mp4
Source Video by RDNE Stock project from Pexels: (link)
- Object tracking using Kalman Filters and Hungarian algorithm.
- Handling of occlusions and re-identifying lost objects.
- Utilization of the Eigen library for optimized matrix and vector operations.
BaseTrack
: Foundational class for object tracking.BoundingBoxTrackUtils
: Utility functions for track operations.BYTETracker
: Main class for the BYTE tracking algorithm.HungarianAlgorithmEigen
: Hungarian Algorithm implementation with Eigen.KalmanBBoxTrack
: Kalman filter-based bounding box tracking.KalmanFilter
: Kalman filter implementation for tracking bounding boxes in image space.LinearAssignment
: Solves linear assignment problems using the Hungarian Algorithm.BoundingBoxIoUMatching
: Utility functions for bounding box operations.
- CMake 3.20 or higher.
- C++17 or higher.
- Eigen library (automatically downloaded by CMake).
- Clone the repository:
git clone https://github.com/cj-mills/byte-track-eigen.git
- Navigate to the project directory:
cd byte-track-eigen
- Build the project using CMake:
mkdir build && cd build
cmake ..
Here is an example of how to use ByteTrack-Eigen in your project:
// Example usage of ByteTrack-Eigen
#include "BYTETracker.h"
int main() {
float track_thresh = 0.23f;
int track_buffer = 30;
float match_thresh = 0.8;
int frame_rate = 30;
BYTETracker tracker(track_thresh, track_buffer, match_thresh, frame_rate);
}
- yolox-bytetrack-onnx-demo: A Visual Studio project demonstrating how to perform object tracking across video frames with YOLOX, ONNX Runtime, and the ByteTrack-Eigen library.
- unity-bytetrack-plugin: A simple native plugin for the Unity game engine, built in Visual Studio, that leverages the ByteTrack-Eigen library to perform real-time object tracking.
This project is licensed under the MIT License.
Special thanks to the Eigen library team and authors of the ByteTrack algorithm.