· 3 min read · Gaia Lab
Dental segmentation and 100 seeds: how much a model changes by sheer luck
Segmenting structures in dental images with convolutional networks and transformers, comparing six model families against a classical baseline and, before declaring a winner, training the two finalists a hundred times to measure run-to-run variance.

Sixth instalment of Cluster X-ray. After the forests , the most frugal line in the archive: twenty GPU-hours in four months and a methodological question that many papers publish without answering.
The question #
Automatically segmenting structures in dental images, separating the region of interest from the background pixel by pixel, is the basis of any subsequent measurement or assisted diagnosis. The literature compares architectures with a single run per model, and the differences between them are often on the order of one point. The line asks two things: which architecture segments this type of image best, and how much of the difference between two models is real and how much is the lottery of initialisation.
How it is approached #
The dataset is the group’s own: training and test images and binary masks. The method evolves in four steps that can be read in the scripts:
- A UNet with a pretrained encoder and focal Tversky loss, a function designed for problems where the region to segment is small and false negatives weigh more than false positives. Explicit data augmentation: flips, rotations, brightness, noise and blur.
- A hand-made sweep of the loss. Twelve training runs moving the Tversky parameters to load the penalty more and more heavily onto false negatives, until finding the balance point.
- A comparison of six families: plain UNet, UNet++ with ResNet50, DeepLabV3+ with ResNet34 and ResNet50, SegFormer (a transformer) and, as a classical baseline, a per-pixel Random Forest. Each model with its own eight-configuration hyperparameter search.
- The variance study. The two finalists, UNet++ and DeepLabV3+, are trained a hundred times each with controlled seeds (1,000 plus the index), two hundred epochs and early stopping, dumping everything into a single table.
What is learned #
Step four is what sets this line apart. A hundred runs per model give a distribution, not a number: they make it possible to say whether the difference between UNet++ and DeepLabV3+ exceeds the spread produced by changing only the seed. Each training run takes about six minutes on an H100, so the full question cost ten GPU-hours. A small price for an answer that turns “model A is better” into “model A is better with this probability”.
From the Tversky sweep, with no comments in the scripts, the why can be read in the diffs: each version raises the weight of false negatives, a sign that the error that worries them most is leaving part of the structure unsegmented, not marking too much.
On the cluster #
In the seventh instalment , a language model that has to fit in a 4 GB phone.
Figures from Slurm accounting (reserved capacity, not measured usage) and the archived sbatch files. Anonymised post: no identifiable users, paths, emails or project names. Quotations are from the script comments.