Training-free · Works with any detector

ARC-SORT

Adaptive, Robust, Compensated Multi-Object Tracking with Interacting Multiple Models

Girish Kumar Adari

Athlitix Inc.

Online ARC-SORT on a SportsMOT validation clip under a panning broadcast camera, with live ReID and camera-motion compensation.

The tracker measures its own uncertainty

In sports broadcasts, athletes accelerate and change direction while the camera pans and zooms. ARC-SORT is a tracking-by-detection tracker that trains nothing and runs in real time. Its design rule: the tracker measures how uncertain it is, and that measurement decides how it acts.

81.82
HOTA on SportsMOT test
62.1
HOTA on DanceTrack test, same settings
1414
ID switches: fewest of 69 SportsMOT entries†
~50 FPS
tracker with live ReID on a laptop RTX 3060 (detector excluded)

† Evaluation-server leaderboard as of August 2026.

Method

An Interacting Multiple Model (IMM) Kalman filter with constant-velocity, constant-acceleration and coordinated-turn models gives every track a predictive covariance. That uncertainty drives three decisions, each on a different time scale.

1

Per frame: adaptive search region

The covariance sets each track's Expansion IoU. Predictable tracks keep a tight box. Uncertain ones, such as a track that has gone undetected, search wider. This continuous coupling is what matters: using the same covariance as a hard Mahalanobis gate hurts at every threshold we swept.

2

Per crossing: deferred arbitration

When two tracks cross, the assignment cost reports whether the decision was close. Such pairs stay under review. At most one corrective identity swap is applied once post-crossing appearance shows the first call was wrong. This adds +1.0 HOTA on both test sets for under a millisecond per frame.

3

Per sequence: appearance-only re-entry

For a player who leaves the frame for seconds, extrapolated motion carries no information. The offline merge therefore drops the usual motion gate and links tracklets by appearance alone.

Expansion factor and IMM model probabilities over time for one track: the expansion grows while the track is undetected and snaps back when it is re-found; the constant-acceleration model takes over during a motion burst.

One real track. Top: the search region grows while the player is undetected and snaps tight when re-found. Bottom: the IMM shifts weight to the constant-acceleration model during a burst.

Keeping identity across a camera exit

A player leaves the frame for 11.7 seconds. With the motion gate on, the re-entry gets a new identity (3 → 36). Linking by appearance alone keeps identity 3.

Top: ARC-SORT (appearance-only merge). Bottom: motion gate on. Same detections and embeddings.

Five frames: the target is tracked, exits right, is out of view for 293 frames, then re-enters; ARC-SORT keeps ID 3 while the gated variant assigns ID 36.

The same exit, frame by frame: tracked, exits right, out of view for 293 frames, re-enters.

Results

SportsMOT test set. Competitor rows are from each paper's own results; ARC-SORT rows come from the evaluation server. "Trained" marks methods that learn an association, motion or appearance component.

MethodTrainedHOTAAssADetAMOTAIDF1IDs
Deep-EIoUno77.267.788.296.379.82659
Deep HM-SORTno80.172.788.396.685.21703
CAMELTrackyes80.472.888.896.384.8n/a
GTA (offline, on Deep-EIoU)no81.074.588.296.386.52737
TDLPyes81.976.388.095.887.5n/a
MeMoSORTyes82.175.689.397.086.4n/a
ARC-SORT on Deep-EIoU's detections + embeddingsno80.3174.1487.04n/a86.921320
ARC-SORT (full)no81.8276.2487.8497.0988.471414
Foundation-model tier
SAM 3 + Deep-EIoU (mask propagation)no87.284.2n/a98.193.6n/a

On Deep-EIoU's own public detections and embeddings, ARC-SORT scores 80.31 HOTA, +3.1 over Deep-EIoU, so the gain comes from association alone. On DanceTrack test ARC-SORT reaches 62.1 HOTA with the same association settings. More rows and ablations are in the paper.

Works with any detector

ARC-SORT takes boxes and scores. We ran it unchanged behind nine detectors from five libraries, on three SportsMOT validation clips, with every tracker receiving identical detections. HOTA:

DetectorByteTrackBoT-SORTARC-SORT onlineARC-SORT + offline merge
YOLOv8x57.059.462.266.2
YOLOv10x61.863.961.665.0
YOLO11x57.560.358.662.6
YOLO12x56.759.860.965.7
YOLO26x57.057.059.864.3
YOLOv13x57.258.660.261.5
RT-DETRv2-R10157.958.759.864.0
RF-DETR-L65.265.967.671.6
YOLOX-X (SportsMOT-trained)77.078.681.484.7

A compatibility check, not a benchmark: three clips are too few to rank trackers. COCO detectors also find referees and spectators, who are not labelled in SportsMOT, so absolute scores are low for every tracker. Baselines are the Roboflow trackers implementations with default settings.

Get started

The core tracker needs only NumPy, SciPy and OpenCV and runs on CPU. ReID, detectors and visualization are optional extras.

# core tracker (+ ReID and visualization extras)
pip install "arcsort[reid,viz]"
from arcsort import ARCTracker

tracker = ARCTracker.from_preset("sportsmot")        # motion-only on CPU; pass reid_weights=... for ReID

for frame in video:                                    # BGR numpy image
    dets = my_detector(frame)                          # (N, 6): x1, y1, x2, y2, score, class_id
    tracks = tracker.update(dets, frame)               # (M, 5): x1, y1, x2, y2, track_id

One command per paper row reproduces the reported results exactly from released caches: see the reproduction guide.

Citation

@article{adari2026arcsort,
  title   = {{ARC-SORT}: Adaptive, Robust, Compensated Multi-Object Tracking
             with Interacting Multiple Models},
  author  = {Adari, Girish Kumar},
  journal = {arXiv preprint arXiv:2610.22306},
  year    = {2026}
}