ink9-depth-window — checkpoints

Five arms measuring how much depth the 9 µm ink model actually needs, and what happens when the z-jitter does not shrink with the window.

Full method, blind judgement protocol, sealed preregistrations and results: https://github.com/pscamillo/ink9-depth-window

Which file is which

Every arm is the official aligned21_hybrid_3d2d recipe with one thing changed. Same corpus, same seed (42), same 78,125 iterations at batch 64.

file window jitter verdict vs. m17
m17-step077500.pth 17 slices, 163.1 µm ±2 baseline — replica of the official recipe
b13-step077500.pth 13 slices, 124.7 µm ±2 indistinguishable, 60/60 ties
b09-step077500.pth 9 slices, 86.4 µm ±2 indistinguishable, 60/60 ties
b05-step077500.pth 5 slices, 48.0 µm ±2 breaks, 58–0, p = 0.0000
b05j0-step077500.pth 5 slices, 48.0 µm 0 indistinguishable, 60/60 ties
m17L-step077500.pth 17 slices, 163.1 µm ±2 indistinguishable, 60/60 ties — trained on the corrected labels of 2026-08-18

b05 and b05j0 have the same window. The only difference is flat_z_window_jitter.max_offset, 2 against 0. That pair is the point of the whole thing: at 5 slices, ±2 shifts the window by 40% of its own width, and that — not the missing depth — is what breaks it.

Running one

The checkpoints embed their training config, so inference rebuilds the model and its normalisation contract on its own. Same CLI as the official release:

python -m koine_machines.inference.infer \
  <segment_9um_iso.zarr> b05j0-step077500.pth out.tif \
  --overlap 0.5 --blend-mode hann --batch-size 4 --no-compile

Each arm reads the depth it was trained with from the same 21-slice pooled input, so nothing about the input has to change between them.

Display: with bce_label_smoothing 0.5 the confident background sits near 64, not 0. Rescale with (p − 64) / 128 clipped to [0,1] or the maps look like uniform grey even when they carry signal.

Two things to know before comparing against anything else

Step 77,500, not 78,125. With num_iterations: 78125 and save_every: 2500, the trainer writes at multiples of 2,500, so the last file is 77,500 — 99.2% of training. All five arms are at the same step, so the comparisons among them are clean. Worth knowing when comparing against the released checkpoints, which follow the same pattern at save_every: 5000.

Labels. The five depth-axis arms trained on the ink_9um labels as they stood before the 2026-08-18 correction, when the seam regions from the alignment pipeline were unmasked. The defect is common to every arm — each comparison is between two models that saw identical supervision — but these weights are not directly comparable with models trained after the fix. m17L-step077500.pth is the 17-slice arm retrained on the corrected labels: 60 ties out of 60 against m17 under the same blind protocol, so the change does not move the model. Measured impact per segment is in results/label_correction_impact.json in the GitHub repo: median change 0.0%, mean +2.5% pulled by a single outlier.

Limits

One seed per arm. One judge for all 300 blind comparisons. Region-held-out rather than segment-held-out validation, so nothing here speaks to cross-scroll generalisation. The full list is in the repository README, worth reading alongside these weights.


Derived from Vesuvius Challenge data and models (scrollprize/ink_9um, the open-data S3 bucket) and subject to the terms of those sources. Code and results in the GitHub repo are MIT.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for pscamillo/ink9-depth-window

Finetuned
(1)
this model