No labels. No captions. Pure structure.
DINOv2 learned to see by looking at 142 million images — with no labels at all. Below, its raw patch features are projected to color (the paper's famous PCA "rainbows"), computed with the real model on a Raspberry Pi. Same-colored regions = parts the model considers similar… including across different objects.
The rainbow slider
Drag the divider: photo on the left, what DINOv2 sees on the right. Notice how heads match heads and legs match legs — nobody ever told it what those are.
Same idea, different animal
Move your cursor over the left image — patches with the most similar DINOv2 features light up on the right, live (cosine similarity in your browser). Watch a retriever's ear find a dalmatian's ear.
This toy needs a 342 KB file of pre-computed DINOv2 features. It downloads when you scroll here, not when the page opens.
Hover on desktop · touch and drag on a phone — the match stays lit when you lift your finger.
Everything on this page was computed ahead of time on a Raspberry Pi; no model runs here. Opening it costs about 420 KB of photos and feature maps, and the correspondence toy above adds 342 KB when you reach it. The next page runs the real DINOv2 in your browser instead, which costs more.
About this demo
Why this matters
Features this good, learned without labels, are why DINOv2/v3 power everything from forest mapping with the World Resources Institute to NASA JPL's Mars robots — one frozen backbone, endless tasks.
What you're looking at
Each image becomes a ~37×37 grid of patches; each patch a 384-dim vector. We PCA those vectors to 3 components → RGB. Foreground/background separates on the first component, parts on the next three.
Go deeper
DINOv2 paper · code & weights (Apache 2.0) · the DINO constellation on the map.