如何计算分割模型的准确性?

how to calculate accuracy in segmentation model?

我使用边界框技术评估分割模型。然后我 将每个图像的 TP、FP、TN 和 FN 的值相加。总图像是 10(下面的行号 table)。我需要计算这个模型的准确性。 accuracy = (TP+TN)/(TP+FP+FN+TN)

的方程

(TP+FP+FN+TN)为总数。我混淆这里的总数...(实际预测

问题是:在这种情况下,Total Number 的值是多少?为什么?

imgNo TP    FP  TN  FN
   1    4   0   0   0
   2    6   1   1   0
   3    2   3   0   0
   4    1   1   1   0
   5    5   0   0   0
   6    3   1   0   0
   7    0   3   1   0
   8    1   0   0   0
   9    3   2   1   0
  10    4   1   1   0

感谢任何帮助。

TP : True Positive 是您在图像中正确识别的对象数。

FP : 误报是您识别的对象,但实际上这是一个错误,因为 ground-truth.

中没有这样的对象

TN : True Negative 是指算法无法识别任何对象,ground-truth 确实属于这种情况。即正确的否定识别。

FN : 假阴性是指您的算法无法识别对象(即地面实况包含图像中的对象,但它被您的算法标记为背景).换句话说,您错过了识别对象的机会。 在你的实验中它无论如何都是 0。

因此,TP+TN = 真正的总案例数。不要包括 FN,因为那是错误的检测。

您可以使用热图直观地分析逻辑回归的系数。 roc_curve returns 假阳性和真阳性值。混淆矩阵 returns fp、tp、fn 和 fp 聚合。

fpr, tpr, threshholds = roc_curve(y_test,y_preds_proba_lr_df)

plt.plot([0, 1], [0, 1], 'k--')
plt.plot(fpr, tpr)
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.show()

 accuracy=round(pipeline['lr'].score(X_train, y_train) * 100, 2)

 print("Model Accuracy={accuracy}".format(accuracy=accuracy))

 cm=confusion_matrix(y_test,predictions)

 sns.heatmap(cm,annot=True,fmt="g")