English
Antoine1091's picture
Upload folder using huggingface_hub
ede298f verified
import numpy as np
from typing import List, Tuple
def compute_metrics(conf_matrix: np.ndarray) -> Tuple[List[float], float, List[float], float]:
"""
Calculates metrics IoU and F1 from confusion matrix
"""
num_classes = conf_matrix.shape[0]
ious, f1s = [], []
for c in range(num_classes):
tp = conf_matrix[c, c]
fp = conf_matrix[:, c].sum() - tp
fn = conf_matrix[c, :].sum() - tp
union = tp + fp + fn
iou = tp / union if union else float('nan')
f1 = 2 * tp / (2 * tp + fp + fn) if (2*tp + fp + fn) else 0.0
ious.append(iou)
f1s.append(f1)
miou = np.nanmean(ious)
mf1 = float(np.mean(f1s))
return ious, miou, f1s, mf1