Views
No views yet
| File | Format | Size | Notes |
|---|---|---|---|
vehicledino_dinov2.onnx | FP32 | 450 MB | Full precision |
vehicledino_dinov2_int8.onnx | INT8 | 139 MB | Quantized, 3.2x smaller |
images — float32 tensor (1, 3, 560, 560), ImageNet-normalized RGB| Tensor | Shape | Description |
|---|---|---|
det_boxes | (1, 300, 4) | Detection boxes (cx, cy, w, h normalized) |
det_classes | (1, 300, 5) | Detection class logits (car, suv, truck, bus, van) |
vehicle_types | (1, 1, 8) | Vehicle type logits |
makes | (1, 1, 42) | Make classification logits |
models | (1, 1, 323) | Model classification logits |
reid_embeds | (1, 1, 256) | L2-normalized Re-ID embedding |
ocr_logits | (1, 1, 8, 37) | License plate OCR logits (8 positions, 37 chars) |
| Task | Metric | Score |
|---|---|---|
| Type Classification | Top-1 Accuracy | 95.6% |
| Make Classification | Top-1 Accuracy | 98.4% |
| Model Classification | Top-1 Accuracy | 87.7% |
| Re-ID (VeRi-776) | mAP | 61.1% |
| Re-ID (VeRi-776) | Rank-1 | 86.1% |
1import onnxruntime as ort
2import numpy as np
3from PIL import Image
4
5session = ort.InferenceSession("vehicledino_dinov2_int8.onnx")
6
7# Preprocess: resize to 560x560, ImageNet normalize
8img = Image.open("car.jpg").resize((560, 560))
9arr = np.array(img).astype(np.float32) / 255.0
10mean = [0.485, 0.456, 0.406]
11std = [0.229, 0.224, 0.225]
12arr = (arr - mean) / std
13tensor = arr.transpose(2, 0, 1)[np.newaxis] # (1, 3, 560, 560)
14
15outputs = session.run(None, {"images": tensor.astype(np.float32)})1@article{vehicledino2026,
2 title={VehicleDINO: Unified Multi-Task Vehicle Recognition via DINOv2 Features},
3 author={Soh, Wei Meng},
4 year={2026}
5}