1.nms
(1)nms过程
a.首先我们将置信度分数低于置信度阈值a的所有预测框去掉 。
b. 然后在同一张图片上,我们按照类别(除开背景类,因为背景类不需要进行NMS),将所有预测框按照置信度从高到低排序,将置信度最高的框作为我们要保留的此类别的第1个预测框,
c. 然后按照顺序计算剩下其他预测框与其的IoU,
d. 去掉与其IoU大于IoU阈值b的预测框(其实代码实现里是将这些要去掉的预测框其置信度分数置为0),
f. 第一次迭代结束,我们已经剔除了与第一个框重合度较高的框。
(2)nms阈值
nms目的:过滤掉冗余的框
所以这里的iou阈值是控制冗余框和置信度最大的预测框的iou,这里的iou越小越严格。
2.计算map
(1)计算过程
a.首先遍历图片中ground truth对象,然后提取我们要计算的某类别的gt objects,之后读取我们通过检测器检测出的这种类别的检测框(其他类别的先不管),
b.接着过滤掉置信度分数低于置信度阈值的框(即所说的置信度阈值c),
c.将剩下的检测框按置信度分数从高到低排序,最先判断置信度分数最高的检测框与gt bbox的IoU是否大于IoU阈值(即·上面所说的IoU阈值d),若IoU大于设定的IoU阈值即判断为TP,
d.将此gt_bbox标记为已检测(后续的同一个GT的多余检测框都视为FP,这就是为什么先要按照置信度分数从高到低排序,置信度分数最高的检测框最先去与IoU阈值比较,若大于IoU阈值,视为TP,后续的同一个gt对象的检测框都视为FP),
f.IoU小于阈值的,直接规划到FP中去。
(2)map的iou阈值
这里的iou阈值是控制置信度最大的预测框和真实值之间的iou,这里的iou越小计算的map越大。