Reproducing the 8k Perceiver (private HSS 0.5388, 5th place)
The submitted entry is checkpoint_8192.pt, the raw 8k Perceiver. It is the end
of a resolution curriculum: the organizers' 2048 β 4096 baseline produces
checkpoint.pt, which we then fine-tune at 8192 points to produce
checkpoint_8192.pt. The architecture is identical at every stage β only the
input point budget grows.
The Perceiver training code is the organizers' package, bundled here under
s23dr_2026_example/ (train.py, tokenizer.py, model.py, losses.py).
Inference
pip install -r requirements.txt
python script.py
script.py loads checkpoint_8192.pt, fuses and priority-samples each scene to
8192 points (6144 COLMAP + 2048 depth), runs the Perceiver, and writes
submission.json ({order_id, wf_vertices, wf_edges} per scene). No seam, no
augments (CONF_THRESH=0.5).
Architecture
Every stage shares one config (configs/base.json):
Perceiver: hidden=256, ff=1024, latent_tokens=256, latent_layers=7
encoder_layers=4, decoder_layers=3, cross_attn_interval=4
num_heads=4, kv_heads_cross=2, kv_heads_self=2
qk_norm=True (L2), rms_norm=True, dropout=0.1
segments=64, segment_param=midpoint_dir_len, segment_conf=True
behind_emb_dim=8, vote_features=True, activation=gelu
Curriculum
The Perceiver is trained by a staged resolution curriculum: from scratch at 2048 points, then fine-tuned at 4096 and 8192. Each resolution step adds 45k fine-tuning steps, the last 20k a linear cooldown, at a gentle learning rate (3e-5) that preserves the lower-resolution representations. Stages A and B are the organizers' baseline; stage C is ours. The generic invocation is:
python -m s23dr_2026_example.train \
--cache-dir hf://usm3d/s23dr-2026-sampled_<N>:train \
--seq-len <N> [--resume <previous_checkpoint>] --aug-rotate --aug-flip
Stage A β 2048, from scratch (organizers)
Data: sampled_2048_v2:train
Steps: 0 -> 125,000 LR: 3e-4, warmup 10,000 Batch: 32
Loss: sinkhorn (eps=0.1, iters=20, dustbin=0.3) + conf (weight 0.1)
Seed: 353
Trains the Perceiver from random init. The 2048 budget keeps the train/val gap low; training directly at high resolution overfits. Public test HSS 0.4273.
Stage B β 4096 fine-tune + cooldown (organizers) β checkpoint.pt
Resume: Stage A Data: sampled_4096_v2:train
Steps: 125,000 -> 170,000 (45k; last 20k linear cooldown)
LR: 3e-5 Batch: 64
Switches the input to 4096 points; the gentle LR adapts without disturbing the
learned representation (LR > 1e-4 forgets it). The result is the organizers'
released 4k checkpoint, checkpoint.pt β public test HSS 0.4470.
Stage C β 8192 fine-tune + cooldown (ours) β checkpoint_8192.pt
Resume: checkpoint.pt Data: organizers' released 8k samples
Input: 8192 points = 6144 COLMAP + 2048 depth
Steps: 170,000 -> 215,000 (45k; last 20k linear cooldown)
LR: 3e-5 Batch: 64
Resumes the 4k checkpoint and continues the same gentle fine-tune at 8192 points.
This is the only stage we contribute, and the single largest gain in the system:
doubling the input from 4096 to 8192 points lifts the raw model from 0.4470 to
0.5004 public HSS (a +0.053 jump, larger than the entire hand-crafted hybrid
contributes at 4k). Retuning the confidence threshold from 0.5 to 0.65 reaches
our public best of 0.5009; the submitted entry uses 0.5. This is
checkpoint_8192.pt β public test HSS 0.5004, private 0.5388 (5th place).
Data
The organizers publish pre-sampled point clouds (sampled_2048 / sampled_4096
/ sampled_8192) on the Hugging Face Hub; the curriculum above trains directly
on them. training/gen_sampled_16384.py regenerates a sampled set at an
arbitrary --seq-len from the organizers' cached_full_pcd_v2 cache, in the
same format β we used it to try a 16384 budget (see below).
Negative results (kept for the record, not on the inference path)
- 16384 resolution regressed relative to 8192. The generator is
training/gen_sampled_16384.py; the model was not shipped. - Per-scene router (
training/train_routing_gbt.pywithtraining/oracle_sources_{train,validation}.json): a gradient-boosted router choosing 4k / 8k / hand-crafted per scene recovered only ~4.5% of the per-scene oracle ceiling. - Point Transformer V3 encoder (
experiments/ptv3/): a stronger encoder, too slow for the T4 2-hour budget. Trained checkpoint, logs, and code are archived there.
Evaluation sets
Two splits matter for the numbers above:
- Public test β the competition harness scores
submission.jsonagainst the hidden test set and posts to the leaderboard. Every HSS in this document (4k 0.4470, 8k 0.5004, private 0.5388) is a public/private test number. - Dev val β the tail of the published training set, used during development to pick checkpoints. We do not quote dev-val numbers here, since the leaderboard scores are the ones that decide the entry.