Views
No views yet
T=1), a video is T>1 — so the same weights produce dense patch-level
features and a language-aligned global (CLS) representation.
base=100), SwiGLU FFN, LayerScale, per-head QK-norm, gated attention, 4 register tokens.Conv3d(kernel=stride=(tubelet, patch, patch)) — image (B,3,H,W) → T=1,
video (B,T,3,H,W). Token layout [CLS] + [register × 4] + [patch × N].modeling_motif_vision_encoder.py, so it loads with trust_remote_code=True.1import torch
2from transformers import AutoImageProcessor, AutoModel
3from transformers.image_utils import load_image
4
5url = "http://images.cocodataset.org/val2017/000000039769.jpg"
6image = load_image(url)
7
8repo = "Motif-Technologies/Motif-Vision-Encoder"
9processor = AutoImageProcessor.from_pretrained(repo)
10model = AutoModel.from_pretrained(repo, trust_remote_code=True, dtype=torch.bfloat16).to("cuda").eval()
11
12inputs = processor(images=image, return_tensors="pt").to(model.device, torch.bfloat16)
13with torch.inference_mode():
14 outputs = model(**inputs)
15
16outputs.last_hidden_state # (1, 1 + 4 + N, 4096) CLS + registers + patch tokens
17outputs.pooler_output # (1, 4096) global (CLS) representation
18
19patch_tokens = outputs.last_hidden_state[:, 5:, :] # (1, N, 4096), N = (H/16)*(W/16)H/W must be multiples of 16.(B, T, 3, H, W) tensor. Apply the
same per-frame transform (resize → center-crop → ImageNet norm) and stack over time:1import torch
2
3video = torch.randn(1, 8, 3, 256, 256, device="cuda", dtype=torch.bfloat16) # (B, T, 3, H, W)
4with torch.inference_mode():
5 outputs = model(pixel_values=video)
| Backbone | ViT-7B, patch 16, embed 4096, depth 40, heads 32, SwiGLU |
| Register tokens | 4 |
| Position encoding | 3D axial RoPE (T,H,W), base=100.0 |
| Video tokenizer | 3D Conv, tubelet size 2 |
| Precision | bf16 weights |
| Training | DINO + iBOT + KoLeo self-distillation, Gram anchoring, contrastive caption alignment |
| Training data | ~0.47B samples — 448.6M images (96%) + 18.5M video clips (4%) |
BaseModelOutputWithPooling): last_hidden_state (B, 1+4+N, 4096),
pooler_output (B, 4096).| Model | Training data | DAVIS S J&F ↑ | DAVIS M J&F ↑ | DAVIS L J&F ↑ | ImageNet-1K lin. probe ↑ | ADE20K mIoU ↑ | K400 ↑ |
|---|---|---|---|---|---|---|---|
| Motif Vision Encoder | 0.5B | 73.8 | 80.4 | 83.4 | 87.4 | 52.0 | 87.4 |
| DINOv3 | 1.7B | 71.1 | 79.7 | 83.3 | 88.4 | 55.9 | 87.8 |
| Web-DINO | 2B | 57.2 | 65.8 | 69.5 | 85.9 | 42.7 | 86.8 |
| PEcore | 5.4B | 48.2 | 53.1 | 49.8 | 89.3 | 38.9 | 87.9 |
| SigLIP2 | 10B | 56.1 | 62.3 | 62.9 | 89.1 | 45.4 | 86.9 |
| OpenCLIP | 2B | – | – | – | – | – | – |
| V-JEPA 2.1 | 0.022B | 69.0 | – | – | 85.5 | 47.9 | 87.7 |


LICENSE). The model was trained on data governed by the
respective dataset licenses; downstream users are responsible for compliance with those terms.