怎样才算正确检测到一个目标?
- 什么是IOU:
https://blog.csdn.net/qq_51831335/article/details/125719420
mAP计算方法:
假设针对某一类别的AP情况
TP:预测正确的边界框个数。预测边界框与GT-box的IOU>0.5
FP:假阳性
(
FN就是 把检测对象检测为背景的 那些检测框 的数量,也就是一些被检测错误(F)为负样本(N)的样本,它们本来应该被检测为正样本。
)
FN:漏检
↑只检测出了一个目标:
TP=1
FP=0
Precision=1/(1+0)=1
所以仅通过Precision无法判断模型好坏
↑假设有5个目标,网络预测出了50个目标(包括需要检测的这5个目标)。
TP=真实目标的个数
FN=0,因为没有漏检
召回率Recall = TP/(TP+FN) =100%
所以单靠召回率也不行
引入AP,进一步求mAP。
因为是针对每一个类别去分别求的AP值。一个类别对应一个AP值。但是在目标检测中有多个类别,所以对多个类别取平均值,就得到了mAP
累加训练集中的目标个数(2)
通过列表表示检测到的目标信息(按照Confidence降序排列表格)
Confidence:预测这个目标的概率
OB:是否是TP(是否是想要检测的目标)
(弹幕:
若一个 GT 有多个预测边框,则认为 IOU 最大且大于等于 0.5 的预测框标记为 TP,其他的标记为 FP,即一个 GT 只能有一个预测框标记为 TP
)
(
因为预测的两个边界框预测的目标都是第一只猫,所以ID都是1,预测给出的数值是置信度,不是IOU,IOU是预测框与真实框的交并比
)
针对confidence取不同阈值所得到的Precision和Recall的信息。
1.将Confidence设置到0.98,大于等于0.98的目标才算正确匹配。
2.只检测到了一个目标(绿色,TP=1),所以不存在假阳性(FP=0)。总目标个数是7,所以漏检了6个(FN=6)。
Precision=1/(1+0)=1
Recall=1/(1+6)=1/7
将Confidence阈值调低:
FN=7-2=5
False:并不是想要检测的目标。FP=1。
FN=7-4=3.
不断调整阈值(因为这样可以使得recall值一定是逐渐增大的),得到↓
可以以Recall为横坐标,Precision为纵坐标,得到P-R曲线。
对于横坐标Recall,需要滤除一些重复信息(保存Precision最大的那个)。
具体方法见视频。(目的就是求面积,就算不规则的也是类似画梯形去近似)
最后求得的0.6694就是对应猫这个类别的AP值。可以用同样的方法求得别的类别是AP值,最终一起求均值得到mAP。
coco评价标准:
使用目标检测网络训练后,在验证集中得到的coco评价列表
比较常见的两个目标检测数据集:pascal voc、coco
上面COCO评价标准中每一条数据的含义:
IOU=0.5:
AP:
AP Across Scales:
针对小面积、中面积、大面积的AP
可以了解到目标检测网络对不同尺度目标的检测效果。
AR: recall查全率
第三个:
最多预测100个目标(检测框)。通过限定预测的值,可以从下图看出,大约64%的目标被检测出来。
AR Across Scales:
对应不同目标尺度的AR值。
建议看的:
如果对目标准确率较高就看IoU=0.75的哪个。
对小目标检测要求较高:
如果这两个差距很小的话,可以减少检测的目标个数,可以提高一些目标检测的效率。