| --- |
| title: MathVision JEPA Explorer |
| emoji: ๐ |
| colorFrom: blue |
| colorTo: green |
| sdk: docker |
| pinned: false |
| --- |
| |
| # MathVision Explorer |
|
|
| Typed Python-startpunt voor een **MathVision + JEPA** explorer. De eerste versie werkt |
| lokaal met MathVision-achtige JSONL-bestanden en een eenvoudige, testbare image embedder. |
| Daarna kun je de embedder vervangen door I-JEPA-features. |
|
|
| ## Installatie |
|
|
| ```powershell |
| uv sync --dev |
| ``` |
|
|
| Of via Make: |
|
|
| ```bash |
| make sync |
| ``` |
|
|
| Met I-JEPA ondersteuning: |
|
|
| ```powershell |
| make sync-ijepa |
| ``` |
|
|
| Alles klaarzetten, inclusief Streamlit, I-JEPA, demo-data, gallery en checks: |
|
|
| ```bash |
| make ready |
| ``` |
|
|
| Met Streamlit UI: |
|
|
| ```bash |
| make sync-app |
| ``` |
|
|
| ## Verwacht JSONL-formaat |
|
|
| Elke regel is een probleem: |
|
|
| ```json |
| {"id":"mv-001","question":"How many cubes are visible?","answer":"7","image":"images/mv-001.png","subject":"geometry","level":2} |
| ``` |
|
|
| Ondersteunde velden: |
|
|
| - `id` of `problem_id` |
| - `question` |
| - `answer` |
| - `image` |
| - `options` |
| - `subject` |
| - `level` |
| - `problem_type` (optioneel) |
| - `solution` |
|
|
| ## Gebruik |
|
|
| Maak eerst een zichtbare mini-demo: |
|
|
| ```bash |
| make demo |
| make gallery |
| make app |
| ``` |
|
|
| ## I-JEPA integratie |
|
|
| De module `mathvision_explorer.embeddings` definieert een `ImageEmbedder` protocol. De |
| meegeleverde `ColorStatsEmbedder` is bewust simpel, zodat tests snel en offline draaien. |
| `IJepaImageEmbedder` gebruikt standaard `facebook/ijepa_vith14_1k` via Hugging Face |
| Transformers en poolt `last_hidden_state` naar een 1D embedding. |
|
|
| Voorbeeld (2 images -> cosine similarity): |
|
|
| ```python |
| from pathlib import Path |
| |
| from mathvision_explorer.embeddings import IJepaImageEmbedder |
| from mathvision_explorer.index import cosine_similarity |
| |
| embedder = IJepaImageEmbedder() |
| v1 = embedder.embed_image(Path("data/demo/images/mv-001.png")) |
| v2 = embedder.embed_image(Path("data/demo/images/mv-002.png")) |
| print(cosine_similarity(v1, v2)) |
| ``` |
|
|
| ## Kwaliteit |
|
|
| ```powershell |
| uv run pytest |
| uv run mypy |
| uv run ruff check . |
| ``` |
|
|
| Of: |
|
|
| ```bash |
| make check |
| ``` |
|
|
| ## Hugging Face Spaces |
|
|
| Deze repo is voorbereid als Docker Space. De hosted entrypoint is `app.py`; die maakt |
| demo-data aan en start daarna de Streamlit explorer. Dependencies staan in |
| `pyproject.toml`; Docker installeert met `pip install -e ".[app,ijepa]"`. |
|
|
| Belangrijk voor I-JEPA: |
|
|
| - Docker gebruikt CPU-only PyTorch wheels. |
| - Transformers is gepind op een stabiele 5.x release met I-JEPA support. |
| - De eerste keer dat `ijepa` gekozen wordt, downloadt de app het model. |
|
|