Downloads · 30 days
4
8% of all-time downloads
etornam/vit_small_plus_patch16_224.dinov3-mlxim
vit_small_plus_patch16_224.dinov3-mlxim is a image feature extraction model from etornam. Use it for the image feature extraction task on the model card, and read the license before you ship it in a product. It is set up for mlx-image. The card lists the license as other.
A Vision Transformer feature extraction model trained on the LVD-1689M web dataset with DINOv3.
Downloads · 30 days
4
8% of all-time downloads
All-time downloads
50
Public
Parameters
28.7M
115 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors115 MB · 100%
How the weights are stored.
F3228.7M · 100%
From the Hugging Face model README
A Vision Transformer feature extraction model trained on the LVD-1689M web dataset with DINOv3.
The model was trained in self-supervised fashion. No classification head was trained, only the backbone. This is the ViT-S+/16 variant (29M parameters), distilled from the DINOv3 ViT-7B teacher model.
The S+ variant upgrades the standard ViT-S with a SwiGLU feed-forward network instead of a standard MLP, giving it stronger representational capacity over ViT-S with only a modest parameter increase.
Disclaimer: This is a porting of the Meta AI DINOv3 model weights to Apple MLX Framework.
<!-- <div align="center"> <img width="100%" alt="DINO illustration" src="dino.gif"> </div> -->pip install mlx-image
Here is how to use this model for feature extraction:
import mlx.core as mx
from mlxim.model import create_model
from mlxim.io import read_rgb
from mlxim.transform import ImageNetTransform
transform = ImageNetTransform(train=False, img_size=224)
x = transform(read_rgb("image.png"))
x = mx.expand_dims(x, 0)
model = create_model("vit_small_plus_patch16_224.dinov3")
model.eval()
embeds = model(x, is_training=False)
You can also retrieve embeddings from the layer before the head:
import mlx.core as mx
from mlxim.model import create_model
from mlxim.io import read_rgb
from mlxim.transform import ImageNetTransform
transform = ImageNetTransform(train=False, img_size=224)
x = transform(read_rgb("image.png"))
x = mx.expand_dims(x, 0)
model = create_model("vit_small_plus_patch16_224.dinov3", num_classes=0)
model.eval()
embeds = model(x, is_training=False)
This model follows the ViT architecture with a patch size of 16. For a 224×224 image this results in 1 class token + 4 register tokens + 196 patch tokens = 201 tokens.
The model can accept larger images provided the image shapes are multiples of the patch size (16). If this condition is not met, the model will crop to the closest smaller multiple.
| Property | Value |
|---|---|
| Parameters | 29M |
| Patch size | 16 |
| Embedding dim | 384 |
| Depth | 12 |
| Heads | 6 |
| FFN | SwiGLU |
| Position encoding | RoPE |
| Register tokens | 4 |
| Model name | Params | FFN | IN-ReaL | IN-R | Obj.Net |
|---|---|---|---|---|---|
vit_small_patch16_224.dinov3 | 21M | MLP | 87.0 | 60.4 | 50.9 |
vit_small_plus_patch16_224.dinov3 | 29M | SwiGLU | 88.0 | 68.8 | 54.6 |
vit_base_patch16_224.dinov3 | 86M | MLP | 89.3 | 76.7 | 64.1 |
vit_large_patch16_224.dinov3 | 300M | MLP | 90.2 | 88.1 | 74.8 |
Results on global and dense tasks (LVD-1689M pretraining)
| Model | IN-ReaL | IN-R | Obj.Net | Ox.-H | ADE20k | NYU↓ | DAVIS | NAVI | SPair |
|---|---|---|---|---|---|---|---|---|---|
| DINOv3 ViT-S+/16 | 88.0 | 68.8 | 54.6 | 50.0 | 48.8 | 0.399 | 75.5 | 57.1 | 55.2 |
Refer to the DINOv3 paper for full evaluation details and protocols.
The model was distilled from DINOv3 ViT-7B, which was pretrained on LVD-1689M — a curated dataset of 1,689 million images from public web sources collected from Instagram.
DINOv3 delivers generally consistent performance across income categories on geographical fairness benchmarks, though a performance gap between low-income and high-income buckets remains. A relative difference is also observed between European and African regions. Fine-tuning may amplify these biases depending on the fine-tuning labels used.
Original model developed by Meta AI. See the blog post and paper. Weights ported to MLX by etornam45.