A-hn: ink model for PHerc. 0306B
A-hn is the ink model we trained for our First Letters result on the Herculaneum scroll PHerc. 0306B (Vesuvius Challenge, 2026). The claim image multiplies its ink probability by TRACE v3B's, pixel by pixel. A-hn is the mean of three fine-tunes of v8-in, with seeds 0, 1 and 2.
- Code, method and the claim package: https://github.com/SirProdigle/pherc0306b-first-letters
- Training data, ink maps and the Docker image: https://huggingface.co/datasets/Prodigle/pherc0306b-first-letters
- Liam Warner and Nicola Bodill (papyrologist)
Files
Each checkpoint folder holds model.safetensors, config.json and meta.json. meta.json has the full training config, the data sources and the sha256 of the starting weights. SHA256SUMS covers every file.
| folder | model | used in the claim |
|---|---|---|
checkpoints/hn4_s{0,1,2}_final |
A-hn, seeds 0, 1 and 2 | yes, as the mean of the three maps |
checkpoints/hn4_s{0,1,2}_step_0300 |
A-hn at step 300 of 600 | no |
checkpoints/hn4_decoy_final |
decoy: the same training with every PHerc. 0306B label moved 3.5 × 3.0 mm | control |
checkpoints/self_main* |
model A: the same training without hard negatives, three seeds | comparison |
checkpoints/self_343h_*, hn4B_s0_* |
models B and B-hn: A and A-hn with PHerc. 0343 and PHerc. 0139 labels added to the human half | comparison |
checkpoints/v8306_343h_s0_* |
model C: public human labels only, no PHerc. 0306B data | comparison |
checkpoints/v8Q_final |
v8Q: v8-in fine-tuned on PHerc. 1447 w058 and the PHerc. 0343 tracings, no PHerc. 0306B data | reading-aid views only |
run_records/<run>/ |
training config, per-step log, tile list and completion record of each run | |
code/v8in_loader/ |
the v8-in loader (ink8um) and its config.json |
| A-hn seed | sha256 of model.safetensors |
|---|---|
| 0 | 9a2812843924c50cafaa2b598f62c92ceca9f0d1f5d05b7bbf25764814ec7009 |
| 1 | 5c2740c1f33ee5db73ca97425669607a2ffe4ae9af8b9d09d61f1c43165e60ad |
| 2 | a294716b083769e8116d5f8d3cfa6a09378ca5c7e51c32225d04703266ad8ce7 |
Training
| setting | value |
|---|---|
| start | v8-in (YoussefMoNader/ink-8um-v8in, sha256 3b94548d…88c4cd) |
| data | half of every batch: PHerc. 1447 team labels (w058, w060); half: machine labels on five other PHerc. 0306B surfaces, 26.7 cm², loss weight 0.5 |
| machine labels | mean z-score of v8-in, Reader V3, TRACE v3B and Reader v2; ink where the mean is 2.5 or more in blobs of 0.3 to 6 mm², background where it is 0.3 or less and at least 20 px from ink, the rest ignored; 66.7 mm² of ink in 72 blobs |
| exclusion | tiles at least 2.9 mm from the claimed line in 3-D; CT inside that buffer set to zero |
| steps | 600 of 16 tiles (micro-batch 4, accumulation 4) |
| loss | 0.5 Dice + 0.5 BCE on labelled pixels, BCE targets smoothed to 0.25 and 0.75 |
| hard negatives | each labelled background pixel's BCE weight is 1 + 4 × the model's own ink probability there |
| optimiser | AdamW, learning rate 2e-5, 5 % warm-up, cosine decay to 2e-6, weight decay 1e-6 |
| augmentation | the organisers' PHerc. 1447 recipe (rotation, scale, shift, blur, dropout; see meta.json) |
| compute | about 12 minutes per run on one GPU, peak 19 GB |
TRACE v3B, the other half of the claim's product, is also one of the four teachers.
Inference
A-hn reads layers 8 to 31 of a 41-layer render whose layer 20 is the surface, in stored order. It uses 64 px tiles at stride 21 and a ±3σ Gaussian stitch divided by the weight sum, in one pass. The scripts that ran are submission/code/ink_v8.py and submission/code/training/ in the GitHub repo.
Held-out known text
None of these models trained on PHerc. 0841, but TRACE v3B's authors used it to choose their checkpoint, so rows with TRACE v3B are slightly optimistic (about 0.01 AUC by their estimate). False ink is the share of blank papyrus marked as ink at 80 % stroke recall.
| model | AUC | AP | false ink |
|---|---|---|---|
| TRACE v3B × A-hn (claim rule) | 0.874 | 0.731 | 6.1 % |
| TRACE v3B × v8-in | 0.871 | 0.727 | 5.9 % |
| TRACE v3B | 0.870 | 0.713 | 8.5 % |
| A-hn | 0.845 | 0.699 | 12.3 % |
| v8-in | 0.840 | 0.674 | 12.1 % |
The product of two models gives most of the gain on known text. Records: submission/method/checks/known_text/ in the GitHub repo.
Licence
The weights are CC BY-NC 4.0 and the loader code is MIT (LICENSES/). They derive from the Vesuvius Challenge open data (the PHerc. 0306B and PHerc. 1447 scans and the PHerc. 1447 team labels, all CC BY-NC 4.0) and from v8-in by Youssef Nader (MIT). The teachers were v8-in, Reader V3 and Reader v2 (domenicor046, MIT) and TRACE v3B (Jashann). Models B and C also used the PHerc. 0343 stroke tracings (jeff-j-chen, MIT) and the PHerc. 0139 organiser labels.
Model tree for Prodigle/pherc0306b-ink-ahn
Base model
YoussefMoNader/ink-8um-v8in