SEVS is a hardware-agnostic perception reliability project that turns an object detector into a self-evaluating vision system:
- run a real detector
- measure calibration and stability under perturbations
- learn a meta-model that predicts which detections are likely wrong
- optionally score image-level OOD risk
- Real detector wrappers:
torchvisiondetection backends (fasterrcnn_resnet50_fpn_v2,retinanet_resnet50_fpn_v2,ssdlite320_mobilenet_v3_large)- optional
ultralyticsYOLO wrapper if you installultralytics mockdetector preserved for smoke tests
- Real dataset adapters:
- COCO via
torchvision.datasets.CocoDetection - Pascal VOC via
torchvision.datasets.VOCDetection
- COCO via
- Real evaluation:
- native mAP@0.50 and mAP@0.50:0.95 implementation in
src/sevs/evaluation/detection_eval.py - calibration metrics
- meta-error AUROC
- OOD summary scores (
max_softmax_prob,entropy,energy)
- native mAP@0.50 and mAP@0.50:0.95 implementation in
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .
python -m sevs.cli smoke-test --config configs/eval/eval_default.yaml- Download COCO into
data/external/coco/. - Build a subset manifest:
python scripts/prepare_coco_subset.py --coco-root data/external/coco --split val2017 --n 200 --out data/splits/coco_val_small.json- Edit
configs/eval/eval_default.yaml:- set
dataset.name: coco - point
subset_manifestat your manifest - keep
detector.family: torchvisionor switch toultralytics
- set
- Run:
python -m sevs.cli run --config configs/eval/eval_default.yamlEdit configs/eval/eval_default.yaml:
dataset.name: vocdataset.root: data/external/vocdataset.year: "2007"dataset.split: test
- The native detection evaluator avoids hard dependence on COCOeval so the repo stays portable.
pycocotoolsis still included because it is commonly useful for COCO workflows and future extensions.- For laptop inference,
ssdlite320_mobilenet_v3_largeis the lightest torchvision option in this repo.