大多数深度学习任务会采用F1 Score与IoU进行精度评价,一般来说,我们会发现从数值上看,F1 Score会大于IoU。然而前两天,我发现了一篇发表在遥感顶刊《ISPRS Journal of Photogrammetry and Remote Sensing》上的文章,该文章居然出现了IoU大于F1 Score的现象。那么这种情况是否会出现呢?我们接下来进行证伪。
该文章给出了一张精度表格,表格内容如下:

其中Imp.S.列、Tree列、Car列均出现了IoU大于F1的情况。
我们找到了该文给出的精度评价公式,如下:

由公式14,我们将F1写作关于TP、FP、FN的形式,可得
F1=2TP/(2TP+FP+FN)
由公式15,IoU可写作以下形式
IoU=2TP/(2TP+2FP+2FN)=2TP/(2TP+FP+FN+(FP+FN))
可见IoU的分母中多了一项(FP+FN)
根据TP、TN、FP、FN的定义,很显然这四个数是大于等于0的,因此可得
FP+FN>=0,仅当FP=FN=0时,FP+FN=0
因此IoU=2TP/(2TP+FP+FN+(FP+FN))<=2TP/(2TP+FP+FN)=F1
当FP=FN=0时,或者当TP=0时,IoU=F1
又FP=FN=0时意味着没有错误分类的情况,也就是说标签真值GT与预测结果Pred的值完全一致,此时IoU=F1=1
TP=0时,一般情况下FP+FN>0,意味着完全错误分类,预测结果巧妙的避开了正确答案,此时IoU=F1=0
有没有可能TP=0,同时FP+FN=0呢?是有可能的,此时整个分类情况全是TN,也就是说全是负样本(背景),这个时候研究IoU和F1是完全没有任何意义的。而且IoU和F1因为分母为0也是无意义的,因此此种情况不予考虑。
综上,IoU是不可能大于F1的,就连等于的情况也极其罕见,毕竟深度学习能把精度学到100%我是没有见过这种好事,而学到0%的话说明你的框架或者网络完全有问题。
但是该文中居然出现了这种情况,显然该文出现了数据造假的情况。
这里我就不具体放出该文的信息了,感兴趣的话可以自己扒扒,ISPRS刊的深度学习文章是有限的,很容易找到这一篇。其实数据集作者Markus Gerke教授是有提供官方评价程序的,目测该文作者并没有使用,然后自己写的精度评价程序还是错的,该文的sota显然是不可靠的。
Yannx
2020年6月25日