PyTorch native metrics library providing 400+ rigorously tested metrics across classification, regression, audio, image, text, and other ML domains
Semantic and instance segmentation evaluation including Dice coefficients, Intersection over Union, and Hausdorff distance for pixel-level prediction assessment.
Dice similarity coefficient variants for segmentation evaluation.
class DiceScore(Metric):
def __init__(
self,
num_classes: Optional[int] = None,
threshold: float = 0.5,
average: Optional[str] = "micro",
mdmc_average: Optional[str] = None,
ignore_index: Optional[int] = None,
top_k: Optional[int] = None,
multiclass: Optional[bool] = None,
**kwargs
): ...
class GeneralizedDiceScore(Metric):
def __init__(
self,
num_classes: Optional[int] = None,
include_background: bool = True,
weight_type: str = "square",
**kwargs
): ...IoU-based metrics for segmentation quality assessment.
class MeanIoU(Metric):
def __init__(
self,
num_classes: int,
ignore_index: Optional[int] = None,
absent_score: float = 0.0,
threshold: float = 0.5,
**kwargs
): ...Metrics based on spatial distances between segmentation boundaries.
class HausdorffDistance(Metric):
def __init__(
self,
percentile: Optional[float] = None,
directed: bool = False,
**kwargs
): ...import torch
from torchmetrics.segmentation import DiceScore, MeanIoU, HausdorffDistance
# Binary segmentation
dice_binary = DiceScore()
preds_binary = torch.rand(4, 1, 128, 128) # Batch, channels, height, width
target_binary = torch.randint(0, 2, (4, 1, 128, 128)).float()
dice_result = dice_binary(preds_binary, target_binary)
print(f"Binary Dice Score: {dice_result:.4f}")
# Multi-class segmentation
num_classes = 5
iou_metric = MeanIoU(num_classes=num_classes)
preds_multi = torch.rand(2, num_classes, 64, 64)
target_multi = torch.randint(0, num_classes, (2, 64, 64))
iou_result = iou_metric(preds_multi, target_multi)
print(f"Mean IoU: {iou_result:.4f}")
# Hausdorff distance (requires binary masks)
hausdorff = HausdorffDistance()
binary_preds = (torch.rand(2, 1, 32, 32) > 0.5).float()
binary_targets = torch.randint(0, 2, (2, 1, 32, 32)).float()
hd_result = hausdorff(binary_preds, binary_targets)
print(f"Hausdorff Distance: {hd_result:.4f}")SegmentationMask = Tensor # Binary or multi-class segmentation masks
WeightType = Union["square", "simple", "uniform"]Install with Tessl CLI
npx tessl i tessl/pypi-torchmetrics