您的位置:首页 > 编程语言 > PHP开发

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

2017-03-03 22:52 706 查看
在物体检测和图像分割领域的评价体系中,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_re
a7bb
call

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: