FastSurferCNN.utils.metrics¶
- class FastSurferCNN.utils.metrics.DiceScore(num_classes, class_ids=None, device=None, one_hot=False, output_transform=<function DiceScore.<lambda>>)[source]¶
Accumulating the component of the dice coefficient i.e. the union and intersection.
- Parameters:
- op
callable() A callable to update the accumulator. Method’s signature is
(accumulator, output). For example, to compute arithmetic mean value,op = lambda a, x: a + x.- output_transform
callable(),optional A callable that is used to transform the
Engine’sprocess_function’s output into the form expected by the metric. This can be useful if, for example, you have a multi-output model and you want to compute the metric with respect to one of the outputs.- device
strortorch.device,optional Device specification in case of distributed computation usage. In most cases, it can be defined as “cuda:local_rank” or “cuda” if already set
torch.cuda.set_device(local_rank). By default, if a distributed process group is initialized and available, the device is set tocuda.
- op
Methods
- FastSurferCNN.utils.metrics.dice_score(pred, gt, validate=True)[source]¶
Calculates the Dice Dissimilarity between pred and gt (best 0).
- Parameters:
- pred
np.ndarray Predicted image.
- gt
np.ndarray Ground truth image.
- validate
bool If True, use the scipy implementation of the Dice Similarity. If False, use the numpy implementation.
- pred
- Returns:
floatDice Similarity between pred and gt.
- FastSurferCNN.utils.metrics.hd(result, reference, voxelspacing=None, connectivity=1)[source]¶
Computes the (symmetric) Hausdorff Distance (HD) between the binary objects in two images. It is defined as the maximum surface distance between the objects.
- Parameters:
- resultarray_like
Input data containing objects. Can be any type but will be converted into binary: background where 0, object everywhere else.
- referencearray_like
Input data containing objects. Can be any type but will be converted into binary: background where 0, object everywhere else.
- voxelspacing
floator sequenceoffloats,optional The voxelspacing in a distance unit i.e. spacing of elements along each dimension. If a sequence, must be of length equal to the input rank; if a single number, this is used for all axes. If not specified, a grid spacing of unity is implied.
- connectivity
int The neighbourhood/connectivity considered when determining the surface of the binary objects. This value is passed to
scipy.ndimage.morphology.generate_binary_structureand should usually be \(> 1\). Note that the connectivity influences the result in the case of the Hausdorff distance.
- Returns:
- hd
float The symmetric Hausdorff Distance between the object(s) in
resultand the object(s) inreference. The distance unit is the same as for the spacing of elements along each dimension, which is usually given in mm.- hd50
float The 50th percentile of the Hausdorff Distance.
- hd95
float The 95th percentile of the Hausdorff Distance.
- hd
See also
assdAverage Symmetric Surface Distance, computes the average symmetric surface distance.
asdAverage Surface Distance, computes the average surface distance.
Notes
This is a real metric. The binary images can therefore be supplied in any order.
- FastSurferCNN.utils.metrics.hd95(result, reference, voxelspacing=None, connectivity=1)[source]¶
Computes the 95th percentile of the Hausdorff Distance.
Computes the 95th percentile of the (symmetric) Hausdorff Distance (HD) between the binary objects in two images. Compared to the Hausdorff Distance, this metric is slightly more stable to small outliers and is commonly used in Biomedical Segmentation challenges.
- Parameters:
- result
Any Input data containing objects. Can be any type but will be converted into binary: background where 0, object everywhere else.
- referencearray_like
Input data containing objects. Can be any type but will be converted into binary: background where 0, object everywhere else.
- voxelspacing
floator sequenceoffloats,optional The voxelspacing in a distance unit i.e. spacing of elements along each dimension. If a sequence, must be of length equal to the input rank; if a single number, this is used for all axes. If not specified, a grid spacing of unity is implied.
- connectivity
int The neighbourhood/connectivity considered when determining the surface of the binary objects. This value is passed to
scipy.ndimage.morphology.generate_binary_structureand should usually be \(> 1\). Note that the connectivity influences the result in the case of the Hausdorff distance.
- result
- Returns:
- hd95
float The 95th percentile of the symmetric Hausdorff Distance between the object(s) in
`result`and the object(s) in`reference`. The distance unit is the same as for the spacing of elements along each dimension, which is usually given in mm.
- hd95
See also
hdComputes the symmetric Hausdorff Distance.
Notes
This is a real metric. The binary images can therefore be supplied in any order.
- FastSurferCNN.utils.metrics.iou_score(pred_cls, true_cls, nclass=79)[source]¶
Compute the intersection-over-union score.
Both inputs should be categorical (as opposed to one-hot).
- Parameters:
- pred_cls
torch.Tensor Network prediction (categorical).
- true_cls
torch.Tensor Ground truth (categorical).
- nclass
int Number of classes (Default value = 79).
- pred_cls
- Returns:
np.ndarrayAn array containing the intersection for each class.
np.ndarrayAn array containing the union for each class.
- FastSurferCNN.utils.metrics.precision_recall(pred_cls, true_cls, nclass=79)[source]¶
Calculate recall (TP/(TP + FN) and precision (TP/(TP+FP) per class.
- Parameters:
- pred_cls
torch.Tensor Network prediction (categorical).
- true_cls
torch.Tensor Ground truth (categorical).
- nclass
int Number of classes (Default value = 79).
- pred_cls
- Returns:
np.ndarrayAn array containing the number of true positives for each class.
np.ndarrayAn array containing the sum of true positives and false negatives for each class.
np.ndarrayAn array containing the sum of true positives and false positives for each class.