---
license: apache-2.0
tags:
- vision
- image-classification
- transformer
- self-supervised
datasets:
- imagenet-1k
---
# DINOv2 for TI EdgeAI
### Self-Supervised Vision Transformer Backbone for Image Classification
[](https://opensource.org/licenses/Apache-2.0)
[](https://onnx.ai/)
[](https://github.com/TexasInstruments/edgeai)
[](http://www.image-net.org/)
---
## Overview
**DINOv2** (Self-**Di**stillation with **No** Labels v2) is a self-supervised Vision Transformer pre-training method from Meta AI. It produces high-performance visual features using a purely self-supervised training regime on 142M images — no labels required during pre-training. The pretrained backbones are paired with a lightweight linear classification head for ImageNet-1K inference, outputting 1000-class logits.
All models use a **ViT/14** patch size (14x14 patches) and are evaluated at **224x224** input resolution. Some variants add **register tokens** ([arXiv:2309.16588](https://arxiv.org/abs/2309.16588)) — extra learnable tokens that absorb the attention artifacts otherwise seen in patch-token feature maps, giving slightly better accuracy with the same backbone size.
> See [DINO](../DINO/) for the original first-generation models.
---
## Model Variants
| Model | Architecture | Params | GFLOPs | Top-1 Acc | Validated Devices | Config |
|-------|-------------|--------|--------|-----------|----------|--------|
| `dinov2_vits14_lc` | ViT-S/14 distilled | 21M | 4.6 | 81.1% | TDA4VH | [dinov2_vits14_lc_config.yaml](dinov2_vits14_lc_config.yaml) |
| `dinov2_vits14_reg_lc` | ViT-S/14 distilled + registers | 21M | 4.6 | 80.9% | TDA4VH | [dinov2_vits14_reg_lc_config.yaml](dinov2_vits14_reg_lc_config.yaml) |
| `dinov2_vitb14_lc` | ViT-B/14 distilled | 86M | 17.6 | 84.5% | TDA4VH | [dinov2_vitb14_lc_config.yaml](dinov2_vitb14_lc_config.yaml) |
| `dinov2_vitb14_reg_lc` | ViT-B/14 distilled + registers | 86M | 17.6 | 84.6% | TDA4VH | [dinov2_vitb14_reg_lc_config.yaml](dinov2_vitb14_reg_lc_config.yaml) |
**Recommended for edge deployment:** `dinov2_vits14_lc` (best accuracy/compute trade-off)
> **Note:** ViT-L/14 and ViT-g/14 variants (`dinov2_vitl14_lc`, `dinov2_vitg14_lc`, and their `_reg_lc` counterparts) are excluded from this repo — they require ~16 GB+ RAM to export and are not suitable for edge (TIDL) deployment.
---
## Quick Start
### Prerequisites
```bash
pip install torch torchvision onnx>=1.22.0 onnxruntime>=1.23.2 onnx-simplifier
```
### Export the Model
```bash
# Export the default model (ViT-S/14 distilled)
python prepare_model.py
# Export a specific model variant
python prepare_model.py --model dinov2_vitb14_lc
# Export the registers variant
python prepare_model.py --model dinov2_vits14_reg_lc
# Export all edge-suitable models
python prepare_model.py --model all
# Re-run shape fixing on an already-exported ONNX
python prepare_model.py --model dinov2_vits14_lc --skip-export
```
The script automatically:
- Loads the pretrained backbone + linear classification head from PyTorch Hub (`facebookresearch/dinov2`)
- Exports to ONNX (opset 17) with a dynamic batch axis
- Fixes input shapes to `[1, 3, 224, 224]` and propagates shapes via ONNX shape inference
- Runs onnx-simplifier (`onnxsim`) and validates the final model with `onnx.checker`
### Compile and Infer uing edgeai-tidlrunner
> **Note:** Run the commands below from inside the `tidlrunner` directory (the cloned [edgeai-tidlrunner](https://github.com/TexasInstruments/edgeai-tidlrunner) repository), with `--config_path` pointing to this model's config file.
**Compile using edgeai-tidlrunner - on PC**
```bash
cd /path/to/edgeai-tidlrunner
tidlrunner-cli compile --target_device J784S4 \
--config_path /path/to/dinov2_vits14_lc_config.yaml
```
**Run Inference Benchmark - on device**
```bash
cd /path/to/edgeai-tidlrunner
tidlrunner-cli infer --target_device J784S4 \
--config_path /path/to/dinov2_vits14_lc_config.yaml
```
### Compile and Infer using edgeai-tidl-tools (Advanced):
Follow the instructions at https://github.com/TexasInstruments/edgeai-tidl-tools
### Deploy using edgeai-tidl-tools:
Deplyment can be done using **[edgeai-tidl-tools](https://github.com/TexasInstruments/edgeai-tidl-tools)**. For ONNX models, onnxruntime-tidl with TIDL acceleration can be used. Consult the documentation of edgeai-tidl-tools for more details.
---
## Citation
If you use these models, please cite:
```bibtex
@misc{oquab2023dinov2,
title={DINOv2: Learning Robust Visual Features without Supervision},
author={Oquab, Maxime and Darcet, Timothée and Moutakanni, Theo and others},
journal={arXiv:2304.07193},
year={2023}
}
@misc{darcet2023vitneedreg,
title={Vision Transformers Need Registers},
author={Darcet, Timothée and Oquab, Maxime and Mairal, Julien and Bojanowski, Piotr},
journal={arXiv:2309.16588},
year={2023}
}
```
---
## 🔗 Resources
| Resource | Link |
|----------|------|
| **Paper** | [arXiv:2304.07193](https://arxiv.org/abs/2304.07193) |
| **Registers Paper** | [arXiv:2309.16588](https://arxiv.org/abs/2309.16588) |
| **Source Code** | [facebookresearch/dinov2](https://github.com/facebookresearch/dinov2) |
| **edgeai-tidl-tools** | [GitHub](https://github.com/TexasInstruments/edgeai-tidl-tools) |
| **edgeai-tidlrunner** | [GitHub](https://github.com/TexasInstruments/edgeai-tidlrunner) |
| **EdgeAI SDK** | [Documentation](https://github.com/TexasInstruments/edgeai/blob/main/edgeai-mpu/readme_sdk.md) |
| **DINO** | [Predecessor model](../DINO/) |
---
## Related Models
|
**DINO**
Predecessor
First-generation self-supervised ViT
|
**ViT**
Alternative backbone
Supervised transformer
|
**ResNet**
CNN backbone
Lower compute
|
**ConvNeXt**
Modern CNN
Transformer-inspired design
|
---
**Maintained by:** Texas Instruments EdgeAI Team
**Last Updated:** August 2026