考虑一个二分类的情况,类别为1和0,我们将1和0分别作为正类(positive)和负类(negative),则实际分类的结果有4种,表格如下:

**混淆矩阵(confusion matrix)**是以模型预测的类别数量统计信息为横轴,真实标签的数量统计信息为纵轴画出的矩阵。


TP:True Positive,被判定为正样本,事实上也是正样本 ,即蓝色与红色的交集:

**TN:True Negative,**被判定为负样本,事实上也是负样本,即红色与蓝色以外区域

FP:False Positive,被判定为正样本,但事实上是负样本,即红色中除了蓝色部分

**FN:False Negative,**被判定为负样本,但事实上是正样本,即蓝色中除了红色部分

定义: 它是图像中正确分类的像素百分比。即分类正确的像素占总像素的比例。用公式可表示为:
注:思考一下,PA很简单,但是,它绝不是最好的指标,因为分割任务存在的类别不平衡问题。解释如下:

在这个案例中,即使模型什么也没有分割出来,但他的PA = 95%, what???
嗯。我们的计算有问题吗?不。完全正确。只是背景类是原始图像的 95%。因此,如果模型将所有像素分类为该类,则 95% 的像素被准确分类,而其他 5% 则没有。
因此,尽管您的准确率高达 95%,但您的模型返回的是完全无用的预测。这是为了说明高像素精度并不总是意味着卓越的分割能力。
这个问题称为类别不平衡。当我们的类极度不平衡时,这意味着一个或一些类在图像中占主导地位,而其他一些类只占图像的一小部分。不幸的是,类不平衡在许多现实世界的数据集中普遍存在,因此不容忽视。
其中,为了解决类别不平衡问题,提出了一些像素准确率的改进方案:如CPA,MPA
含义:在类别 i 的预测值中,真实属于 i 类的像素准确率,换言之:模型对类别 i 的预测值有很多,其中有对有错,预测对的值占预测总值的比例
Intersection-Over-Union (IoU),也称为Jaccard 指数,是语义分割中最常用的指标之一……这是有充分理由的。IoU 是一个非常简单的指标,非常有效。
定义:**IoU 是预测分割和标签之间的重叠区域除以预测分割和标签之间的联合区域(**两者的交集/两者的并集)如图所示。该指标的范围为 0–1 (0–100%),其中 0 表示没有重叠,1 表示完全重叠分割。
含义:模型对每一类预测的结果和真实值的交集与并集的比值,求和再平均的结果
定义:Dice系数定义为两倍的交集除以像素和,也叫F1 score。Dice 系数与 IoU 非常相似,它们是正相关的。这意味着如果一个人说模型 A 在分割图像方面比模型 B 更好,那么另一个人也会这么说。
与 IoU 一样,它们的范围都从 0 到 1,其中 1 表示预测和真实之间的最大相似度。
当我们评价图像分割的质量和模型表现时,经常会用到各类表面距离的计算。 比如
将Hausdorff distance, HD 用于分割指标,主要是用来度量边界的分割准确度
Hausdorff_95就是是最后的值乘以95%,目的是为了消除离群值的一个非常小的子集的影响。


取A集合中的一点a0,计算a0到B集合中所有点的距离,保留最短的距离d0
这个最长的距离就是h,它是A→B的单向豪斯多夫距离,记为h( A, B)
对于A集合中任意一点a,我们可以确定,以点a为圆心,h为半径的圆内部必有B集合中的
交换A集合和B集合的角色,计算B→A的单向豪斯多夫距离h( B, A ),选出h( A, B )和h( B, A )中最长的距离,就是A,B集合的双向豪斯多夫距离

在实际计算中,我们并不是选取的不是最大距离,而是将距离从大到小排列后,取排名为95%的距离。这么做的目的是为了排除一些离群点所造成的不合理的距离,保持整体数值的稳定性。所以也叫HD95.

以上各个指标的pytorch代码都是参考medpy包中的代码,那我们如何快速实现这些指标呢?直接掉包。