训练阶段:
预测阶段:图片输入 -> 模型预测 -> NMS
NMS的主要功能就是对预测框去重。
nms(boxes, scores, threshold) Args: boxes: array, 预测边界框, (n, 4) scores: array, 预测框置信度, (n, ) threshold: float, iou阈值
对于利用置信度阈值c过滤,可以在没开始NMS前就做过滤,也可以在NMS后做过滤。
- 在目标检测问题中,好几处地方使用了阈值这个限制指标,主要有:
- 1. NMS操作之前用到的置信度阈值a;
- 2. NMS进行时用到的IoU阈值b;
- 3.计算某类别AP时,统计TP,FP个数前,用到置信度阈值c;
- 4. 计算某类别AP时,统计TP,FP个数时,用到IoU阈值d。
NMS算法中的IOU阈值和MAP算法中的IOU阈值不一样
- NMS用到的IoU阈值,是拿除保留的预测框外的其余预测框跟同一类别中置信度最高的预测框IoU与其作比较。
- 计算mAP用到的IoU阈值,是拿预测框与GT的IoU与其作比较。
NMS的IOU阈值是可以设置的,而MAP的IOU阈值是从0.5-0.95固定的。
NMS的IOU阈值越大,去除重复框的效果越弱,IOU阈值越小,去除重复框的效果越强。
iou_thres在detect.py中:
越大,则容易将对于同一个物品的不同预测结果 当成 对多个物品的多个预测结果,导致一个物品出现了多个预测结果。
越小,则容易将对于多个物品的不同预测结果 当成 对同一个物品的不同预测结果,导致多个物品只出现了一个预测结果。