INNER CODE UNIT · Python
mean_iou
castorini/daam · daam/evaluate.py:60
def mean_iou(self) -> float:
n = max(max(self.ious), max([y[0] for x in self.ious.values() for y in x])) + 1
iou_matrix = np.zeros((n, n))
count_matrix = np.zeros((n, n))
for gt_idx, ious in self.ious.items():
for pred_idx, iou in ious:
iou_matrix[gt_idx, pred_idx] += iou
count_matrix[gt_idx, pred_idx] += 1
row_ind, col_ind = linear_sum_assignment(iou_matrix, maximize=True)
return iou_matrix[row_ind, col_ind].sum() / count_matrix[row_ind, col_ind].sum()
def increment(self):
self.num_samples += 1
def __len__(self) -> int:
return self.num_samples