A library for tracking the movement of objects based on object detection results.
Choose your platform and track objects across video frames with YOLOX-S detection plus ByteTrack association.
Apply for the free trial to obtain the evaluation package, which contains the C++ binding, runtime libraries, and the license file.
Apply for Free TrialDownload the YOLOX-S detector model and place it next to the binary, then build and run the sample.
# Download model files into the binary folder
curl -O https://storage.googleapis.com/ailia-models/yolox/yolox_s.opt.onnx
curl -O https://storage.googleapis.com/ailia-models/yolox/yolox_s.opt.onnx.prototxt
# Build (macOS)
clang++ -o ailia_tracker_sample ailia_tracker_sample.cpp \
libailia.dylib libailia_audio.dylib \
libailia_tokenizer.dylib libailia_tracker.dylib \
-Wl,-rpath,./ -std=c++17
./ailia_tracker_sample input.mp4
Full C++ Setup Guide
ailia Tracker runs on desktop and mobile platforms. GPU acceleration is available for the object-detection phase on Windows and Linux.
Object tracking capabilities provided across the C, C#, and JNI APIs.
Minimal examples for adding ByteTrack association on top of your detector in your own application.
#include "ailia_tracker.h"
struct AILIATracker *tracker = nullptr;
AILIATrackerSettings settings = {0.1f, 0.7f, 0.5f, 30, 0.8f};
ailiaTrackerCreate(&tracker, AILIA_TRACKER_ALGORITHM_BYTE_TRACK, &settings);
for (auto &d : detections) {
ailiaTrackerAddTarget(tracker, d.category, d.prob, d.x, d.y, d.w, d.h);
}
ailiaTrackerCompute(tracker);
unsigned int n; ailiaTrackerGetObjectCount(tracker, &n);
ailiaTrackerDestroy(tracker);
Common questions about ailia Tracker.
YOLOX-S handles per-frame object detection across the 80 COCO categories, and ByteTrack associates detections into stable tracking IDs across frames.
YOLOX-S weights and prototxt:
yolox_s.opt.onnx
yolox_s.opt.onnx.prototxt
Place both files in the same folder as the sample binary.
Each AILIATrackerObject has a category attribute (integer matching the COCO label). Filter results in your code — e.g. keep only category == 0 to track humans, or build a small lookup map for the labels you care about.
For each tracked object: id (stable across frames), category, detection prob, and a normalized bounding box (x, y, w, h) where 0 maps to the left/top edge and 1 maps to the right/bottom edge.
Yes. Pass -w <index> to the C++ sample to use a webcam stream instead of a file. The Unity binding exposes the same camera-input mode through its ailia-tracker-unity package.
On macOS / iOS, Metal is used automatically. On Windows / Linux, install CUDA Toolkit and cuDNN, then add cuDNN to your PATH. Acceleration applies to the object-detection phase; ByteTrack association runs on CPU.
The C++ binding requires ailia.lic from the evaluation package, placed next to the runtime libraries:
Windows: same folder as ailia.dll.
macOS: ~/Library/SHALO/
Linux: ~/.shalo/
Unity and JNI bindings auto-download the evaluation license on first run. For commercial deployment, request a production license. See the ailia license terms.