DINOv2: Optimized for AMD ROCm
DINOv2 is a self-supervised Vision Transformer evaluated here as an ImageNet linear classifier (ViT-S/B/L/G with a 1000-class head). This repository packages evaluation and inference for image classification using ONNX Runtime, exported and validated for AMD ROCm (via the MIGraphX execution provider) so it runs efficiently on AMD GPUs, CPUs, and NPUs.
This is based on the implementation of DINOv2 found here. This repository contains configurations and scripts optimized for AMD® ROCm™ platforms. You can use the dinov2 AMD scripts to reproduce results or export with custom configurations. More details on model performance can be found here.
Task Overview
Task: Image classification
Dataset: ImageNet validation (~50,000 images, 1,000 classes)
Output metrics: Top-1 accuracy, Top-5 accuracy
Model variants: Default is base (
dinov2_vitb14_lc). Override withMODEL_SIZE=small|base|large|giant(hub names:dinov2_vits14_lc,dinov2_vitb14_lc,dinov2_vitl14_lc,dinov2_vitg14_lc).
AMD ROCm Optimization
This model export has been adapted and validated for AMD Instinct™ / Radeon™ GPUs running ROCm, as well as AMD CPUs. Key points:
- Validated backends: ONNX Runtime across CPU (native CPU execution provider), GPU (MIGraphX execution provider, ROCm-based), and NPU (VitisAI execution provider).
- CPU execution path supported independently of GPU/NPU availability, for environments without ROCm-capable GPU or NPU hardware.
| Runtime | Precision | Backend | Hardware | Notes |
|---|---|---|---|---|
| ONNX Runtime | FP32, FP16, BF16, INT8 | CPU Execution Provider | AMD CPU | INT8 available via runtime auto-quantization flags |
| ONNX Runtime | FP32, FP16, BF16, INT8 | MIGraphX Execution Provider (ROCm) | AMD GPU | First run may take longer due to graph compilation |
| ONNX Runtime | FP32, FP16, BF16, INT8 | VitisAI Execution Provider | AMD NPU (Ryzen AI) | INT8 requires AMD Quark calibration (make quantize-npu-int8) |
Getting Started
For setup instructions, evaluation scripts, and custom configuration options, see the dinov2 on GitHub.
Model Details
Model Type: Self-supervised Vision Transformer (ViT) image classifier with a linear-probe head
Base Model: facebookresearch/dinov2 (DINOv2 ViT-B/14 with linear classification head)
Model Stats:
- Model variant: base (default) — small, large, giant also supported
- Precision tested: FP32, FP16, BF16, INT8
Accuracy Pipeline
Higher Top-1 accuracy means a larger fraction of images are classified with the correct label as the top prediction — 100% is perfect, 0% is chance-level for random guessing. Top-5 allows credit when the true class appears anywhere in the model's five highest-scoring labels; values above ~80% Top-1 on ImageNet val are considered strong for this linear-probe setup.
Metrics Explained
| Metric | Description |
|---|---|
| Top-1 | Primary classification metric — the fraction of images where the highest-scoring class matches ground truth. Strictest single-label score; a wrong top prediction counts as a full miss even if the true class ranked second. |
| Top-5 | Fraction of images where the true class appears in the model's top five predictions. Looser than Top-1 and typically higher; useful when near-miss rankings still indicate the model recognized the object category. |
Dig Deeper
Want to explore the full evaluation scripts, config options, and other AMD-optimized model examples?
📂 View the full project on GitHub
The GitHub repository includes:
- Makefile-driven benchmark, profile, and evaluation targets for CPU, GPU, and NPU
- Per-device precision configs (FP32/FP16/BF16/INT8) and ONNX export scripts
- ImageNet dataset staging and full-validation evaluation pipeline
- Additional DINOv2 model variants (small, large, giant)
