zeromodels/dino-vits16
*See [our collection](https://huggingface.co/collections/zeromodels/dino-v1-v2-v3-6a8eaf5a43e1a5079d6cc817) for all versions of DINO.*
Run DINO with Keras 3: JAX, PyTorch, or TensorFlow
  
zeromodels/dino-vits16
Paper: Emerging Properties in Self-Supervised Vision Transformers (arXiv:2104.14294) · HF Papers
DINO is self-supervised: a student and teacher match across crops of the same image with no labels. The resulting features are semantic for free. These checkpoints are backbones that return tokens / feature maps.
For more details on the model, please go to the upstream model card.
Pure-Keras 3 conversion of `facebook/dino-vits16` for zeromodels. One implementation runs unmodified on TensorFlow / Torch / JAX.
This is a self-supervised backbone (DinoViTModel), not a task head.
✨ Quick start
import os
os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow"
from zeromodels.models.dino import DinoViTModel, DinoImageProcessor
# The processor resizes + ImageNet-normalizes, so build the model with
# include_normalization=False (it would otherwise normalize a second time).
model = DinoViTModel.from_weights(
"zeromodels/dino-vits16", include_normalization=False
)
processor = DinoImageProcessor.from_weights("zeromodels/dino-vits16")
pixel_values = processor("your_image.jpg")["pixel_values"]
features = model(pixel_values, training=False)
print(pixel_values.shape, features.shape)Load any DINO variant the same way with from_weights("zeromodels/<variant>"):
Tips
- Set
KERAS_BACKENDbefore importing Keras / zeromodels. - The processor normalizes; pair it with
include_normalization=False. To skip it, feed raw[0, 255]pixels and keep the defaultinclude_normalization=True. dino-resnet50was converted from torch.hubfacebookresearch/dino.- See DINO docs and Loading Weights.
- Community / upstream weights:
DinoViTModel.from_weights("hf:facebook/dino-vits16").
Special Thanks
A huge thank you to the Facebook AI Research DINO authors for creating and releasing these models.
License: Apache 2.0.
