What does an embedding look like? Take a CLIP/SigLIP/DINOv2/Florence-2 vector from an image (or a CLIP vector from text) and map its hundreds of dimensions onto a 2D image: consecutive triples as RGB pixels, Hilbert-curve walks, self-similarity matrices, phase wheels. Load two inputs to see their diff and morph between them. With Florence-2 (a VLM) each image also gets a caption: the model's embedding and what it says it sees, side by side. Everything runs locally in your browser.
Drop an image, or click to choose
Drop an image, or click to choose
Re-embed the image at each rotation and stack the vectors into one picture: each row is one angle's embedding, each column one dimension (jointly normalized, so row-to-row shifts are real). The delta view subtracts the 0° row, so dimensions that "move" under rotation light up.
Every panel is the same vector drawn differently; none of these images is "what the model sees"; they're lenses on a point in embedding space. Hover any pixel to see which dimension it is and its value. Image embeddings are mean-pooled and L2-normalized exactly like the embedding lab (shared lib/ core); CLIP text embeddings share the image space, so a caption and a photo can be meaningfully compared and morphed. Powered by Transformers.js, model blobs cached by the service worker. GitHub