Model reference · open weights
aloe-dino-in1k-lp is an open-weight embedding model from rmaser. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.
Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.
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 |
| Licence | Commercial licence needed |
About
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.
From the published model card. Full card on the HuggingFace links in the sidebar.
Using it via the API
Once AxForge deploys aloe-dino-in1k-lp for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (aloe-dino-in1k-lp below is illustrative; you get the exact model name on deployment.)
$ curl -sS https://api.axforge.ai/v1/embeddings \
-H "Authorization: Bearer $AXFORGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"aloe-dino-in1k-lp","input":"text to embed"}'
Create an account — your API key is available in the console. 3M free tokens every 30 days with every new account.