Other
PyTorch
3d-reconstruction
wireframe
building
point-cloud
s23dr
cvpr-2026
learned-baseline-2026 / reproduce.sh
jacklangerman's picture
4096-release (#1)
0f31e57
raw
history blame
2.41 kB
#!/bin/bash
# Reproduce the best checkpoint (HSS=0.382) from scratch.
#
# Three stages:
# 1. Train on 2048-point data (~1.5hr on 1x RTX 4090)
# 2. Finetune on 4096-point data (~15min)
# 3. Cooldown with endpoint loss (~1hr)
#
# Total: ~3hr on a single GPU (plus ~30min for compilation + data loading).
# All shared config lives in configs/base.json.
# Each step only specifies what changes.
set -e
OUT_DIR="${1:-runs}"
BASE="--args-from configs/base.json"
# ============================================================
# Step 1: Train on 2048-point data (Phase 1)
# ============================================================
echo "=== Step 1: Training on 2048 data ==="
python -m s23dr_2026_example.train $BASE \
--cache-dir hf://usm3d/s23dr-2026-sampled_2048_v2:train \
--seq-len 2048 \
--lr 3e-4 \
--batch-size 32 \
--steps 125000 \
--out-dir "$OUT_DIR"
STEP1_DIR=$(ls -dt "$OUT_DIR"/*/args.json 2>/dev/null | head -1 | xargs dirname)
echo "Step 1 complete: $STEP1_DIR"
# ============================================================
# Step 2: Finetune on 4096-point data
# ============================================================
echo "=== Step 2: Finetuning on 4096 data ==="
python -m s23dr_2026_example.train $BASE \
--cache-dir hf://usm3d/s23dr-2026-sampled_4096_v2:train \
--resume "$STEP1_DIR/checkpoints/step125000.pt" \
--seq-len 4096 \
--lr 3e-5 \
--batch-size 64 \
--steps 135000 \
--out-dir "$OUT_DIR"
STEP2_DIR=$(ls -dt "$OUT_DIR"/*/args.json 2>/dev/null | head -1 | xargs dirname)
echo "Step 2 complete: $STEP2_DIR"
# ============================================================
# Step 3: Cooldown with endpoint loss
# ============================================================
echo "=== Step 3: Cooldown with endpoint loss ==="
python -m s23dr_2026_example.train $BASE \
--cache-dir hf://usm3d/s23dr-2026-sampled_4096_v2:train \
--resume "$STEP2_DIR/checkpoints/step135000.pt" \
--seq-len 4096 \
--lr 3e-5 \
--batch-size 64 \
--endpoint-weight 0.1 \
--cooldown-start 150000 \
--cooldown-steps 20000 \
--steps 170000 \
--out-dir "$OUT_DIR"
STEP3_DIR=$(ls -dt "$OUT_DIR"/*/args.json 2>/dev/null | head -1 | xargs dirname)
echo "Step 3 complete: $STEP3_DIR"
echo ""
echo "Final checkpoint: $STEP3_DIR/checkpoints/final.pt"
echo "Copy to checkpoint.pt for submission."