Views
No views yet
1conda create -n holo4d python=3.12 -y
2conda activate holo4d
3pip install -r requirements/cu130.txt
4pip install -e .HOLO4D_FLASH_ATTN3=1 only in an environment containing exactly one compatible FlashAttention 3 implementation.huggingface_hub. Wan downloads are pinned to the revisions whose T5/VAE objects match the CIVO runtime. The first run is large; later runs reuse ~/.cache/holo4d. Set HOLO4D_CACHE_DIR to move that cache, or provide local path variables to avoid downloads.checkpoints/t2v_49_chunk.safetensors: ordinary 49-frame generation and the first rollout chunk.checkpoints/i2v_49_rollout.safetensors: every generated-boundary continuation chunk.evaluation/syn4d_flying_group_2chunk_demo.npz: compact stride-1 384p input for both no-data-path demos.evaluation/vista4d_50_inputs.npz: 50 sources, two official target trajectories each, and matching VGGT-Omega/CoWTracker caches.evaluation/vista4d_50_reference_outputs.tar: 100 corrected canonical reference predictions.evaluation/public_code_validation_20260812.tar: public-code validation outputs and rollout boundary audits.1# First 49-frame chunk
2bash inference/demo_t2v_49.sh
3
4# T2V first chunk + generated-boundary I2V continuation = 49 + 48 frames
5bash inference/demo_i2v_97.shevaluation/demo_outputs/:
t2v_49_chunk.mp4 and
i2v_49_plus_48_rollout.mp4.avocado-slice:bash inference/demo_vista4d.shVIDEO_NAMES to choose another source. Run bash inference/sample_vista4d.sh directly with no VIDEO_NAMES to generate all 50 sources (100 outputs).1SYN4D_ROOT=/data/Syn4D_v1_stride_5 \
2SYN4D_CAPTION_DIR=/data/Syn4D_caption_cache \
3SEQUENCE_IDXS=0 CAMERA_PAIRS=0-1 \
4OUTPUT_DIR=outputs/syn4d_49f \
5bash inference/sample_19500_syn4d.sh1SYN4D_ROOT=/data/Syn4D_v1_stride_5 \
2SYN4D_CAPTION_DIR=/data/Syn4D_caption_cache \
3FIXED_SOURCE_SEQUENCES=seq_000000 \
4NUM_PAIRS=1 LONG_HORIZON_FRAMES=97 \
5bash inference/sample_mixed_t2v_i2v_syn4d.shLONG_HORIZON_FRAMES to the desired total, for example LONG_HORIZON_FRAMES=97 or 193. Full chunks follow 49 + 48k; a partial final chunk is trimmed to the exact requested length. The launcher automatically creates the stitched video and provenance manifest.| Chunk | Model | Image condition | New frames after stitching |
|---|---|---|---|
| First | t2v_49_chunk | Source video and geometry | 49 |
| Every continuation | i2v_49_rollout | Previous generated chunk's last frame | 48 |
k chunks contain 49 + 48(k-1) unique frames.flying_group rollouts decoded to exactly 97 frames. For both rollouts, the saved seed endpoint and the image read by the I2V continuation had identical SHA-256 hashes.max_abs = mean_abs = 0) and byte-identical MP4 files. See evaluation/SAME_H200_PARITY.md for the controlled comparison. Diffusion outputs are not promised to remain bitwise-identical across different GPU or software stacks; historical archived references are therefore qualitative references rather than golden byte fixtures.evaluation/demo_outputs/, and ten Vista4D examples are in assets/vista4d/; both folders include checksummed manifests. The complete public-code validation bundle, including both long rollouts and boundary-condition audit files, is available from Hugging Face:1hf download yslan/Holo4D-2026 evaluation/public_code_validation_20260812.tar \
2 --local-dir outputs/validationtrain/train_384p.sh matches the released inference contract: V2V width concatenation, 49 frames at 384 × 672, persistent RGB-D trajectories, per-block injection, query-frame impulse, Plücker camera control, ray-map tokens, and sigma shift 5.config/holo4d/train_384p.yaml:1export SYN4D_ROOT=/data/Syn4D
2export SYN4D_CAPTION_DIR=/data/captions/Syn4D
3export RECAMMASTER_ROOT=/data/MultiCamVideo-Dataset
4export RECAMMASTER_CAPTION_CACHE_DIR=/data/captions/recammaster
5export MULTICAM_FG_MASK_ROOT=/data/recammaster_masks
6export RECAMMASTER_SOURCE49_ROOT=/data/recammaster_vggt
7export RECAMMASTER_PAIR1X49_LABEL_ROOT=/data/recammaster_scale_labels
8export RECAMMASTER_COW_ROOT=/data/recammaster_cow
9export DL3DV_ROOT=/data/dl3dv
10export MVS_SYNTH_ROOT=/data/mvs_synth
11
12OUTPUT_PATH=outputs/train_384p \
13NUM_PROCESSES=8 \
14bash train/train_384p.shRESUME_CHECKPOINT=/path/to/step-N.safetensors to continue full-parameter training. The launcher exposes learning rate, epoch length, checkpoint interval, workers, gradient accumulation, and condition dropout through environment variables.config/holo4d/train_i2v_384p.yaml:1export OMNI_DROID_ROOT=/data/omnidroid
2export OMNI_DROID_INDEX=/data/omnidroid/index.json
3export OMNI_DROID_CACHE_MANIFEST=/data/omnidroid/cache_manifest.json
4export DROID_NVS_INDEX=/data/droid/nvs_index.json
5export OMNI_CAPTION_DIR=/data/captions/omnidroid
6
7RESUME_CHECKPOINT=/path/to/an/i2v-training-checkpoint.safetensors \
8OUTPUT_PATH=outputs/train_i2v_384p \
9NUM_PROCESSES=8 \
10bash train/train_i2v_384p.shRESUME_CHECKPOINT to initialize from the Wan I2V base; provide it to continue a Holo4D I2V run. The V2V and I2V launchers share the same geometry/camera contract, trainer, resolution, and noise schedule.eval/ and covers video quality, camera accuracy, Syn4D, DAVIS, and iPhone/DyCheck protocols.1# Standardized video metrics for an output tree
2METHOD=holo4d METHOD_PRED_ROOT=/path/to/predictions \
3DAVIS_ROOT=/path/to/DAVIS/JPEGImages/480p \
4PAIRS_FULL_CSV=/path/to/davis_trajectories_full.csv \
5EVAL_ROOT=outputs/eval bash eval/common/eval_video_metrics.sh
6
7# VGGT-Omega camera-trajectory metrics
8METHOD=holo4d METHOD_PRED_ROOT=/path/to/predictions \
9PAIRS_CSV=/path/to/davis_trajectories.csv CAMERAS_ROOT=/path/to/cameras_2traj \
10VGGT_OMEGA_REPO=/path/to/vggt-omega \
11VGGT_OMEGA_CHECKPOINT=/path/to/vggt_omega_1b_512.pt \
12EVAL_ROOT=outputs/eval bash eval/common/eval_camera_metrics_vggt_omega.sh
13
14# Lightweight repository tests
15pip install -e ".[dev]"
16bash scripts/test_release.shclip_t,clip_f,clip_v. Set METRICS=fvd,clip_t,clip_f,clip_v after placing the two I3D weights named by the launcher under eval/common/video_quality/common_metrics_on_video_quality/fvd/.eval/README.md for dataset layouts and metric-specific commands, evaluation/SAME_H200_PARITY.md for the strict original/public same-stack parity record, and evaluation/A100_REPRODUCTION.md for the public-code reproduction record.1Holo4D/
2├── holo4d/ # geometry, trajectories, data, cache, and rollout logic
3├── holo4d_runtime/ # vendored Wan diffusion/model runtime
4├── examples/wan2.1_fun/ # canonical Python inference entrypoints
5├── inference/ # ready-to-run 49f, Vista4D, and long-rollout launchers
6├── train/ # 384p trainer and launcher
7├── config/holo4d/ # model and production data recipes
8├── eval/ # video, camera, and dataset-specific metrics
9├── assets/ # smoke inputs and qualitative examples
10└── requirements/ # tested CUDA dependency profiles1@software{lan2026holo4d,
2 author = {Yushi Lan},
3 title = {Holo4D: Geometry-Conditioned Novel-View Video Generation},
4 year = {2026},
5 url = {https://github.com/NIRVANALAN/Holo4D}
6}