使用numpy计算miou指标的实现:
import os
from os.path import join, exists
import cv2
import numpy as np
from tqdm import tqdm
def cal_miou(pred_mask, mask, n_classes=2, smooth=1e-10):
iou_per_class = []
for clas in range(0, n_classes): # loop per pixel class
true_class = pred_mask == clas
true_label = mask == clas
if true_label.sum() == 0: # no exist label in this loop
iou_per_class.append(np.nan)
else:
intersect = np.bitwise_and(true_class, true_label).sum()
union = np.bitwise_or(true_class, true_label).sum()
iou = (intersect + smooth) / (union + smooth)
iou_per_class.append(iou)
return np.nanmean(iou_per_class)
def eval(pred_dir, gt_dir):
files = [i for i in os.listdir(gt_dir)]
files.sort()
mious = []
for f in tqdm(files):
fp = join(pred_dir, f)
pred_mask = cv2.imread(fp, -1)
fg = join(gt_dir, f)
用numpy计算miou指标

最低0.47元/天 解锁文章
3512






