【问题标题】:Evaluate neural network using predicted image and ground truth image使用预测图像和地面实况图像评估神经网络
【发布时间】:2020-08-17 22:03:29
【问题描述】:

预测图像和gt图像是黑白图像。

地面实况图像中的白点代表地面实况值。 预测图像中的白点代表预测点。

两个图像都由图像上的多行组成(存在许多行。它们都属于一个类)

我使用下面的方法

n_gt_pixels = cv2.countNonZero(im_gt) #count number of white pixels in gt image
n_predicted_pixels = 0
for i in range(rows):
   for j in range(cols):
     if((im_predicted[i,j] == im_gt[i,j]) and im_gt[i,j]!=0): #ignore black pixels
        n_predicted_pixels = n_predicted_pixels + 1

accuracy = n_predicted_pixels /n_gt_pixels

然后我取平均值。

您能否告诉我这是否是评估模型的正确方法? 有没有更好的方法来做到这一点? (这种方法需要很多时间)

【问题讨论】:

    标签: python opencv machine-learning neural-network computer-vision


    【解决方案1】:

    您的任务似乎是一个二元分割问题。您可以使用准确度(正确分类的像素百分比)、MCR(即误分类率)等指标,其本质上是 1 准确度或平均 IOU,您可以阅读 here

    如果您想计算准确度,我建议您使用cv2.bitwise_xor 来完成此任务。

    编辑

    def cal_miou(pred_mask, sample_mask):
        tp = np.sum(cv2.bitwise_and(pred_mask, sample_mask))
        fp = np.sum(cv2.bitwise_and(pred_mask, cv2.bitwise_not(sample_mask)))
        fn = np.sum(cv2.bitwise_and(cv2.bitwise_not(pred_mask), sample_mask))
        return tp/(tp+fp+fn)
    

    此函数可用于计算 MIOU,其中 pred_mask 和 sample_mask 是 2d 数组。

    【讨论】:

    • 如果您不明白如何使用xor,请告诉我。
    • 你好@Vardan。谢谢你。您建议的链接,计算 IOU,标签和预测将 2d 图像转换为一维,我正确吗? mean_iou(标签,预测,num_classes,weights=None,metrics_collections=None,updates_collections=None,name=None)
    • 如果不适合你,你可以使用这个公式 IOU = true_positive / (true_positive + false_positive + false_negative)
    【解决方案2】:

    对于分割,比准确度更好的指标是Dice scoreJaccard score、绝对体积差或一些距离指标,如对称表面距离或 Hausdorff 距离。

    【讨论】:

    • 谢谢jwitos。
    猜你喜欢
    • 1970-01-01
    • 2017-12-21
    • 2013-06-30
    • 2016-11-29
    • 1970-01-01
    • 2018-10-19
    • 2017-12-28
    相关资源
    最近更新 更多