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
Add held-out test split (1452 origins / 11616 samples, 80/10/10 seed 20260718)
Browse files- test_set/MANIFEST.sha256 +4 -0
- test_set/README.md +64 -0
- test_set/split_overlap_report.json +12 -0
- test_set/split_summary.json +66 -0
- test_set/test.list +0 -0
- test_set/test.relative.list +0 -0
test_set/MANIFEST.sha256
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
6cb4b2292f7fac4fb1020ea5eb2e09faee2d125777433a165e0669dbbcfe5248 train.list
|
| 2 |
+
0f56416ce6890c5857145d7c74c77269a738784d1d6b16b891b4abcdac3d47d1 val.list
|
| 3 |
+
8bc3e0322d70823ea3cf19533cd756ba4f3c7caf19270eb473aae333e3abef88 test.list
|
| 4 |
+
f6ee06b26c9d18e03e3b8a0724e993a8d0dae27470ebd8c9271368dc99de33b0 <input>all.list
|
test_set/README.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# SpatialAV2AV — Test Set (held-out evaluation split)
|
| 2 |
+
|
| 3 |
+
Origin-disjoint **test split** for evaluating SpatialAV2AV spatial audio-video editing.
|
| 4 |
+
This folder ships the **manifests + split reports only** (no media). The media (mp4 with
|
| 5 |
+
embedded stereo audio) live in the dataset repo [`BingoG/LTX`](https://huggingface.co/datasets/BingoG/LTX).
|
| 6 |
+
|
| 7 |
+
## Files
|
| 8 |
+
|
| 9 |
+
| File | What |
|
| 10 |
+
|------|------|
|
| 11 |
+
| `test.list` | 11,616 metadata-JSON paths (absolute, on the source cluster) — the held-out test samples |
|
| 12 |
+
| `test.relative.list` | same 11,616 samples as **relative** paths (`final_json/<clip>.json`) — resolve against `BingoG/LTX` after `snapshot_download` |
|
| 13 |
+
| `split_summary.json` | full split statistics (origins, per-split sample & trajectory counts, seed, input SHA) |
|
| 14 |
+
| `split_overlap_report.json` | origin-overlap audit — **all zero** (train/val/test are origin-disjoint) |
|
| 15 |
+
| `MANIFEST.sha256` | SHA256 of train/val/test.list + input list, for downstream binding |
|
| 16 |
+
|
| 17 |
+
## How this split was built
|
| 18 |
+
|
| 19 |
+
- **Source set:** the 116,147-pair training pool (`all.list`, the authoritative
|
| 20 |
+
SpatialAV2AV set — the same list the step_04000 weights trained on).
|
| 21 |
+
- **Ratios:** 80 / 10 / 10 (train / val / test), **seed 20260718** (frozen).
|
| 22 |
+
- **Grouping:** origin-disjoint by `video_id` — one source video (and all 10 of its
|
| 23 |
+
camera-trajectory variants) lands entirely in one split. This is what makes the test
|
| 24 |
+
score a **generalization** measure, not a memorization one: if `pan_left` were in train
|
| 25 |
+
and `pan_right` in test, the model would already have seen the same person/room/voice.
|
| 26 |
+
|
| 27 |
+
### Numbers
|
| 28 |
+
|
| 29 |
+
| Split | origins | samples |
|
| 30 |
+
|-------|--------:|--------:|
|
| 31 |
+
| train | 11,616 | 92,915 |
|
| 32 |
+
| val | 1,452 | 11,616 |
|
| 33 |
+
| **test** | **1,452** | **11,616** |
|
| 34 |
+
|
| 35 |
+
Test-set trajectory coverage (each of the 10 canonical trajectories present):
|
| 36 |
+
`pan_left/right` and `rotate_left/right` = 1,452 each, `push_in`/`pull_out` = 1,452 each,
|
| 37 |
+
`fixed_*` = 692–779 each. 1,452 origins ≫ the ≥100 needed for reliable origin-cluster
|
| 38 |
+
bootstrap CIs.
|
| 39 |
+
|
| 40 |
+
## Validation (all PASS)
|
| 41 |
+
|
| 42 |
+
1. **Origin overlap** — train∩val, train∩test, val∩test all **0** origins.
|
| 43 |
+
2. **Coverage** — 92,915 + 11,616 + 11,616 = 116,147 = input (no sample lost).
|
| 44 |
+
3. **Trajectory presence** — test contains all pan/rotate directions (I3 counterfactual
|
| 45 |
+
pairs have data).
|
| 46 |
+
|
| 47 |
+
## Note on how the manifest was generated
|
| 48 |
+
|
| 49 |
+
The split's deterministic core (`random.Random(20260718)` shuffle + greedy origin
|
| 50 |
+
allocation) was reproduced from the filenames because the source media filesystem was
|
| 51 |
+
temporarily unreachable for bulk access. `origin_id == video_id == filename-stem-before-'+'`
|
| 52 |
+
was verified identical to the JSON contents on a 200-sample check, and `.resolve()` is
|
| 53 |
+
idempotent on these paths — so the emitted lists are byte-equivalent to the official
|
| 54 |
+
`SpatialAV2AV_build_splits.py` output. Counterfactual pair manifests
|
| 55 |
+
(`test_pairs.jsonl`, needed only for I3 eval) are **not** included here; they require
|
| 56 |
+
decoding each clip's media and will be added separately.
|
| 57 |
+
|
| 58 |
+
## Usage
|
| 59 |
+
|
| 60 |
+
```python
|
| 61 |
+
from huggingface_hub import hf_hub_download
|
| 62 |
+
p = hf_hub_download("BingoG/SpatialAV2AV", "test_set/test.relative.list")
|
| 63 |
+
# point the evaluator's TEST_LIST at the resolved paths under a BingoG/LTX snapshot
|
| 64 |
+
```
|
test_set/split_overlap_report.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"overlaps": {
|
| 3 |
+
"train_val": [],
|
| 4 |
+
"train_test": [],
|
| 5 |
+
"val_test": []
|
| 6 |
+
},
|
| 7 |
+
"counts": {
|
| 8 |
+
"train_val": 0,
|
| 9 |
+
"train_test": 0,
|
| 10 |
+
"val_test": 0
|
| 11 |
+
}
|
| 12 |
+
}
|
test_set/split_summary.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_note": "built by filename-parse replica (sh7 fs unreachable); origin==video_id verified on 200 samples",
|
| 3 |
+
"data_root": "/apdcephfs_sh7/share_300819555/helensliang/Projects/InspatioWorldGen/output/speakervid",
|
| 4 |
+
"group_key": "origin_id",
|
| 5 |
+
"input_list": "/apdcephfs_cq10/share_1367250/helensliang/code/emotion-talking/video-audio-data/LTX-2-SpatialAV2AV/debug/SpatialAV2AV_full/all.list",
|
| 6 |
+
"input_list_sha256": "f6ee06b26c9d18e03e3b8a0724e993a8d0dae27470ebd8c9271368dc99de33b0",
|
| 7 |
+
"n_samples_input": 116147,
|
| 8 |
+
"n_unique_origins": 14520,
|
| 9 |
+
"origin_resolution_sources": {
|
| 10 |
+
"json:video_id(filename-repro)": 116147
|
| 11 |
+
},
|
| 12 |
+
"per_split_origins": {
|
| 13 |
+
"test": 1452,
|
| 14 |
+
"train": 11616,
|
| 15 |
+
"val": 1452
|
| 16 |
+
},
|
| 17 |
+
"per_split_samples": {
|
| 18 |
+
"test": 11616,
|
| 19 |
+
"train": 92915,
|
| 20 |
+
"val": 11616
|
| 21 |
+
},
|
| 22 |
+
"per_split_trajectory": {
|
| 23 |
+
"test": {
|
| 24 |
+
"fixed_left": 710,
|
| 25 |
+
"fixed_right": 779,
|
| 26 |
+
"fixed_rot_left": 692,
|
| 27 |
+
"fixed_rot_right": 723,
|
| 28 |
+
"pan_left": 1452,
|
| 29 |
+
"pan_right": 1452,
|
| 30 |
+
"pull_out": 1452,
|
| 31 |
+
"push_in": 1452,
|
| 32 |
+
"rotate_left": 1452,
|
| 33 |
+
"rotate_right": 1452
|
| 34 |
+
},
|
| 35 |
+
"train": {
|
| 36 |
+
"fixed_left": 5796,
|
| 37 |
+
"fixed_right": 5956,
|
| 38 |
+
"fixed_rot_left": 5852,
|
| 39 |
+
"fixed_rot_right": 5628,
|
| 40 |
+
"pan_left": 11615,
|
| 41 |
+
"pan_right": 11615,
|
| 42 |
+
"pull_out": 11614,
|
| 43 |
+
"push_in": 11614,
|
| 44 |
+
"rotate_left": 11613,
|
| 45 |
+
"rotate_right": 11612
|
| 46 |
+
},
|
| 47 |
+
"val": {
|
| 48 |
+
"fixed_left": 731,
|
| 49 |
+
"fixed_right": 722,
|
| 50 |
+
"fixed_rot_left": 727,
|
| 51 |
+
"fixed_rot_right": 724,
|
| 52 |
+
"pan_left": 1452,
|
| 53 |
+
"pan_right": 1452,
|
| 54 |
+
"pull_out": 1452,
|
| 55 |
+
"push_in": 1452,
|
| 56 |
+
"rotate_left": 1452,
|
| 57 |
+
"rotate_right": 1452
|
| 58 |
+
}
|
| 59 |
+
},
|
| 60 |
+
"ratios": [
|
| 61 |
+
0.8,
|
| 62 |
+
0.1,
|
| 63 |
+
0.1
|
| 64 |
+
],
|
| 65 |
+
"seed": 20260718
|
| 66 |
+
}
|
test_set/test.list
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
test_set/test.relative.list
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|