YOLO性能指标

术语

全称

解释

True

表示推理正确

False

表示推理错误, 跟ground truth(位置,类别)比对之后得到的结论

positive

扫描二维码关注公众号,回复: 15212430 查看本文章

推理为正例,iou > 阈值,类别概率>阈值

negative

推理为反例,不符合正例条件

TP    

True  positive

推理为正例, 且推理正确

FP 

False positive

推理成正例,但是推理错误,为什么会有这种情况出现呢?

目标检测网络不同于分类网络,其结果判断依据有两个,(位置,类别),就算推理得到某个box是正例,其结果不一定正确。

如:某个box iou>阈值,且类别概率大于阈值,被推理成正例,但是实际不包含物体或者包含的物体不是推理出的类别。

TN

True negative

推理成反例,推理正确 —— 表示有效框内确实不包含任何物体(位置<IOU阈值,or 类别概率全部<阈值)

FN 

False negative

推理成反例,但是推理错误 —— 表示该框内包含目标物体,但是没有检测出来或者分类错误

P

precision

精确率,表示模型推理出的有效框中(positive),推理正确的比例。Precision = TP / (TP+FP)

R

recall

召回率/查全率,表示真实的目标物体中,有多少推理成功的。
recall = TP / (TP + FN)

Accuracy

Accuracy

准确率,三个指标中最直观的指标,表示模型推理正确的数据占总数据的比例。
accuracy = (TP + TN) / (TP + FP + TN + FN)

物体检测网络accuracy与分类网络accuracy的区别在于:分类网络结果正确只有一种情况,分子只有一项

—— 因为分类网络图片中必定有某个物体

IOU

Intersection over union

交并比,衡量两个区域的重叠程度的指标, 蓝色框:ground truth; 黄色框:预测框

NMS

Non Maximum suppression

非极大值抑制,通过筛选局部极大值得到最优解。—— 定位算法

举例说明Prediction三个分支的作用:

76x76 原图, 假设分别按照1x1,2x2,4x4对原图进行单元格划分

拆分的box越小,定位的物体越小,原因是4x4的box中,小物体再计算IOU时很大概率小于阈值,从而被筛掉:

      -> 1x1,拆分成76x76个box,用于小物体定位

      -> 2x2,拆分成38x38个box,用于定位中等物体

      -> 4x4,拆分成19x19个box,用于定位大物体

1.将图片均分成NxN个锚点框,然后每张锚点框选择3个box,一共得到N*N*3个box (记作boxes_0)

2.分别计算boxes_0与ground truth之间的IOU,留下大于某个阈值的box(记作boxes_1);

3. 每个ground truth只保留一个iou最大的box,其余扔掉(记作boxes_2)

*** boxes_0 number:  19x19x3

*** boxes_1 number:  boxes_0中IOU大于阈值的待选框

*** boxes_2 number:  boxes_1去重后的数量

去重操作如何进行?NMS

方法:IOU_value是待选框与ground truth的IOU值,现在计算boxes_1之间的IOU(记作IOU_ab),认为IOU_ab大于阈值的两个待选框对应的是同一个ground truth,两个待选框择优选择,留下IOU_value最大的那一个。

boxes_1 iou value降序排列: 

  box_id     0 1  2  3 4   5  6  7  8  

是否有效    1  0 1  0  0  1  0  0  0

如上,假设是下述情况:

【step1】 从box0开始,box1-box8依次与box0比对,

box1/3/4/8与box0计算的IOU均大于阈值,认为是同一个框,因此标记成无效框(box0 iou_value最大,为最优解),剩下box被认为不同于box0;

【step2】移动到下一个有效框box2,

box6/7与box2计算 IOU大于阈值,标记成无效框;

【step3】移动到下一个有效框box5,

后面没有有效框了,结束;

【结果】

得到该图片上所有 box,分别对应不同的目标物体,之后再做物体分类;

预测结果包含:bounding_box(x1, y1,x2,y2), 置信率之一Pc (是有效框的概率, 即IOU_Value)

AP

Average precision

平均精确度,针对单类别。

这里会得到置信率之二: confidence ( 该框是某个类别的概率)

-> 推理正确的标志:

1. Pc > iou_threshold;

2. confidence > p_threshold

AP中的average指的就是p_threshold取不同值时,结果的平均值

-> yolo nms之后得到的数据如下,根据19x19x255为例, 19x19x3x85, 19x19x3为box数量,每一个box对应85个元素输出。

详细过程见下面的“AP计算”及相关解释。

mAP

Mean Average precision

每个类别都计算出AP,计算平均值

mAP50

IOU=0.5

mAP

(IoU=0.5:0.95)

[0.5,0.95], 每间隔0.05取一次Iou,计算该阈值的mAP,最终计算平均值

AP计算

Rank

Box ID

Pc

x1

 y1

X2

Y2

类别1概率

类别2概率

类别80概率

1

IOU_value

[是有效框的概率]

[从大到小排序]

P max

2

P second_max

19x19x3

P min

1. P_threshold 从大到小取值,coco库是如何取值的?
    COCO根据rank从小到大,依次递推,代表着p_threshold依次递减。这里p_threshold不是用某个特定的值表示的,而是根据“符合条件的概率”所占的数量rank来体现。例如:rank=2时

  • 认为rank>2的box,其P值小于阈值,均为反例,P值是该box属于某个类别的概率; 
  • rank<=2的box,其P值大于阈值,继续判断其IOU是否大于iou_threshold, 且是最优的候选框
    • 什么是”最优候选框“? 前rank个框中若存在重复框,择IOU最大的作为正例,其余为反例(具体实现方式为NMS去重)
    • IOU小于阈值的为反例

2. 计算precision和recalll, 绘制出P-R曲线

根据上个步骤得到的正例反例,计算出precision和recall,绘制P-R曲线。

AP =(平滑后PR曲线上,Recall分别等于0,0.1,0.2,… , 1.0等11处Precision的平均值)

AP = (1 + 1 + 1 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0 + 0 + 0) / 11 = 0.5

备注:此为个人学习后总结,借用了其他博主的图片忘记链接。内容有不对或者有争议的地方,欢迎大家指出。

猜你喜欢

转载自blog.csdn.net/zmj1582188592/article/details/127449521