Compare object detectors
Overview
Ranks two to five object detection evaluations of the same ground truth, or measures how revising the ground truth changes the score of one fixed model.
In a model comparison, the report puts every model on the same metrics and breaks the difference down by class, by image, and, when every report has the data, by error type and object size. The model with the highest mAP 50:95 becomes the winner: its model version, evaluation report, and evaluation are published as outputs so the flow can continue with it, and the badge names it.
To compare annotation revisions instead, connect the outputs of two Evaluate object detection nodes, one run on the original ground truth and one on the revised copy, and set Evaluation dataset to the original. That report shows original, revised, and changed metrics, per-class changes, and per-image comparisons against each version’s own ground truth. The winner outputs stay empty and the badge shows the mAP change.
Prerequisites
How it works
Treats evaluations of one dataset as a model comparison, and two evaluations of different datasets as an annotation revision comparison.
FAQ
How many models can I compare at once?
Between two and five, and the same evaluation cannot be picked twice. Selection order does not matter, because the ranking comes from the metrics rather than from the order you picked.
Why were my evaluations rejected?
In a model comparison, every evaluation must be of the Evaluation dataset, cover the same images with the same ground-truth annotations and classes, and use the same IoU threshold, max detections, and confidence setting: auto on all of them, or the same manual value. An evaluation whose report was deleted cannot be compared. Re-run the evaluations with matching settings before comparing.
Why was my annotation revision comparison rejected?
It takes exactly two evaluations, and exactly one of them must be of the Evaluation dataset. Both must use the same model version, the same images and classes, the same prediction annotations, and the same IoU threshold, max detections, and manual confidence threshold. Set a fixed confidence on both Evaluate nodes, because auto can pick a different threshold for each ground truth.
What happens when two models tie for the top?
The winner outputs stay empty and the badge reads Tie, rather than picking one arbitrarily. Break the tie on a metric you care about by reading the comparison report.
What does the error decomposition compare?
Every prediction that is not a true positive is assigned exactly one cause (wrong class, loose box, both, duplicate, or a detection where nothing is annotated), and every unrecoverable ground-truth object counts as a miss. The report charts each model’s mix of those causes, and the AP each model would recover if one cause were fixed on its own. Two models with the same mAP often miss it for different reasons, and that is the number that says which.
Why are the error decomposition and object size sections missing?
They appear only when every selected report carries that data, and reports made by older runs of Evaluate object detection don’t. Re-run the evaluations on the same dataset and compare the new ones. The rest of the comparison works either way.
Does it pick up a new evaluation after I rerun Evaluate?
Only when the input is bound to the Evaluate node’s Evaluation output. An evaluation picked from the list stays that exact evaluation, however many times the Evaluate node runs again.
Why didn't it run when the evaluations finished?
Require configuration is on for this node, so the flow skips it until the evaluations are set. Pick or bind them, then run the node or the flow again.
Does it change anything on the models?
No. It records no evaluation and changes nothing in the model registry. The winner exists only as the node’s outputs and badge.
Inputs
Ground-truth dataset for detector comparison, or the original dataset for annotation revision comparison. Key: GT_DATASET.
Two to five evaluations of this dataset to compare, in any order. To compare annotation revisions instead, connect the outputs of the original and the revised Evaluate node. Values come from GT_DATASET. Key: EVALUATIONS.
Outputs
Asset ID containing the comparison report. Shown as an artifact. Key: REPORT_ID.
Registry reference of the unique highest-mAP model. Empty when the highest mAP is tied or when comparing annotation revisions. Shown as an artifact. Key: BEST_MODEL_ID.
Unique highest-mAP evaluation report asset ID. Empty when the highest mAP is tied or when comparing annotation revisions. Key: BEST_REPORT_ID.
The winning evaluation, ready to wire into another comparison. Empty when the highest mAP is tied or when comparing annotation revisions. Key: BEST_EVALUATION_ID.
Name of the unique winner, or Tie when reports share the highest mAP. An annotation revision comparison shows the mAP change instead. Shown on the node as a badge. Key: WINNER.
Models and configuration
There is nothing to tune. The Object detection evaluations picker offers evaluations of the selected Evaluation dataset only, and the comparison inherits its IoU threshold, max detections, and confidence setting from the evaluations. Every report must come from Evaluate object detection, because a generic report has no metrics this node can line up.
Report
The comparison report opens from the node’s preview widget. In a model comparison it names the winner and shows where each model leads, by class and by image, and which images separate them.
Report sections
An annotation revision report is shorter: a table of original, revised, and changed metrics and object counts, per-class changes in AP, precision, recall, and F1, and a per-image table that opens both ground truths beside the same predictions.
Runtime
Runs on an ordinary worker. It reads the selected reports and writes one, so its cost does not depend on dataset size.
JSON config
Machine-readable node interface for automation and advanced usage.