图像分割评价指标
对于图像分割,首先可能会想到TP(True Positives), TN(True Negatives), FP(False Positives),FN(False Negatives)这几个单词,但实际上由他们几个单词组成的混淆矩阵(confusion matrix)才是重点。
真实 | 预测 | |
正例 | 反例 | |
正例 | TP | FN |
反例 | FP | TN |
1、准确率(accuracy),精确率(Precision),召回率(Recall)。
公式Accuraccy,对应语义分割中的像素准确率PA,它描述的是预测结果中,正确的占总预测值的比例。
公式Precision,它也叫查准率,它描述的是预测结果中某类别预测正确的概率。
公式Recall,他也叫查全率,它描述的是真实值中某类别被预测正确的概率。
2、IOU(Intersection over Union),他表示模型对于某一类别预测结果和真实值的交集和并集的比值。对于目标检测来说,就是检测框与真实框之间的交并比;对于图像分割来说,就是预测mask与真实mask之间的交并比。
所以计算公式为:
举个iou计算例子[1],下图可见:
3、通常在三维医学图像分割中,对于模型的评价指标是Dice(Dice similarity coefficient)也称为F1-Score。
但实际上该公式是由两个公式得到,即真阳性率(TPR)和阳性预测值(PPV)的调和平均数(harmonic mean)得到:
发现其实和IOU有一点相似,我们可以在改写一下:
这样就比较清楚了。发现可以建立Dice和IOU之间的关系。相比较IOU,DIce可以获得一个更高的指标分数(啊,这,难道就是为了好看吗?可能不能这样理解,在实际的实验中,Dice损失函数明显更好)。当IOU=0.925时,Dice=0.961.
Dice系数的实现:
def dice_coeff(pred, target): smooth = 1. num = pred.size(0) m1 = pred.view(num, -1) # Flatten m2 = target.view(num, -1) # Flatten intersection = (m1 * m2).sum() return (2. * intersection + smooth) / (m1.sum() + m2.sum() + smooth)
注:调和平均数:调和平均数是将所有数值取倒数并求其算术平均数后,再将此算术平均数取倒数而得,其结果等于数值的个数除以数值倒数的总和。
比如求x1和x2两个数的调和平均数H: