Reach-down fixed-wing ViT release

Complete model weights and the original training/evaluation artifacts for the released fixed-wing landing-value model. The exact training dataset is m1sc/reach-down-tiles-v2. The source repository is ckwolfe/reach-down; release.json records the source snapshot commit.

Run artifacts

path contents
runs/vit_release/best.pt released full model state, including encoder, decoder, and seven-channel input projection
runs/vit_release/history.csv 24 original training epochs and validation metrics
runs/vit_release/args.json reconstructed training configuration with an explicit provenance note
runs/vit_release_s0/, runs/vit_release_s1/, runs/vit_release_s2/ seed runs, each with full checkpoint, history, and arguments; the released run matches seed 0
split.csv original 2,500-tile training/validation assignment and per-tile metadata
results/*.csv all 60 repository evaluation CSVs, including release evaluations, controls, ablations, and later experiments
runs/eval_release_w0.csv, runs/eval_release_w6.csv persisted released-model episode results at 0 and 6 m/s wind
metrics.json selected metrics recomputed directly from the saved histories and CSVs, with source paths and denominators
docs/, scripts/, reachdown/ method documentation and selected original training, evaluation, model, and normalization code
SHA256SUMS checksums of the uploaded artifacts

The checkpoints contain 287 state entries and 25,086,145 parameters each; they are complete model states rather than adapters. No weights were retrained for this upload.

Training and provenance

The dataset consists of 500 synthetic terrains × five states, with 512 × 512 arrays at 10 m/pixel. Terrain seeds 0–399 are training (2,000 tiles) and 400–499 are validation (500 tiles). Splitting by terrain keeps all states of one terrain together.

Commands recorded in the repository release documentation:

python scripts/make_dataset.py --n-terrains 500 --states 5 --out data/tiles_v2
python scripts/train.py --data data/tiles_v2 --epochs 24 --safety-buffer 40 --false-safe-weight 8 --seed 0 --out runs/vit_release

The seed experiments use seeds 0, 1, and 2 and their respective run directories. The original training argument files were reconstructed after training; each args.json documents the evidence. The checkpoints, histories, tiles, split manifest, and evaluation CSVs are original saved artifacts.

The model uses a Depth Anything V2 Small encoder/decoder with a seven-channel input projection. Four final encoder blocks and the dense decoder are trained. Inputs encode observed elevation, slope and roughness relative to aircraft limits, avoid mask, analytic reach margin, run length, and wind. The network input is 364 × 364. Training recomposes the stored HJ margin and landability into a target with a 40 m safety buffer and weights false-safe predictions by 8. See docs/datagen.md, docs/architecture.md, and the uploaded source.

Evaluation

The training history evaluates on the 500 tiles from held-out terrain seeds 400–499. scripts/evaluate.py evaluates separately generated synthetic terrain and aircraft states, constructs oracle labels and a wind-aware analytic baseline, and tests selected sites using a 5 × 5 neighborhood. Real-DEM evaluation uses independent real terrain; unseen-archetype evaluation uses four additional never-touched map types. Other CSVs archive their named ablations and experiments and should be interpreted with their matching scripts and documentation.

metric result source
validation AUROC at best epoch 0.997941 runs/vit_release/history.csv, epoch 20
validation MAE at best epoch 0.017957 same epoch
mean real-DEM MAE, 16 sites 0.076850 results/real_dem_eval.csv
mean unseen-archetype MAE, 4 sites 0.085825 results/unseen_map_eval.csv

metrics.json includes strict site-safety rates for both the ViT and analytic baseline, with all-episode and feasible-episode denominators. Raw CSVs preserve failures as well as successful cases. The predicted map is an approximation to the offline oracle, and these experimental results do not establish formal safety guarantees.

Download

Clone the source repository and install its training dependencies, then restore the preserved directory layout:

from huggingface_hub import snapshot_download

snapshot_download(
    repo_id="m1sc/reach-down-vit-release",
    allow_patterns=["runs/*/*", "runs/eval_release_*.csv", "results/*", "split.csv"],
    local_dir=".",
)
snapshot_download(
    repo_id="m1sc/reach-down-tiles-v2",
    repo_type="dataset",
    local_dir="data/tiles_v2",
)

Loading the released full state from the source checkout:

import torch
from huggingface_hub import hf_hub_download
from reachdown.model import LandingValueViT

path = hf_hub_download("m1sc/reach-down-vit-release", "runs/vit_release/best.pt")
checkpoint = torch.load(path, map_location="cpu", weights_only=True)
model = LandingValueViT(pretrained=False, unfreeze_last_blocks=checkpoint["unfreeze_blocks"])
model.load_state_dict(checkpoint["state_dict"])
model.eval()

pretrained=False avoids downloading another copy of the base weights; the architecture configuration is still fetched from the base model repository. Input preparation is defined in reachdown/data.py; outputs are logits and sigmoid gives the predicted value map.

Downloads last month
-
Video Preview
loading

Dataset used to train m1sc/reach-down-vit-release