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.

Luis Condados · · Updated September 27, 2026 · 6 min read Advanced
Object Tracking Metrics: MOTA, MOTP, IDF1, and HOTA

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 a single 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. The new axis is whether an object keeps the same ID over its whole trajectory, the data-association problem [5].

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 2×5=102 \times 5 = 10 ground-truth boxes. DoorCam detects every box perfectly (no misses, no ghosts) with one flaw: after frame 2 it re-labels person A with a new ID and keeps that new ID to the end. One identity slip, otherwise flawless.

frame12345AID switch ✂Beach colour = one predicted ID · A’s colour changes at the switch · B keeps one ID
DoorCam’s 5 frames. B holds one ID (green) the whole way; A’s ID flips from blue to pink after frame 2, a single ID switch on otherwise-perfect detection.

MOTA: the classic detection-centric score

MOTA adds up everything that went wrong per frame (misses, false alarms, ID switches) and divides by how many objects there were. From the CLEAR MOT metrics [1]:

MOTA=1−∑t(FNt+FPt+IDSWt)∑tGTt.\text{MOTA} = 1 - \frac{\sum_t \big(FN_t + FP_t + \text{IDSW}_t\big)}{\sum_t GT_t}.

MOTP: localization quality

MOTP asks how tightly the boxes you did match fit. It says nothing about identity. CLEAR MOT defines it as the total matching score over the number of matches [1]:

MOTP=∑t,idt,i∑tct,\text{MOTP} = \frac{\sum_{t,i} d_{t,i}}{\sum_t c_t},

where dt,id_{t,i} is the score of match ii in frame tt and ctc_t is the number of matches in frame tt. What dd is decides which way is better. With box overlap, d=IoUd = \text{IoU} and higher is better: if DoorCam’s 10 matched boxes average IoU 0.82, MOTP = 0.82. motmetrics averages whatever distance you passed it as the matching cost, so with the usual cost 1−IoU1 - \text{IoU} the same tracker reports MOTP = 0.18, and lower is better. Either way it is a quality-of-fit number, silent about the ID slip. Check which convention a table uses before comparing MOTP values.

IDF1: the identity-centric score

IDF1 drops the per-frame counting and asks “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:

IDF1=2 IDTP2 IDTP+IDFP+IDFN.\text{IDF1} = \frac{2\,\text{IDTP}}{2\,\text{IDTP} + \text{IDFP} + \text{IDFN}}.

HOTA: the modern, balanced standard

HOTA scores detection and association separately and takes their geometric mean, so a tracker must be good at both; being great at one can’t paper over the other. HOTA [3]:

HOTA=DetA⋅AssA,\text{HOTA} = \sqrt{\text{DetA} \cdot \text{AssA}},

where DetA is detection accuracy, ∣TP∣/(∣TP∣+∣FN∣+∣FP∣)|TP| / (|TP| + |FN| + |FP|), and AssA is association accuracy. For each true-positive match cc, HOTA counts its true-positive associations (TPA: other matches with the same true ID and the same predicted ID), false-negative associations (FNA: the same true ID with a different or no predicted ID) and false-positive associations (FPA: the same predicted ID on a different or no true object), and averages over all true positives [3]:

AssA=1∣TP∣∑c∈TP∣TPA(c)∣∣TPA(c)∣+∣FNA(c)∣+∣FPA(c)∣.\text{AssA} = \frac{1}{|TP|} \sum_{c \in TP} \frac{|TPA(c)|}{|TPA(c)| + |FNA(c)| + |FPA(c)|}.

All of this is computed at one localization threshold α\alpha; the reported HOTA repeats it for α=0.05,0.10,…,0.95\alpha = 0.05, 0.10, \dots, 0.95 and averages.

0.90MOTA0.87HOTA0.80IDF1
Same tracker, one ID switch: MOTA shrugs (0.90), IDF1 punishes (0.80), HOTA balances (0.87). The spread is the disagreement about how much identity matters.

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.

MOTA detection-centric
1 − (FN + FP + IDSW) / GT
IDF1 identity-centric
2·IDTP / (2·IDTP + IDFP + IDFN)
HOTA balanced
√(DetA · AssA)

In code

For MOTA / MOTP / IDF1, the motmetrics library is the standard:

# motmetrics==1.4.0
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)   # motp here is the mean matched cost: (0.1 + 0.2) / 2 = 0.15

For HOTA specifically, use the official TrackEval toolkit. It’s the reference implementation the MOTChallenge benchmarks score against [4]. The YOLO-NAS post uses it to score trackers on SportsMOT, and shows the DetA/AssA split in practice: on ground-truth boxes, where detection is perfect by construction, HOTA measures association alone.

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 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, because 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 (IoU, higher better, or a distance, lower better, depending on the tool).
  • IDF1 = identity-centric via global trajectory matching; MT/ML summarize trajectory coverage.
  • HOTA = √(DetA · AssA) balances the two and is the current standard, so 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

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. Read it at Springer. (The DOI resolver currently sends this paper to a retired jivp.eurasipjournals.com address that 404s, so the link goes to the publisher directly.)

[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 (1.4.0 on PyPI, whose motp is the summed match distance over the number of matches), TrackEval.

[5] Forsyth, D. A., & Ponce, J. (2012). Computer Vision: A Modern Approach (2nd ed.), ch. 11 (tracking). Pearson.