Instructions to use BingoG/SpatialAV2AV with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LTX.io
How to use BingoG/SpatialAV2AV with LTX.io:
# Install the LTX-2 pipelines git clone https://github.com/Lightricks/LTX-2.git cd LTX-2 uv sync --frozen
# Download the weights from this repo, plus the Gemma text encoder hf download BingoG/SpatialAV2AV --local-dir models/SpatialAV2AV hf download google/gemma-3-12b-it-qat-q4_0-unquantized --local-dir models/gemma-3-12b
# Fast pipeline (distilled model, no distilled LoRA needed) uv run python -m ltx_pipelines.distilled \ --distilled-checkpoint-path models/SpatialAV2AV/<distilled-checkpoint>.safetensors \ --spatial-upsampler-path models/SpatialAV2AV/<spatial-upsampler>.safetensors \ --gemma-root models/gemma-3-12b \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For image-to-video, add: --image path/to/image.jpg 0 0.8# HQ pipeline (two-stage, higher quality) uv run python -m ltx_pipelines.ti2vid_two_stages_hq \ --checkpoint-path models/SpatialAV2AV/<checkpoint>.safetensors \ --distilled-lora models/SpatialAV2AV/<distilled-lora>.safetensors 0.8 \ --spatial-upsampler-path models/SpatialAV2AV/<spatial-upsampler>.safetensors \ --gemma-root models/gemma-3-12b \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For image-to-video, add: --image path/to/image.jpg 0 0.8 - Notebooks
- Google Colab
- Kaggle
| # SpatialAV2AV — Test Set (held-out evaluation split) | |
| Origin-disjoint **test split** for evaluating SpatialAV2AV spatial audio-video editing. | |
| This folder ships the **manifests + split reports only** (no media). The media (mp4 with | |
| embedded stereo audio) live in the dataset repo [`BingoG/LTX`](https://huggingface.co/datasets/BingoG/LTX). | |
| ## Files | |
| | File | What | | |
| |------|------| | |
| | `test.list` | 11,616 metadata-JSON paths (absolute, on the source cluster) — the held-out test samples | | |
| | `test.relative.list` | same 11,616 samples as **relative** paths (`final_json/<clip>.json`) — resolve against `BingoG/LTX` after `snapshot_download` | | |
| | `split_summary.json` | full split statistics (origins, per-split sample & trajectory counts, seed, input SHA) | | |
| | `split_overlap_report.json` | origin-overlap audit — **all zero** (train/val/test are origin-disjoint) | | |
| | `MANIFEST.sha256` | SHA256 of train/val/test.list + input list, for downstream binding | | |
| ## How this split was built | |
| - **Source set:** the 116,147-pair training pool (`all.list`, the authoritative | |
| SpatialAV2AV set — the same list the step_04000 weights trained on). | |
| - **Ratios:** 80 / 10 / 10 (train / val / test), **seed 20260718** (frozen). | |
| - **Grouping:** origin-disjoint by `video_id` — one source video (and all 10 of its | |
| camera-trajectory variants) lands entirely in one split. This is what makes the test | |
| score a **generalization** measure, not a memorization one: if `pan_left` were in train | |
| and `pan_right` in test, the model would already have seen the same person/room/voice. | |
| ### Numbers | |
| | Split | origins | samples | | |
| |-------|--------:|--------:| | |
| | train | 11,616 | 92,915 | | |
| | val | 1,452 | 11,616 | | |
| | **test** | **1,452** | **11,616** | | |
| Test-set trajectory coverage (each of the 10 canonical trajectories present): | |
| `pan_left/right` and `rotate_left/right` = 1,452 each, `push_in`/`pull_out` = 1,452 each, | |
| `fixed_*` = 692–779 each. 1,452 origins ≫ the ≥100 needed for reliable origin-cluster | |
| bootstrap CIs. | |
| ## Validation (all PASS) | |
| 1. **Origin overlap** — train∩val, train∩test, val∩test all **0** origins. | |
| 2. **Coverage** — 92,915 + 11,616 + 11,616 = 116,147 = input (no sample lost). | |
| 3. **Trajectory presence** — test contains all pan/rotate directions (I3 counterfactual | |
| pairs have data). | |
| ## Note on how the manifest was generated | |
| The split's deterministic core (`random.Random(20260718)` shuffle + greedy origin | |
| allocation) was reproduced from the filenames because the source media filesystem was | |
| temporarily unreachable for bulk access. `origin_id == video_id == filename-stem-before-'+'` | |
| was verified identical to the JSON contents on a 200-sample check, and `.resolve()` is | |
| idempotent on these paths — so the emitted lists are byte-equivalent to the official | |
| `SpatialAV2AV_build_splits.py` output. Counterfactual pair manifests | |
| (`test_pairs.jsonl`, needed only for I3 eval) are **not** included here; they require | |
| decoding each clip's media and will be added separately. | |
| ## Usage | |
| ```python | |
| from huggingface_hub import hf_hub_download | |
| p = hf_hub_download("BingoG/SpatialAV2AV", "test_set/test.relative.list") | |
| # point the evaluator's TEST_LIST at the resolved paths under a BingoG/LTX snapshot | |
| ``` | |