Model reference · open weights
aloe-dinov3-in1k-lp is an open-weight embedding model from rmaser. aloe-v2-dinov3-base-in1k-lp (FP32) weighs 177 MB; the smallest configuration that runs it is RTX 3060 12 GB.
What it is
| Released by | rmaser |
|---|---|
| Type | Embedding models |
| Task | Image embed |
| Parameters (lead) | 88M |
| Runs with | transformers |
| Released | 2026-07-18 |
| Popularity | 909 downloads / month |
| Weights | 177 MB (aloe-v2-dinov3-base-in1k-lp (FP32), file size) |
| Licence | Non-commercial |
What it runs on
Weights 177 MB (file size) · overhead about 1.1 GB.
| Card | Runs | Counted memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
Estimates, not measurements: the weights are the build's file size. No cache grows with use; a batch of inputs needs working memory of its own. Counted memory is 92 % of what CUDA reports for the card.
From the model card
ALOEv2 is a B-cos-interpretable DINOv3 model obtained by fine-tuning the original ALOE backbones for a further 30k steps. It keeps the original three-layer distillation scheme but adds per-step multi-resolution sampling (224/384/480) and fixes a target-layer bug so the even-thirds distillation layers include the final transformer block.
The original ALOE distilled at a single resolution (224 px), which left features poorly calibrated for the high-resolution inputs that dense-prediction probes — correspondence, depth, surface normals — actually run on, so feature quality degraded at those resolutions. Training on multiple resolutions removes that train/eval mismatch and restores dense-prediction accuracy close to the DINOv3 teacher, while retaining the inherent B-cos explanations and holding ImageNet-1k recognition roughly unchanged.
This card is shared by the ALOEv2 DINOv3 backbones and their ImageNet-1k linear-probe (LP) classifier heads:
| Kind | Repos |
|---|---|
| Backbone | rmaser/aloe-v2-dinov3-{small,base,large} |
| ImageNet-1k LP | rmaser/aloe-v2-dinov3-{small,base,large}-in1k-lp |
Fig 2a — dense correspondence & surface normals across model sizes. ALOEv2 (orange) tracks the DINOv3 teacher closely on NAVI / ScanNet / SPair / surface-normals, while the original ALOE (grey, dotted) lags far behind.
NYUv2 depth probe. δ<1.25 (higher better) and RMSE (lower better) by size:
Fig 3 — discriminative quality (ImageNet-1k kNN@20 + Linear Probe).
GridPG localization. ALOEv2 inherent B-cos localization (higher is better):
| Size | ALOEv2 B-cos | Original ALOE B-cos | DINOv3 AttnLRP |
|---|---|---|---|
| Small | 75.80 | 79.55 | 53.46 |
| Base | 87.77 | 82.69 | 65.11 |
| Large | 84.38 | 80.69 | 65.33 |
ImageNet-1k (base): kNN@20 81.43, Linear Probe 83.92.
from transformers import AutoImageProcessor, AutoModel
repo_id = "rmaser/aloe-v2-dinov3-base"
processor = AutoImageProcessor.from_pretrained(repo_id, trust_remote_code=True)
model = AutoModel.from_pretrained(repo_id, trust_remote_code=True)
model.eval()
With output_hidden_states=True, hidden_states[i] is the raw output of block i — in
particular hidden_states[-1] is not last_hidden_state, which additionally passes through
post_layernorm. This is the convention the distillation loss was defined against, and recent
Transformers versions report the post-norm tensor in hidden_states[-1] on the official DINOv3
teacher, so the two APIs differ at that one index.
Use hidden_states[i] for anything layer-wise — ALOEv2 supervises blocks n/3, 2n/3 and n,
where its cosine similarity to the DINOv3 teacher's corresponding pre-norm features is 0.98–0.99.
post_layernorm was not part of the loss, so last_hidden_state is noticeably less aligned
(0.78–0.86).
-in1k-lp only)from PIL import Image
from transformers import AutoImageProcessor, AutoModelForImageClassification
repo_id = "rmaser/aloe-v2-dinov3-base-in1k-lp"
processor = AutoImageProcessor.from_pretrained(repo_id, trust_remote_code=True)
model = AutoModelForImageClassification.from_pretrained(repo_id, trust_remote_code=True)
model.eval()
image = Image.open("image.jpg").convert("RGB")
pixel_values = processor(images=image, return_tensors="pt").pixel_values
result = model.explain(pixel_values, idx=None)
class_idx = int(result["explained_class_idx"][0])
print(f"Predicted ImageNet-1k class index: {class_idx}")
rgba = (result["explanation"][0] * 255).astype("uint8")
Image.fromarray(rgba).save("explanation.png")
idx=None explains the predicted class. Pass an ImageNet-1k class index to idx to explain a specific class instead. Do not wrap model.explain(...) in torch.inference_mode(): generating the attribution requires input gradients.
ALOE models use custom B-cos-aware Transformers code, so loading requires
trust_remote_code=True. Runtime code: rmaser/aloe-arch.
rmaser/aloe-arch@inproceedings{maser2026align,
title = {Align Once to Explain: Feature Alignment for Scalable B-cosification of Foundational Vision Transformers},
author = {Maser, Raphael and Gairola, Siddhartha and Rao, Sukrut and Schiele, Bernt},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2026},
note = {Poster}
}
This model is released under the Creative Commons Attribution-NonCommercial ShareAlike 4.0 International License. The methods described in this work are patent pending.
Quoted from the model card on Hugging Face — the full card is behind the Hugging Face link above.