Object Tracking Metrics: MOTA, MOTP, IDF1, and HOTA
Tracking adds identity over time, so its metrics score two things at once — detecting objects and keeping their IDs consistent. MOTA, MOTP, ID switches, IDF1, and the modern HOTA that balances detection against association — on one running door-cam example, with the equations and motmetrics.
A tracker can detect every object perfectly and still be useless if it keeps swapping their IDs. That’s why tracking needs metrics that score detection and association together — and why no single number did it well until HOTA. We’ll watch one door camera make exactly one identity mistake and see how differently each metric reacts.
Multi-object tracking (MOT) outputs boxes with consistent IDs across frames. Per frame it’s detection — match hypotheses to ground truth by IoU — but the new axis is whether an object keeps the same ID over its whole trajectory.
The running example: DoorCam, two people, one slip
DoorCam films a doorway for 5 frames. Two people, A and B, are present the whole time — so there are ground-truth boxes. DoorCam detects every box perfectly (no misses, no ghosts) with one flaw: halfway through, it loses person A for a beat and re-labels them with a new ID. One identity slip, otherwise flawless.
MOTA — the classic detection-centric score
Intuition: add up everything that went wrong per frame — misses, false alarms, ID switches — and divide by how many objects there were.
From the CLEAR MOT metrics [1]:
MOTP — localization quality
Intuition: of the boxes you did match, how tightly do they fit? — average overlap, nothing about identity.
where is the number of matches in frame . For DoorCam, if the 10 matched boxes average IoU 0.82, then MOTP = 0.82 — a quality-of-fit number orthogonal to everything else, and silent about the ID slip.
IDF1 — the identity-centric score
Intuition: forget per-frame counting — ask “for how much of each person’s life did we keep one consistent ID on them?”
IDF1 [2] solves one global assignment between predicted and true trajectories, then takes an F1 over identity matches:
HOTA — the modern, balanced standard
Intuition: score detection and association separately, then take their geometric mean — so a tracker must be good at both; being great at one can’t paper over the other.
HOTA [3]:
where DetA is detection accuracy (Jaccard over matched detections) and AssA is association accuracy averaged over correctly-matched pairs (HOTA is itself averaged over localization thresholds ).
Now you try
Three calculators, one per metric. Push IDSW up in the MOTA panel and watch how little it moves — then drop AssA in the HOTA panel and watch HOTA fall hard. That contrast is the whole reason the field moved to HOTA.
In code
For MOTA / MOTP / IDF1, the motmetrics library is the standard:
import motmetrics as mm
acc = mm.MOTAccumulator(auto_id=True)
# For each frame, give GT ids, hypothesis ids, and a cost matrix (e.g. 1 - IoU).
acc.update(
[1, 2], # ground-truth object ids present this frame
["a", "b"], # tracker hypothesis ids
[[0.1, 0.9], # cost (1 - IoU), shape: n_gt x n_hyp
[0.8, 0.2]],
)
mh = mm.metrics.create()
summary = mh.compute(
acc,
metrics=["mota", "motp", "idf1", "num_switches", "mostly_tracked", "mostly_lost"],
name="seq1",
)
print(summary)
For HOTA specifically, use the official TrackEval toolkit — it’s the reference implementation the benchmarks score against.
Caveats & common pitfalls
- No single classic number is enough. MOTA is detection-dominated (DoorCam: 0.90) and IDF1 association-dominated (0.80); reporting only one hides half the story. HOTA exists exactly because of this [3] — quote it, but keep DetA/AssA visible.
- MOTA can go negative and isn’t a percentage. Treat it as an error budget, not an accuracy you can compare loosely across datasets [1].
- Everything rides on the matching threshold and the detector. Tracking metrics inherit the IoU-matching choices from detection; a different threshold reshuffles ID switches and FPs.
- Use the reference implementations. MOTA/MOTP/IDF1 from
motmetrics, HOTA from TrackEval — hand-rolled global assignment gets the edge cases (gaps, re-entries, crowd regions) subtly wrong.
Takeaways
- Tracking scores two things: detection and identity. No single classic metric captured both — DoorCam’s one ID switch scored 0.90, 0.80, or 0.87 depending on who’s asking.
- MOTA = detection-centric (FN + FP + ID switches), can be negative; MOTP = localization quality only.
- IDF1 = identity-centric via global trajectory matching; MT/ML summarize trajectory coverage.
- HOTA = √(DetA · AssA) balances the two and is the current standard — report it, and read DetA vs AssA to see which half failed.
Next, the hardest to pin down — scoring images that have no ground truth → Image generation metrics: FID, IS, KID, LPIPS.
Further reading
- See the metrics in the wild: the MOTChallenge benchmark — leaderboards and datasets where HOTA/MOTA/IDF1 are reported.
- Reference implementation: TrackEval — HOTA, CLEAR-MOT, and Identity metrics in one toolkit.
- Related on CondadosAI: object-detection metrics (the per-frame matching tracking builds on); segmentation metrics.
References
[1] Bernardin, K., & Stiefelhagen, R. (2008). Evaluating Multiple Object Tracking Performance: The CLEAR MOT Metrics. EURASIP Journal on Image and Video Processing, 2008, 246309. DOI:10.1155/2008/246309.
[2] Ristani, E., Solera, F., Zou, R., Cucchiara, R., & Tomasi, C. (2016). Performance Measures and a Data Set for Multi-Target, Multi-Camera Tracking. ECCV Workshops. arXiv:1609.01775. (Defines IDF1.)
[3] Luiten, J., Os̆ep, A., Dendorfer, P., Torr, P., Geiger, A., Leal-Taixé, L., & Leibe, B. (2021). HOTA: A Higher Order Metric for Evaluating Multi-Object Tracking. International Journal of Computer Vision, 129, 548–578. DOI:10.1007/s11263-020-01375-2.
[4] Dendorfer, P., et al. (2021). MOTChallenge: A Benchmark for Single-Camera Multiple Target Tracking. International Journal of Computer Vision, 129, 845–881. Tooling: motmetrics, TrackEval.
[5] Forsyth, D. A., & Ponce, J. (2012). Computer Vision: A Modern Approach (2nd ed.), ch. 11 (tracking). Pearson.