Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 利用预测图像和地面真实图像评价神经网络_Python_Opencv_Machine Learning_Neural Network_Computer Vision - Fatal编程技术网

Python 利用预测图像和地面真实图像评价神经网络

Python 利用预测图像和地面真实图像评价神经网络,python,opencv,machine-learning,neural-network,computer-vision,Python,Opencv,Machine Learning,Neural Network,Computer Vision,预测图像和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_pre

预测图像和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
然后我取平均数

你能告诉我这是评估模型的正确方法吗?
有没有更好的方法?(这种方法需要很多时间)

您的任务似乎是一个二进制分割问题。您可以使用精度(正确分类的像素百分比)、MCR(即基本上为1精度的误分类率)或您可以读取的平均IOU等指标

除此之外,我建议如果您想计算精度,请使用
cv2.bitwise\u xor
来完成此任务

编辑


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

您的任务似乎是一个二进制分割问题。您可以使用精度(正确分类的像素百分比)、MCR(即基本上为1精度的误分类率)或您可以读取的平均IOU等指标

除此之外,我建议如果您想计算精度,请使用
cv2.bitwise\u xor
来完成此任务

编辑


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

对于分割,比准确度更好的度量,绝对体积差或一些距离度量,如对称表面距离或Hausdorff距离。

对于分割,比准确度更好的度量,绝对体积差或一些距离度量,如对称表面距离或Hausdorff距离。

如果您不知道如何使用
xor
请告诉我。您好@Vardan。非常感谢。你建议的链接,为了计算IOU,标签和预测将是2d图像转换成一维的,对吗?平均iou(标签,预测,数值类,权重=None,度量集合=None,更新集合=None,name=None)如果这个公式对你不起作用,你可以使用这个公式iou=true\u positive/(true\u positive+false\u positive+false\u negative)非常感谢你,如果你不知道如何使用xor,请告诉我。你好@Vardan。非常感谢。你建议的链接,为了计算IOU,标签和预测将是2d图像转换成一维的,对吗?平均iou(标签、预测、数值类、权重=None、度量集合=None、更新集合=None、名称=None)如果这个公式对你不起作用,你可以使用这个公式iou=true\u positive/(true\u positive+false\u positive+false\u negative)非常感谢你,谢谢你。
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)