Details
What it buys and what it costs, measured. Three seeds, 60 epochs, lesions with ambiguous edges, against Dice alone:
|
loss
|
Dice
|
volume bias
|
volume |error|
|
loss_dice()
|
0.9525 ±0.0027
|
-5.18% ±3.11%
|
16.90% ±0.90%
|
loss_boundary()
|
0.9411 ±0.0093
|
-0.06% ±4.15%
|
22.17% ±2.88%
|
It trades accuracy per case for being unbiased over a series. "Is there a lesion" wants the overlap; "has it grown since March" wants a volume that is not systematically wrong, and no single number answers both - which is the same point mask_volume() makes about reporting millilitres beside an overlap score. The bias improvement is suggestive on three seeds, since the baseline’s own bias wanders ±3.11%; the costs are established.
It costs time too. The signed distance transform runs once per sample, in the loader’s workers: 5.3 ms for a 256x256 image, 23.4 ms for a 64x64x32 volume and 709.8 ms at 128^3. On large volumes give platypus_fit() workers, or the transform becomes the training.