Open-source dataset curation with hyperbolic embeddings visualization
Project description
HyperView
Open-source dataset curation + embedding visualization (Euclidean + Poincaré disk)
Try the live demo on HuggingFace Spaces
Features
- Dual-Panel UI: Image grid + scatter plot with bidirectional selection
- Multi-Layout Visualizations: Explore Euclidean, Poincare, and spherical layouts in 2D or 3D with UMAP or PCA projections
- HuggingFace Integration: Load datasets directly from HuggingFace Hub
- Fast Embeddings: Uses EmbedAnything for CLIP-based image embeddings
Updates
- 01-02-26 — The Geometry of Image Embeddings, Hands-on Coding Workshop (Berlin Computer Vision Group)
- 17-01-26 — The Geometry of Image Embeddings, Hands-on Coding Workshop, Part I (Berlin Computer Vision Group)
- 11-12-25 — Hacker Room Demo Day #2 (Merantix AI Campus Berlin) — First version of HyperView presented
Quick Start
Docs: docs/datasets.md · docs/colab.md · CONTRIBUTING.md · TESTS.md
Installation
uv pip install hyperview
Run HyperView
hyperview \
--dataset cifar10_demo \
--hf-dataset uoft-cs/cifar10 \
--split train \
--image-key img \
--label-key label \
--samples 500 \
--model openai/clip-vit-base-patch32 \
--layout euclidean \
--layout poincare
This will:
- Use dataset
cifar10_demo - Load up to 500 samples from CIFAR-10
- Compute CLIP embeddings
- Generate Euclidean and Poincare visualizations
- Start the server at http://127.0.0.1:6262
You can also launch with explicit dataset/model/projection args:
hyperview \
--dataset imagenette_clip \
--hf-dataset fastai/imagenette \
--split train \
--image-key image \
--label-key label \
--samples 1000 \
--model openai/clip-vit-base-patch32 \
--method umap \
--layout euclidean
Python API
import hyperview as hv
# Create dataset
dataset = hv.Dataset("my_dataset")
# Load from HuggingFace
dataset.add_from_huggingface(
"uoft-cs/cifar100",
split="train",
max_samples=1000
)
# Or load from local directory
# dataset.add_images_dir("/path/to/images", label_from_folder=True)
# Compute embeddings and visualization
dataset.compute_embeddings(model="openai/clip-vit-base-patch32")
dataset.compute_visualization()
# Launch the UI
hv.launch(dataset) # Opens http://127.0.0.1:6262
Google Colab
See docs/colab.md for a fast Colab smoke test and notebook-friendly launch behavior.
Why Hyperbolic?
Traditional Euclidean embeddings struggle with hierarchical data. In Euclidean space, volume grows polynomially ($r^d$), causing Representation Collapse where minority classes get crushed together.
Hyperbolic space (Poincaré disk) has exponential volume growth ($e^r$), naturally preserving hierarchical structure and keeping rare classes distinct.
Try the live demo on HuggingFace Spaces→
Community
Weekly Open Discussion — Every Tuesday at 15:00 UTC on Discord
Join us to see the latest features demoed live, walk through new code, and get help with local setup. Whether you're a core maintainer or looking for your first contribution, everyone is welcome.
Contributing
Development setup, frontend hot-reload, and backend API notes live in CONTRIBUTING.md.
Related projects
- hyper-scatter: High-performance WebGL scatterplot engine (Euclidean + Poincaré) used by the frontend: https://github.com/Hyper3Labs/hyper-scatter
- hyper-models: Non-Euclidean model zoo + ONNX exports : https://github.com/Hyper3Labs/hyper-models
License
MIT License - see LICENSE for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hyperview-0.3.1.tar.gz.
File metadata
- Download URL: hyperview-0.3.1.tar.gz
- Upload date:
- Size: 632.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68827ddec00d6a27fedf10a18839ab09d83debc9ae16969433cb5ee0d29e635c
|
|
| MD5 |
4276f7dd128986a9262d66a744d81b36
|
|
| BLAKE2b-256 |
32b7f47ec91f025e2161ab8588f258893948ba667ee4ddb3adfba6420898defe
|
File details
Details for the file hyperview-0.3.1-py3-none-any.whl.
File metadata
- Download URL: hyperview-0.3.1-py3-none-any.whl
- Upload date:
- Size: 663.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d231cc3f8c8015d042aecdec6983206c86725e2d7094a87bc51f1b45f7c06315
|
|
| MD5 |
697ea64e0c7c47f0ae644c55b2fc3b75
|
|
| BLAKE2b-256 |
d41ff0c1fbb81cc25a85393ee3472ffbf0deb6a8c238b5a4bbd3e948b0b894b3
|