From 4154a15338f659d9d25f6073f0607db0f634c250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gordon=20B=C3=B6er?= <1067159+gboeer@users.noreply.github.com> Date: Wed, 10 Sep 2025 11:21:24 +0200 Subject: [PATCH] Refactor IOU and accuracy calculations with np.divide Updated IOU and accuracy calculations to handle division by zero. Currently, a RuntimeWarning is thrown when performing the category-wise IOU calculation, if the total_area_union or total_area_label for one of the categories is zero. This can be handled by using the np.divide function, simply returning 0 for all categories where this happens. --- metrics/mean_iou/mean_iou.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/metrics/mean_iou/mean_iou.py b/metrics/mean_iou/mean_iou.py index 4c19864d..8fcb2b29 100644 --- a/metrics/mean_iou/mean_iou.py +++ b/metrics/mean_iou/mean_iou.py @@ -256,8 +256,18 @@ def mean_iou( metrics = dict() all_acc = total_area_intersect.sum() / total_area_label.sum() - iou = total_area_intersect / total_area_union - acc = total_area_intersect / total_area_label + iou = np.divide( + total_area_intersect, + total_area_union, + out=np.zeros_like(total_area_intersect), + where=total_area_union != 0, + ) + acc = np.divide( + total_area_intersect, + total_area_label, + out=np.zeros_like(total_area_intersect), + where=total_area_label != 0, + ) metrics["mean_iou"] = np.nanmean(iou) metrics["mean_accuracy"] = np.nanmean(acc)