评估指标中IoU/precision/recall/tp/fp/fn/tn的个人理解

来源:互联网 发布:painter2018 mac破解 编辑:程序博客网 时间:2024/04/27 18:03

在物体检测和图像分割领域的评价体系中,IoU/precision/recall这几个评价指标被广泛应用,读过相应的代码之后会发现由此引出tp/fp/fn/tn的概念。通过查找相关资料,对这几个概念做一个整理。
先说tp/fp/fn/tn这四个最基本的概念,上图:
这里写图片描述
从这张图就可以很清楚知道这四个的概念,分别为
tp:True Positive
fp:False Positive
fn:False Negative
tn:True Negative
怎么理解呢?
我们都知道,在文本检索工作中要想检索到我们想要的有用的信息,我们需要从既包含我们想要的信息(称为relevant elements)又包含我们不想要的信息(称为irrelevant elements)的整体中,用检索工具(可以看成建立的模型)进行检索,得到的结果分成两部分,一部分是有用的信息(称为True positive,代码中常简写为tp),另一部分是无用的信息(称为False Positive,代码中常简写为fp)。于是剩下的fn和tn就能理解了。在物体检测和图像分割领域道理类似。
接下来就要利用这四个东西搞事情了!(准确的说是三个,tn一般不用)
IoU:以下是一个测量IoU的实例:
http://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/
IoU简单来讲就是模型产生的目标区域和原来标记区域的交并比。可理解为得到的结果与GroundTruth的交集比上它们之间的并集,即为IoU 值。利用上面的几个概念,得到
IoU=∑tp/(∑fn+∑tp+∑fp),求和(∑)是因为程序中一般将tp/fn/fp都看做单个信息。

精确率precision=∑tp/(∑tp+∑fp),也就是搜索结果中有用的部分占所有搜索结果的比重。
召回率recall=∑tp/(∑fn+∑tp),也就是搜索结果中有用的部分占信息空间中所有有用的部分的比重。

然后举个栗子说明以上三个家伙怎么算,比如主人家里有12只狗和几只猫,主人随便牵出8只,其中5只狗3只猫,那么问题来了。先给张表:
这里写图片描述
总共的:{12dogs+some cats},
牵出的:{8=5dogs+3cats},
于是相关的relevant(fn+tp) = 12,搜索的retrieved(tp+fp) = 8;
relevant∩retrieved (tp) = 5(dogs);
fp=3
fn=12-5=7
辣么,IoU=tp/(fn+tp+fp)=5/(7+5+3)=5/15
precision=tp/(tp+fp)=5/8
recall=tp/(fn+tp)=5/12

维基百科中给出的precision和recall的公式:
这里写图片描述
这里写图片描述
最后附上评估指标的全家福:
这里写图片描述
全家福中的内容都能在维基百科中找到。
参考:https://en.wikipedia.org/wiki/Precision_and_recall


这里写图片描述

0 0