Buckets:
TriDrive — code snapshot
Training / evaluation code of the paper (anonymous submission under double-blind review). 505 files
(.py, .sh, .txt job queues, .yaml, .md, the AIDE split .csv and one .json joint map); no results, data caches or weights.
Code name. Identifiers in this tree keep the development code name: CockpitWM, cwm3, cwm3d (and the joint model
class CWM3Joint) denote TriDrive; cwm2 / s12_wm are earlier internal stages whose evaluators and packs the code reuses unchanged.
Layout
| Directory | Files | Contents |
|---|---|---|
aide/ |
94 | AIDE keypoint-forecasting programme — data/ (official split lists, protocol.py constants, build_cache.py, Gate-0 verify_protocol.py), models/ (cwm3d* part-tokenised causal Transformer with anchor-mixture horizon head; SiMLPe / ST-GCN / MotionBERT ports; the Driver-WM reproduction driverwm_repro.py / driverwm_kp.py), train/ (train_kp.py + stage runners), eval/ (metrics.py, harness.py, report_*.py), features/ (Qwen3-VL / ego-motion / BATON pose-corpus extraction), tests/, docs/ |
baselines_dms/ |
35 | Driver-monitoring baselines (L2CS gaze, MediaPipe face, OpenFace 3, OpenVINO action / gaze, VideoMAE2): feature extractors/, the common learned warning read-out fit_readout.py (same protocol as train/train_warning_head.py), eval_dms.py wrappers around the unchanged evaluators, phase-1 manifests and reports |
common/ |
3 | pagecache.py (evict a file's pages from the OS page cache after it was read into arrays) and runmeta.py (run.json provenance writer: command, code hash, inputs sha256, seed, timestamps) |
data/ |
45 | Dataset join and target builders — cwm3_dataset.py (row-aligned join of the branch inputs, both regimes), CAN packs, behaviour / gaze / pressure / response / road-dynamics targets, V-JEPA 2 stream packs (build_pack_v2.py), hold-out pipeline, pose-extraction wrappers, feature_provenance.yaml |
eval/ |
123 | Evaluators and report renderers — eval_cwm3.py (scores pred layouts with the unchanged cwm2 evaluator), paired_compare.py (device-cluster bootstrap paired comparison, source of the paired_compare.csv ledger), warning_head_eval.py, alert timing, hold-out scoring, robustness / identity-invariance checks, human-evaluation analysis (newtest_*.py), report_*.py |
models/ |
16 | The joint model cwm3.py (three pretrained base branches V/U/E + directed zero-init interactions + decoders), the branches (branches.py: TCN vehicle branch, GRU driver branch, causal-Transformer environment branch), heads / decoders (incl. RSSM), future-state and overlap heads, keypoint forecaster, Driver-WM-style driver branch u_driverwm.py |
paper/ |
4 | tables/gen_tables.py (regenerates tab_*.tex verbatim from the markdown result tables; policy in NUMBERS_POLICY.md), figs/make_figs.py + figs/FIGURE_LIST.md |
probes/ |
13 | Latent / representation probes over the trunk latents |
tests/ |
47 | pytest suite — causality / no-future-leak checks (test_bank_causality.py, test_chunked_no_target_leak.py, test_no_future_leak.py), the no-DMS-input rule (test_no_dms_inputs.py), layout contracts, model and metric unit tests |
tools/ |
19 | vlm_handson/ — VLM hands-on candidate ranking, scoring and evaluation on the owner-labelled validation frames |
train/ |
93 | Stage trainers — train_cwm3.py (one base branch, one variant, one seed; registry stages.yaml), train_cwm3_joint.py (interactions / decoders; stages_joint.yaml), warning-head, future-state, road-dynamics and keypoint-residual trainers, the sequential queue runner run_queue.py with the queue_*.txt job lists and the shell wrappers used for the paper runs |
weak/ |
12 | Weak supervision — GPT weak-label batches behind a calibration gate and a cost ledger (gpt_*.py), DMS-teacher soft targets and trunk pretraining (dms_teacher_*.py, the only code allowed to read DMS-derived data), hard-clip mining |
Top-level file(s): budget.yaml — the budget file records the paid-API budget and the rules that applied to the
weak-label annotation (kept for provenance).
How paths are configured
- Python modules locate the project root relative to their own file, so the tree can live anywhere as long as its layout is kept:
CWM3 = Path(__file__).resolve().parents[1],EXPLORE = CWM3.parent,S12R = EXPLORE / "s12_wm" / "results"(train/train_cwm3.py),CWM2 = EXPLORE / "cwm2"(train/train_warning_head.py); the AIDE package usesROOT = Path(__file__).resolve().parents[2](aide/data/build_cache.py,aide/eval/harness.py) and reads the dataset location from the environment:AIDE_ROOT = Path(os.environ.get("AIDE_ROOT", "/home/USER/AIDE"))(aide/data/protocol.py). The sibling treescwm2/ands12_wm/of the development checkout are therefore expected next to this directory when a script imports them. - Absolute paths of the development machine were replaced by the placeholder
/home/USER/...— in the shell wrappers (e.g.PY=python,cd /home/USER/cwm3) and in the modules that name a data root. Set these to your own root before running.code/common/holds the shared helpers (pagecache.py,runmeta.py); the snapshot does not define a central root constant, so the placeholders above are the values to edit. - The snapshot contains no host names or IP addresses of the development infrastructure; the remote data server appears as
REMOTE = "USER@REMOTE_HOST"(data/remote_baton.py). The GPU-lock files used by the trainers (/tmp/s13_gpu.lock,/tmp/cwm3_joint_launch.lock,/tmp/cwm3_robust_gate.lock) are plain local paths and are unchanged.
Reproduction entry points (usage lines quoted from the module docstrings)
AIDE keypoint forecasting (Table 1, Appendix C):
python aide/data/build_cache.py [--workers 8] # AIDE keypoint cache (results/cache/aide_kp.npz) from the official splits
python aide/data/verify_protocol.py # Gate 0: reproduce the published zero-velocity numbers on the official test split
python aide/train/train_kp.py --model simlpe_kp --seed 42 --lr 3e-4 --epochs 300 --patience 60
python aide/train/train_kp.py --model cwm3d --seed 42 # plan recipe defaults
python aide/eval/harness.py --pred results/runs/<name>/pred_test.npz --run <name> --model <m> [--seed 0] [--split test] [--n-boot 10000]
train_kp.py flags read from its argument parser include --model, --seed, --epochs, --bs, --lr, --wd, --warmup, --ema,
--patience, --clip, --loss {euc,l1,mse}, --w-euc/--w-nll/--w-bone/--w-jerk, --no-physics, augmentation (--aug-window,
--noise-px, --joint-drop, --translate, --scale, --flip-p), architecture (--d, --layers, --heads, --ffn, --head-hidden,
--no-anchor, --no-uncertainty, --dct, --rollout {chunked,recursive}), --visual / --vis-key / --traffic-gate / --egomotion,
--semantic / --lambda-sem / --label-smoothing / --class-balanced, --select {mpjpe,f1}, --dual-select, --patience-f1.
BATON joint model (Table 3, Appendix B) — train/ and eval/:
python train/train_cwm3.py --stage U0 --variant kin_can --seed 0 [--max-anchors N] [--synthetic N] [--minutes 18] [--epochs E] [--out DIR]
python train/train_cwm3_joint.py --stage I1 --variant all --seed 0 [--base-v can4s|can8s] [--max-anchors N] [--synthetic N] [--minutes 18] [--out DIR]
python train/run_queue.py --jobs U0:kin_can:0 U0:kin_can_vc:0 V0:can4s:0 ... [--extra "--minutes 18"]
python eval/eval_cwm3.py --item cwm3_exp2 --regime manual --runs V0_can4s_s0 V0_can8s_s0 [--with-can-only] [--cells veh_onset,d_onset,y_mae,y_crps] [--n-boot 1000] [--split test]
python eval/warning_head_eval.py --runs I1_all_s0 [I1_all_s1 I1_all_s2] [--item cwm3_v1] [--n-boot 2000] [--skip-gold]
Stage definitions (recipe keys batch, rows_per_epoch, max_epochs, patience, lr, weight_decay, sched, val_rows, amp,
grad_clip, select_LF; lambda branch-loss weights) are in train/stages.yaml and train/stages_joint.yaml; defaults.seeds: [0, 1, 2].
Paper tables and figures: paper/tables/gen_tables.py copies every number verbatim from the markdown result tables
(benchmark/tables/ in this bucket) into tab_*.tex; python3 paper/figs/make_figs.py [heatmap] regenerates the figures.
Data this code expects
The joint-model scripts read the development layout documented in data/cwm3_dataset.py: s12_wm/results/targets_{r}_{s}.npz
(anchor grid, CAN history X, targets Y), cwm3/results/pack/xpre_{r}_{s}.npz (the 8 s CAN pre-history) and the driver-side
kinematic histories (cwm2/results/targets_kin/kinhist_*). The pseudonymised packs released under data/ of this bucket correspond
to the first two; the driver-side cabin-derived features are not released (see the bucket README) and are rebuilt by code/data/
from the BATON corpus. The AIDE scripts need the AIDE dataset from its authors (AIDE_ROOT); benchmark/aide_protocol/ holds the
split lists and the protocol verification record.
- Total size
- 8.6 GB
- Files
- 2,838
- Last updated
- Oct 7
- Pre-warmed CDN
- US EU US EU