# Checkpoints and Configs Released checkpoints are hosted in the [OmniV2X Hugging Face model repo](https://huggingface.co/AndyPJT/OmniV2X). ```bash mkdir -p checkpoints hf download AndyPJT/OmniV2X \ omniv2x_dairv2x_no_map.ckpt \ omniv2x_dairv2x_map.ckpt \ --local-dir checkpoints ``` ## Recommended Files Use these names for local checkpoints: | Setting | Local filename | Agent config | Inference caps | | --- | --- | --- | --- | | OmniV2X no-map | [`checkpoints/omniv2x_dairv2x_no_map.ckpt`](https://huggingface.co/AndyPJT/OmniV2X/resolve/main/omniv2x_dairv2x_no_map.ckpt) | `omniv2x_flow` | `MAP_TOKENS=0 INFRA_BBOX_TOKENS=16 NUM_INFERENCE_STEPS=20` | | OmniV2X map | [`checkpoints/omniv2x_dairv2x_map.ckpt`](https://huggingface.co/AndyPJT/OmniV2X/resolve/main/omniv2x_dairv2x_map.ckpt) | `omniv2x_map_flow` | `MAP_TOKENS=128 INFRA_BBOX_TOKENS=16 NUM_INFERENCE_STEPS=20` | The released checkpoints are sanitized Lightning checkpoints for public inference. They keep model weights and inference config, but omit optimizer, scheduler, callback, and training loop state. EMA checkpoints can be archived for ablations, but the reproducibility baseline uses raw `traj_ade=*.ckpt` weights. Each public checkpoint should include an `agent_config` entry in the Lightning checkpoint. If you publish an older checkpoint without embedded config, keep the matching Hydra file next to the run at `code/hydra/config.yaml`; otherwise inference falls back to the public no-map defaults. ## Config Contract Both DAIR-V2X checkpoints use: - DINOv3 ViT-B/16 visual encoder with 448x448 inputs - two front-camera frames per sample - ray positional encoding with camera parameters - flow matching with 100 training timesteps and 20 inference steps - history trajectory ego conditioning with five ego tokens - infrastructure object-token conditioning with model capacity for 32 objects; the public reproduction command caps this at 16 bbox tokens The map checkpoint additionally enables map conditioning with 128 map tokens, implemented as 32 lanes and 4 tokens per lane. ## Released Checkpoint Verification The released checkpoints were verified on the DAIR-V2X validation split with 2,390 samples, seed 42, 20 flow-matching inference steps, and the inference caps listed above. PDMS values are reported on a 0-100 scale. | Setting | Samples | Avg. L2 (m) | 3s Avg. Collision (%) | PDMS | | --- | ---: | ---: | ---: | ---: | | OmniV2X no-map | 2,390 | 0.89 | 0.07 | 88.62 | | OmniV2X map | 2,390 | 0.90 | 0.01 | 90.08 | ## Reproducing DAIR-V2X Inference No-map: ```bash export CHECKPOINT_PATH=checkpoints/omniv2x_dairv2x_no_map.ckpt export DAIRV2X_DATA_ROOT=/path/to/dair-v2x-seq MAP_TOKENS=0 INFRA_BBOX_TOKENS=16 NUM_INFERENCE_STEPS=20 \ RUN_NAME=omniv2x_no_map_val \ bash scripts/infer_dairv2x.sh ``` Map: ```bash export CHECKPOINT_PATH=checkpoints/omniv2x_dairv2x_map.ckpt export DAIRV2X_DATA_ROOT=/path/to/dair-v2x-seq export DAIRV2X_MAP_ROOT=/path/to/dair-v2x-seq/maps MAP_TOKENS=128 INFRA_BBOX_TOKENS=16 NUM_INFERENCE_STEPS=20 \ RUN_NAME=omniv2x_map_val \ bash scripts/infer_dairv2x.sh ``` The inference script defaults to `--device cuda`, matching the paper reproduction setting. For CPU-only installation checks, append `--device cpu` and use `--max_scenarios` for a small smoke test. Fine-tuning defaults to the no-map agent. For the map-conditioned variant, set `AGENT_CONFIG=omniv2x_map_flow` when launching `scripts/finetune_dairv2x.sh`. Evaluate a saved trajectory pkl: ```bash export TRAJECTORY_RESULTS=outputs/dairv2x_inference/omniv2x_no_map_val_seed42.pkl export DAIRV2X_DATA_ROOT=/path/to/dair-v2x-seq export DAIRV2X_MAP_ROOT=/path/to/dair-v2x-seq/maps bash scripts/eval_dairv2x_pdms.sh ```