def single_metrics(gt, pred, num_cl):
t_px = np.zeros(num_cl)
n_px = np.zeros(num_cl)
n1_px = np.zeros(num_cl)
px_class = np.unique(gt)
error = np.subtract(gt, pred)
for i in px_class:
t_px[i] += (np.where(gt == i)[0]).shape[0]
n_px[i] += (np.where((gt == i) & (error == 0))[0]).shape[0]
n1_px[i] += (np.where(pred == i)[0]).shape[0]
return t_px, n_px, n1_px
# if __name__ == "__main__":
# pic_start = int(sys.argv[1])
# pic_end = int(sys.argv[2])
# num_cl = 22
# t_px = np.zeros(num_cl)
# n_px = np.zeros(num_cl)
# n1_px = np.zeros(num_cl)
# for idx in range(pic_start, pic_end+1):
# tmp_t, tmp_n, tmp_n1 = save_result(str(idx), num_cl, True)
# t_px += tmp_t
# n_px += tmp_n
# n1_px += tmp_n1
# t_sum = np.sum(t_px)
# n_sum = np.sum(n_px)
# px_acc = n_sum/t_sum
# condition_1 = t_px != 0
# c_n1 = np.extract(condition_1, n_px)
# c_t1 = np.extract(condition_1, t_px)
# condition_2 = (np.subtract(np.add(t_px, n1_px), n_px)) != 0
# c_n2 = np.extract(condition_2, n_px)
# c_d2 = np.extract(condition_2, (np.subtract(np.add(t_px, n1_px), n_px)))
# mean_acc = np.sum(np.divide(c_n1, c_t1))/num_cl
# mean_IU = np.sum(np.divide(c_n2, c_d2))/num_cl
# fw_IU = np.sum(np.divide(np.extract(condition_2, np.multiply(t_px, n_px)), c_d2))/t_sum
# print("========= metrics =========")
# print("pixel accuracy: " + str(px_acc))
# print("mean accuracy: " + str(mean_acc))
# print("mean IU: " + str(mean_IU))
# print("frequency weighted IU: " + str(fw_IU))
# print("")
# if __name__ == "__main__":
# num_cl = 22
# pic_id = int(sys.argv[1])
# save_compare_results(pic_id, num_cl)
评论列表
文章目录