# S23DR 2026 — Iterating on the Baseline (5th place) Solution for the [S23DR 2026](https://huggingface.co/spaces/usm3d/S23DR2026) structured 3D wireframe reconstruction challenge. Private leaderboard: **0.5388 HSS, 5th place**, with a single 8.85M-parameter Perceiver. The submitted entry is the **raw 8k Perceiver**: a learned segment model over a fused, priority-sampled COLMAP/depth point cloud, with no hand-crafted post-processing. The repository also contains the hand-crafted pipeline and the classifier-gated hybrid that we used earlier in the competition, and the training/repro scripts behind them. See the accompanying write-up for the full account. ## Run inference ```bash pip install -r requirements.txt python script.py ``` The challenge harness provides `params.json`, downloads the dataset, runs `script.py`, and reads the resulting `submission.json` (`{order_id, wf_vertices, wf_edges}` per scene). `script.py` loads `checkpoint_8192.pt` and runs the raw 8k model (`CONF_THRESH=0.5`, no seam, no augments). ## Layout ``` script.py raw 8k inference (the submitted entry) Writeup.pdf method write-up (full account of the solution) checkpoint_8192.pt 8k Perceiver weights (the 5th-place model) checkpoint.pt organizers' 4k Perceiver (curriculum start point) solution.py hand-crafted geometric pipeline edge_classifier.py PointNet edge classifier (hybrid augment) vertex_refiner.py PointNet vertex classifier (hybrid augment) pnet_class_2026.pth edge classifier weights vertex_refiner.pth vertex classifier weights s23dr_2026_example/ model + training package (Perceiver, tokenizer, losses, train.py) configs/ training config (base.json) REPRODUCE.md recipe for the resolution curriculum (2k -> 4k -> 8k) training/ data-generation and training scripts (see below) experiments/ptv3/ the Point Transformer V3 encoder experiment (negative result; trained model + logs + code) ``` ## Reproducing **The 8k model.** Follow `REPRODUCE.md`: train the Perceiver from scratch at 2048 points, then fine-tune at 4096 and 8192 points on the organizers' released sampled point clouds. Our contribution is the 4k→8k stage; the released 4k checkpoint (`checkpoint.pt`) is the starting point. **Classifier augments.** `training/gen_edge_dataset.py` and `training/gen_vertex_dataset.py` build the per-candidate patch datasets from the hand-crafted pipeline's predictions; `training/train_edge_classifier_2026.py` and `training/train_vertex_refiner_2026.py` train the PointNet classifiers. **Router (negative result).** `training/train_routing_gbt.py` with `training/oracle_sources_{train,validation}.json` reproduces the gradient-boosted per-scene router; it recovered only 4.5% of the per-scene oracle ceiling. Some scripts under `training/` contain absolute paths from the original training environment and expect the repository root on `PYTHONPATH` (e.g. `PYTHONPATH=. python training/train_edge_classifier_2026.py`); adapt the paths to your setup.