oodis-eval
OoDIS: Anomaly Instance Segmentation and Detection Benchmark — Nekrasov et al. (2024) (arXiv:2406.11835, 2024)
What this evaluates
Evaluates a model's ability to detect and segment anomalous objects (out-of-distribution instances) in real-world driving scenes. It measures instance-level segmentation and object detection performance on rare, unpredictable obstacles that are not part of the standard in-distribution classes.
Datasets
- OoDIS Benchmark — total 887; splits: test (787), val (100)
Metrics
AP (primary) — range: [0, 1]
- Average Precision computed over IoU thresholds T = {50, 55, 60, ..., 95}. AP = (1/|T|) * sum_{t in T} AP_t, where AP_t is the area under the precision-recall curve at IoU threshold t.
AP50 — range: [0, 1]
- Average Precision computed at a single IoU threshold of 50%.
AR@k — range: [0, 1]
- Average Recall averaged over IoU thresholds T, restricting predictions to the top-k highest confidence scores.
PPF — range: other
- Predictions Per Frame, averaged over all images in a dataset to measure over-production of predictions.
Input / output format
Input: RGB images from driving scenes containing in-distribution and anomalous objects.
Output: Per-instance predictions comprising bounding boxes and/or pixel-level segmentation masks, each accompanied by a confidence score.
Scoring recipe
def compute_ap(predictions, ground_truth, iou_thresholds=[50,55,...,95]):
aps = []
for t in iou_thresholds:
tp, fp = 0, 0
matched_gts = set()
for pred in sorted(predictions, key=lambda x: x.conf, reverse=True):
best_gt = max([gt for gt in ground_truth if gt.id not in matched_gts],
key=lambda gt: iou(pred, gt), default=None)
if best_gt and iou(pred, best_gt) >= t/100:
tp += 1
matched_gts.add(best_gt.id)
else:
fp += 1
prec = cumsum(tp) / (cumsum(tp) + cumsum(fp))
rec = cumsum(tp) / len(ground_truth)
aps.append(apcoco(prec, rec))
return mean(aps)
Common pitfalls
- Confusing per-pixel AP with instance-level AP; the benchmark explicitly uses instance segmentation/detection AP (COCO/Cityscapes style), not pixel-wise metrics.
- Ignoring 'ignore' regions; predictions overlapping significantly with ambiguous/ignore regions should be discarded, as evaluation only focuses on the outlier class.
- Not weighting dataset scores correctly; the final benchmark score is a weighted average based on the number of images per dataset (RoadAnomaly21, RoadObstacle21, FS L&F).
Evidence (verbatim from paper)
We utilize the Cityscapes instance segmentation evaluation suite for anomaly instance segmentation as well as the COCO evaluation suite for anomalous object detection. Our benchmark primarily uses the AP metric (not the be confused with the per-pixel AP), a standard in instance segmentation and object detection. We consider AP50 (t=50) and the AP, which is an average over different thresholds, namely AP = 1/T sum_{t in T} AP_t for T = {50,55,60,...,95}.
Citation
@misc{nekrasov2024oodis,
title={OoDIS: Anomaly Instance Segmentation and Detection Benchmark},
author={Nekrasov et al. (2024)},
year={2024},
note={arXiv:2406.11835}
}
1---2name: oodis-eval3description: Evaluates a model's ability to detect and segment anomalous objects (out-of-distribution instances) in real-world driving scenes. It measures instance-level segmentation and object detection performance on rare, unpredictable obstacles that are not part of the standard in-distribution classes. Use when the user wants to benchmark on OoDIS Benchmark, or asks about evaluating this task. Reports AP.4---56# oodis-eval78> OoDIS: Anomaly Instance Segmentation and Detection Benchmark — Nekrasov et al. (2024) (arXiv:2406.11835, 2024)910## What this evaluates1112Evaluates a model's ability to detect and segment anomalous objects (out-of-distribution instances) in real-world driving scenes. It measures instance-level segmentation and object detection performance on rare, unpredictable obstacles that are not part of the standard in-distribution classes.1314## Datasets1516- **OoDIS Benchmark** — total 887; splits: test (787), val (100)1718## Metrics1920- `AP` **(primary)** — range: [0, 1]21 - Average Precision computed over IoU thresholds T = {50, 55, 60, ..., 95}. AP = (1/|T|) * sum_{t in T} AP_t, where AP_t is the area under the precision-recall curve at IoU threshold t.22- `AP50` — range: [0, 1]23 - Average Precision computed at a single IoU threshold of 50%.24- `AR@k` — range: [0, 1]25 - Average Recall averaged over IoU thresholds T, restricting predictions to the top-k highest confidence scores.26- `PPF` — range: other27 - Predictions Per Frame, averaged over all images in a dataset to measure over-production of predictions.2829## Input / output format3031**Input**: RGB images from driving scenes containing in-distribution and anomalous objects.3233**Output**: Per-instance predictions comprising bounding boxes and/or pixel-level segmentation masks, each accompanied by a confidence score.3435## Scoring recipe3637```python38def compute_ap(predictions, ground_truth, iou_thresholds=[50,55,...,95]):39 aps = []40 for t in iou_thresholds:41 tp, fp = 0, 042 matched_gts = set()43 for pred in sorted(predictions, key=lambda x: x.conf, reverse=True):44 best_gt = max([gt for gt in ground_truth if gt.id not in matched_gts],45 key=lambda gt: iou(pred, gt), default=None)46 if best_gt and iou(pred, best_gt) >= t/100:47 tp += 148 matched_gts.add(best_gt.id)49 else:50 fp += 151 prec = cumsum(tp) / (cumsum(tp) + cumsum(fp))52 rec = cumsum(tp) / len(ground_truth)53 aps.append(apcoco(prec, rec))54 return mean(aps)55```5657## Common pitfalls5859- Confusing per-pixel AP with instance-level AP; the benchmark explicitly uses instance segmentation/detection AP (COCO/Cityscapes style), not pixel-wise metrics.60- Ignoring 'ignore' regions; predictions overlapping significantly with ambiguous/ignore regions should be discarded, as evaluation only focuses on the outlier class.61- Not weighting dataset scores correctly; the final benchmark score is a weighted average based on the number of images per dataset (RoadAnomaly21, RoadObstacle21, FS L&F).6263## Evidence (verbatim from paper)6465> We utilize the Cityscapes instance segmentation evaluation suite for anomaly instance segmentation as well as the COCO evaluation suite for anomalous object detection. Our benchmark primarily uses the AP metric (not the be confused with the per-pixel AP), a standard in instance segmentation and object detection. We consider AP50 (t=50) and the AP, which is an average over different thresholds, namely AP = 1/T sum_{t in T} AP_t for T = {50,55,60,...,95}.6667## Citation6869```bibtex70@misc{nekrasov2024oodis,71 title={OoDIS: Anomaly Instance Segmentation and Detection Benchmark},72 author={Nekrasov et al. (2024)},73 year={2024},74 note={arXiv:2406.11835}75}76```7778- arXiv: 2406.11835