目标检测如何计算召回率_目标检测指标细究:精确度(Precision)、召回率(recall)、虚警率(False Alarm)...

1、目标检测中的“样本”概念:

并非groundtruth,也非图片。指的是真正投入网络参与loss计算及其正反向传播的边界框,这些框是算法根据groundtruth预测出来的。框中有样本且类别正确则为正样本,框中无样本或样本类别错误则为负样本。在one-stage算法中的样本就是正负比为1:3的Regin Proposals,在SSD中就是正负比为1:3的Prior boxes,在YOLOv1中就是98=7*7*2个bounding boxes(负样本居多)。

2、假设在一个单类别检测问题中的样本有两类(背景算1类),分布如下:

(1)P=Positive:

目标检测中的类别plane,设其为正样本;

(2)N=negative:

目标检测中的类别background,设其为负样本;

(3)TP=True Positive:

把plane正确检测为plane框的数量(正确的plane框);

(4)FP=False Positive:

把background错误检测为plane框 的数量(错误的plane框);

(5)TN=True Negative:

把background正确检测为background框的数量(正确的background框),识别为背景的框(非目标)一般在算法结束时,统一清除不显示;

(6)FN=False Negative:

把plane错误检测为background框的数量(错误的background框)。

3、公式:

(1)精确度(Precision):Precision = TP/(TP+FP);

反映了检测器检测到的某类别目标中,真正的属于该类别的所占比例;

(2)召回率(recall):Recall = TP/(TP+FN);

反映了检测器检测到的某类别目标中真正的属于该类别的数量,占该类别groundtruth数量的比例;

(3)虚警概率(False Alarm):FA= FP/(TP + FP);

反映了检测器检测到的某类别目标中,误检目标数量所占比例。

4、举例(目标检测中各项指标都是针对某一类别的最终结果来定义的):

(1)例1(单类别检测):

单类别检测,检测网络在一张有8个飞机的图片上生成了10个框,均识别为plane,即:

P=8,

N=2;

10个plane框里有6个框里确是plane,另4个框里实际是background,即:

TP=6,

FP=4;

2个漏检的plane实际被检测为背景,即:

TN=0,

FN=2;

因此,这个网络在这张图片上的针对plane类别的各项指标为:

Precision = TP/(TP+FP)=6/(6+4)=0.60

Recall = TP/(TP+FN)=6/(6+2)=0.75

FA= FP/(TP + FP)=4/(6+4)=0.40

(2)例2(多类别检测,对于某一类别,其他类别都算负且都参与TN计算):

双类别检测,检测网络在一张有8个plane和2辆car的图片上生成了10个框,6个识别为plane,4个识别为car即(括号内是针对car类的指标):

P=8,(P=2)

N=2;(N=8)

6个plane框里有4个框里确是plane,1个框里实际是car,1个框里实际是background(4个car框中有2个确实是car,1个里面实际是plane,1个里面实际是background),即:

TP=4,(TP=2)

FP=2;(FP=2)

4个未被正确识别的plane中,3个实际被检测为background,1个实际被检测为car(1个未被识别的car实际被检测为plane),即:

TN=2,(TN=4)

FN=4;(FN=0)

因此,这个网络在这张图片上的针对plane类别的各项指标为:

①Precision = TP/(TP+FP)=4/(4+2)=0.67

②Recall = TP/(TP+FN)=4/(4+4)=0.50

③ FA= FP/(TP+FP)=2/(4+2)=0.33

同理,这个网络在这张图片上的针对car类别的各项指标为:

① Precision = TP/(TP+FP)=2/(2+2)=0.50

② Recall = TP/(TP+FN)=2/(2+0)=1.00

③ FA= FP/(TP+FP)=2/(2+2)=0.50


版权声明:本文为weixin_42163404原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。