SpatialAV2AV / test_set /README.md
BingoG's picture
Add held-out test split (1452 origins / 11616 samples, 80/10/10 seed 20260718)
797378a verified
|
Raw
History Blame Contribute Delete
3.24 kB
# 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
```