Evaluate object detection
Overview
Scores a detector’s predictions against ground truth, publishes a report with overall, per-class, and per-image results, and records the scores on the model version that made the predictions. The node’s badge shows the run’s mAP 50:95.
Use it after Predict YOLO, or another object detection node, has created predictions for a validation or test dataset.
Prerequisites
The node evaluates only asset IDs found in both datasets. It skips assets found on one side, so check dataset membership when you expect a complete comparison.
How it works
Applies the class filter, confidence and IoU operating points, and the per-image detection limit.
With auto confidence, it selects the score with the highest aggregate F1 value.
FAQ
What can this node evaluate?
The evaluator works with image bounding boxes. It does not evaluate videos, masks, keypoints, or tracking results. Other supported geometries are reduced to bounding boxes. A run fails when the two datasets together hold more than 600 classes, because the report charts cannot show more.
Why does the node report No common assets with annotations?
Why does the node report No common assets with annotations?
The datasets do not share any loaded image asset IDs. Build the prediction dataset from the same source assets instead of uploading copies as new assets.
Why does the node report missing classes, annotations, or predictions?
Class filtering may have removed all supported boxes, or one annotation set may have no valid boxes. Check the class names and make sure both datasets contain valid object annotations.
Why is confidence rejected or the threshold analysis wrong?
The value may be outside 0-1, or prediction labels may lack numeric confidence tags. Missing confidence is treated as 1.0. Use a value from 0 through 1, or add numeric confidence or confidence-model tags.
What happens to images without a recorded size?
They are still evaluated, but their objects are left out of the object-size views (AP by size and error types by size), since relative size cannot be computed. The run log says how many images this affected.
Why is there no report scope for a selected tag value?
No shared ground-truth asset has that tag value. Select a value present on at least one shared image.
What happens when I run it again?
Each run uploads a new report and records a new evaluation on the model version. Earlier reports and evaluations stay, so the model keeps the history of every run.
Why is the Evaluation output empty?
The registry could not be reached when the run finished. The report is already uploaded by then, so a failure here costs the evaluation row, not the run — rerun the node to record it.
Inputs
Dataset with ground-truth object annotations. Key: GT_DATASET.
Dataset holding the model predictions for the same assets as the ground truth, usually the output of a predict node. Only assets that appear in both datasets are evaluated. Key: PRED_DATASET.
Model version the predictions were made with. This run is recorded as an evaluation of that version, so its scores and a link to this report appear wherever the model is listed. Key: MODEL.
Classes to include in the evaluation. Objects of any other class are ignored in both datasets, and an empty selection scores every class. Values come from GT_DATASET. Key: CLASSES.
Overlap a prediction needs with a ground truth object to count as the same object. Drives the confusion matrix and the true, false positive and missed counts. Key: IOU_THRESHOLD.
Options:
- 0.50 (
0.5) - 0.55 (
0.55) - 0.60 (
0.6) - 0.65 (
0.65) - 0.70 (
0.7) - 0.75 (
0.75) - 0.80 (
0.8) - 0.85 (
0.85) - 0.90 (
0.9) - 0.95 (
0.95)
Predictions scoring below this confidence are left out of the metrics. Keep auto to let the run pick the confidence with the best F1 score. Key: CONFIDENCE_THRESHOLD.
Most predictions kept per image, highest confidence first. Anything beyond that count is ignored. Minimum: 1. Key: MAX_DETECTIONS.
Ground truth asset tags to break the report down by, for example weather or camera. Each selected tag value gets its own view of the report, and an empty selection reports on the whole dataset. Values come from GT_DATASET. Key: TAGS.
Outputs
Machine-readable object detection evaluation report for preview and compatible comparison nodes. Shown as an artifact. Key: REPORT_ID.
The evaluation row this run recorded on the model version. Empty when the registry could not be reached. Key: EVALUATION_ID.
mAP score shown as a badge on the node. Shown on the node as a badge. Key: MAP_SCORE.
Confidence threshold the reported metrics were computed at - the F1-optimal score when Confidence Threshold is auto, otherwise the value you set. Optimal over all classes pooled, not per class. Key: CONF_THRESHOLD.
Models and configuration
This node evaluates existing predictions. It does not load or run a model. Keep the defaults for a standard evaluation, then change only the settings you need.
Optional settings
The Model picker lists your workspace’s own models, filtered to object detection. Each run records one evaluation on the picked version: mAP 50:95, AP50, precision, recall, and F1 at the evaluated operating point, the ground-truth dataset, the list of classes the run scored, and a link to the report. Scores are only comparable between evaluations that used the same ground truth and the same classes.
Report
Start with these five signals. Then open the per-class and per-image views to find the errors.
Metric glossary
Error types
Every detection that is not a true positive is placed in exactly one category, and every ground-truth object that no correction could recover is counted as a miss. The categories are evaluated in order, so the first one that applies wins.
Error counts cover every detection the model produced, including those below the confidence threshold, because Average Precision ranks all detections. They therefore do not match the operating-point counts in Outcome counts.
Report views
The report covers the full dataset intersection and each non-empty tag scope. The scope selector switches every view to the selected subset.
Compare object detectors reads the model and dataset identity, categories, per-class metrics, and per-image metrics from this report. Compare reports only when they use the same ground-truth dataset, image set, annotations, categories, and evaluation settings.
Runtime
The node runs on a standard OvalBee worker. It does not need a GPU, CUDA, or a specific RTX model. Runtime grows with the number of shared images, detections, classes, and tag scopes.
JSON config
Machine-readable node interface for automation and advanced usage.