Downloads · 30 days
14
13% of all-time downloads
small-models-for-glam/index-card-detector-v5
index-card-detector-v5 is a object detection model from small-models-for-glam. Use it when you need objects located in an image. It is set up for ultralytics. The card lists the license as agpl-3.0.
YOLO26n object detector for archival index cards. Builds on index-card-detector-v3 with a higher-quality navy training set (re-labelled via a v3+v4 model-ensemble + targeted human review).
Downloads · 30 days
14
13% of all-time downloads
All-time downloads
109
Public
Repo size
15.8 MB
Likes
1
Public
Click a slice to open those files.
.onnx10.3 MB · 65%
From the Hugging Face model README
index-card-detector-v5YOLO26n object detector for archival index cards. Builds on index-card-detector-v3 with a higher-quality navy training set (re-labelled via a v3+v4 model-ensemble + targeted human review).
Fine-tuned from NationalLibraryOfScotland/archival-index-card-detector/model.pt (YOLO26n) on small-models-for-glam/index-card-detection-v5 — 1,425 archival scans across four institutions, with the 25 navy multi-card scans re-labelled via ensemble + review.
Compared to predecessors:
Single class: card.
NationalLibraryOfScotland/archival-index-card-detectorRun the model on any archival scan to locate index cards. Returns one bounding box per detected card. Pair with a downstream OCR/VLM model for content extraction.
small-models-for-glam/index-card-blank-detector.bbox = whole image for pre-cropped sources). Boxes on cropped-card inputs are loose by construction.from huggingface_hub import hf_hub_download
from ultralytics import YOLO
weights = hf_hub_download(
repo_id="small-models-for-glam/index-card-detector-v5",
filename="best.pt",
)
model = YOLO(weights)
results = model.predict("your_scan.jpg", conf=0.25, imgsz=1024)[0]
for box in results.boxes.xyxy.cpu().tolist():
print(box) # [x1, y1, x2, y2] in pixel coords
weights = hf_hub_download(
repo_id="small-models-for-glam/index-card-detector-v5",
filename="best.onnx",
)
model = YOLO(weights) # ultralytics auto-uses onnxruntime
results = model.predict("your_scan.jpg", conf=0.25, imgsz=1024)[0]
The ONNX export uses dynamic spatial axes, so it accepts variable input sizes without re-export. ~2–3× faster than the PyTorch .pt checkpoint on CPU.
small-models-for-glam/index-card-detection-v5 — 1,425 images across four collections; navy re-labelled via v3+v4 ensemble + human review (see dataset card for full provenance).
NationalLibraryOfScotland/archival-index-card-detector/model.ptmulti_scale: False (single-scale — we found multi-scale traded too much recall)batch=-1, picks ~13 on l4x1)cos_lr=True)best.pt), 10.7 MB (best.onnx)(See Hub model page for the live per-collection val mAP table — auto-populated by the training script's final model card.)
mAP@50 is essentially saturated (~0.995) across all collections, matching v3 and beating v4. mAP@50:95 is also strong because we avoided the multi-scale recall trade-off.
| Model | navy mAP50:95 | 9-card grid recall | Multi-scale | Notes |
|---|---|---|---|---|
| v3 | 0.929 | 9/9 | No | Original baseline |
| v4 | 0.764 | 7/9 (at conf 0.25) | Yes | Recall regression on busy multi-card scenes |
| v5 (this) | TBD | TBD | No | v3 + refined navy labels |
@misc{vanstrien_index_card_detector_v5_2026,
author = {van Strien, Daniel},
title = {{index-card-detector-v5: YOLO26n for archival index cards, ensemble-refined}},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/small-models-for-glam/index-card-detector-v5}
}