PHerc. Paris 4 β self-trained fiber teacher UNet (epoch 30)
Internal pipeline component, not a general-purpose fiber detector. This is
the frozen fiber-segmentation UNet used both to (1) warm-start and (2) generate
dynamic pseudo-labels for
scrollprize/fiber_dinoguided_2class_step010000,
which is itself a precursor checkpoint further along the same lineage. It is
superseded in quality by that later checkpoint, which adds DINO-embedding
guidance on top of this model's own predictions. We are publishing it for
reproducibility: anyone replicating the fiber_dinoguided_2class training run
needs this exact checkpoint as an input.
Model details
| Architecture | vesuvius NetworkFromConfig 3D UNet (shared_encoder / shared_decoder / task_heads) β verified directly from the checkpoint: 544 encoder tensors, 60 decoder tensors, a single task head |
| Output | 2 channels, head named task_heads.fibers β no ink head is present in this checkpoint (verified directly: only one task head exists in the state dict, named fibers) |
| Checkpoint format | nnU-Net-style: top-level keys model, optimizer, scheduler, epoch, normalization_scheme (zscore), intensity_properties β no EMA weights are stored in this checkpoint |
| Epoch | 30 (stored as epoch: 29, 0-indexed) |
| Filename fragments | selftrain (self-training, no fixed ground truth), prom08, demo06, dark70 β likely threshold/hyperparameter values from its self-training curriculum; not independently decoded by us |
Per the path recorded inside the downstream fiber_dinoguided_2class run's own
config (.../selftrain-prom08-demo06-dark70-from-thr07ep95-cross-frame_epoch30.pth),
this checkpoint's own name suggests it descends from an earlier
"threshold-0.7, epoch-95, cross-frame"-trained checkpoint β plausibly connected
to villa PR #825's cross-frame
affine-registration training infrastructure, though we did not independently
trace that earlier lineage step ourselves.
Role in the pipeline
Used by W&B run ihoo3tpl
(β scrollprize/fiber_dinoguided_2class_step010000) as:
student_init_ckptβ warm-start weights for that run's new student model.dynamic_label.unet_ckptβ its own live inference probability map feeds the Otsu-threshold step of that run's per-step dynamic pseudo-labeling.
We found no evidence this checkpoint has any ink-related capability β only the
single fibers task head exists in its state dict.
Files
| File | Size |
|---|---|
frozen_teacher_unet__selftrain_prom08_demo06_dark70_epoch30.pth |
~1.1 GB |
Usage
import torch
from huggingface_hub import hf_hub_download
path = hf_hub_download(
"scrollprize/fiber_selftrain_teacher_epoch30",
"frozen_teacher_unet__selftrain_prom08_demo06_dark70_epoch30.pth",
)
ckpt = torch.load(path, map_location="cpu", weights_only=False)
state = ckpt["model"] # no EMA weights are stored in this checkpoint
# Build with vesuvius' NetworkFromConfig (target "fibers", out_channels=2,
# in_channels=1) then load_state_dict(state).
Related models
- Direct downstream consumer:
scrollprize/fiber_dinoguided_2class_step010000
Links
- Code: https://github.com/ScrollPrize/villa
- Vesuvius Challenge: https://scrollprize.org
License
MIT.