目标检测:NMS和计算mAP时的置信度阈值和IoU阈值

  • 在目标检测问题中,好几处地方使用了阈值这个限制指标,主要有:1. NMS操作之前用到的置信度阈值a;2. NMS进行时用到的IoU阈值b;3.计算某类别AP时,统计TP,FP个数,用到置信度阈值c;4. 计算某类别AP时,统计TP,FP个数时,用到IoU阈值d。

  • NMS用到的IoU阈值,是拿除保留的预测框外的其余预测框跟同一类别中置信度最高的预测框IoU与其作比较。
  • 计算mAP用到的IoU阈值,是拿预测框与GT的IoU与其作比较。
  • NMS的置信度阈值主要是为了过滤掉一些背景预测框(一般来说one stage算法用的较多,因其没有two stage产生ROI,背景框较多)。
  • 计算mAP的置信度阈值主要是用来选取TOP N(置信度分数从高到低排名的前N个检测)的样本来统计TP,FP,FN,计算AP。

2.IOU设置过高或过低的问题

如果 IOU 阈值设置较低,样本的质量就难以保证;为了获得高质量的正样本,可以调高 IOU 阈值,但样本数量就会降低导致正负样本出现比例不平衡,且较高的 IOU 阈值很容易丢失小尺度目标框。

3.分类

①根据级联思想,通过不断提高IOU 阈值来获得高质量的正样本,能够在一定程度上提高小目标的检测效果,但存在随着 IOU 阈值不断提高,匹配的 Anchor 数量减少,导致漏检的问题。

②将 IOU 阈值从 0.5 降到 0.35,使用降低阈值的方法先保证每个目标都能有足够的锚框检测。同时为了解决正样本增加导致样本质量得不到保证的问题,提出最大化背景标签的方法,在最底层分类时将背景分为多个类别而不是二分类,对 IOU 大于0.1 的 Anchor 进行排序,幵对每个框预测 3 次背景值,取背景概率中最大的值作为最终背景,通过提高分类难度以此来解决正样本质量得不到保证的问题,提高了小目标的检测准确率。但此种方法可能会出现因IOU 阈值过低,造成无效的正样本数量过多,从而导致误检率提高的问题。

4.总结

对于不同的检测任务,如果待检测目标尺度之间相差不大,即数据集中大多为同一尺度目标时,可以适当降低 IOU 阈值再进行选取,对小目标特征实现最大程度的提取。在实际应用中,同一场景下的检测不可能只包含单一尺度的目标,存在不同目标尺度跨越相差较大的情况,如果固定 IOU 阈值进行统一检测筛选,会带来样本不平衡的问题,小目标特征极有可能被严栺的 IOU 阈值舍弃。因此,设置动态 IOU阈值作为不同尺度目标检测更具普适性,根据不同的样本数量动态调整,当负样本数量过高时不断提高 IOU 阈值平衡样本数量,避免了直接设置过高的 IOU 阈值而造成的漏检,训练出来的模型泛化性更强。

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: YOLOv5 是目标检测领域的一种新型模型,其使用 mAP50 (mean average precision at IoU=0.50) 作为评价指标。在 YOLOv5 的训练过程中,计算测试集的 mAP50 可以帮助我们评估模型的性能,以寻找最佳的超参数、数据增强等训练策略。 下面是计算 YOLOv5 测试集 mAP50 的一些步骤: 1. 准备测试集数据 首先,您需要准备测试集数据。测试集数据应该包含图像和相应的标注文件。您可以使用现有的数据集,或者根据自己的需求创建测试集数据。 2. 设置测试参数 在计算测试集 mAP50 之前,您需要设置 YOLOv5 的测试参数,例如模型路径、检测阈值NMS 阈值等。可以通过命令行或配置文件指定这些参数。 3. 运行测试脚本 使用 YOLOv5 官方提供的测试脚本进行测试,并将输出结果保存在指定文件中。可以使用以下命令进行测试: ``` python test.py --weights /path/to/model/weights.pt --data /path/to/data.yaml --img 640 --conf 0.25 --iou 0.50 --task test --name my_test_results ``` 其中,`--weights` 参数指定模型权重文件路径,`--data` 参数指定数据集配置文件路径,`--img` 参数指定输入图像的大小,`--conf` 参数指定检测阈值,`--iou` 参数指定 IoU 阈值,`--task` 参数指定任务类型,可以是 test 或 val,`--name` 参数指定输出结果文件夹的名称。 4. 计算 mAP50 计算 mAP50 可以使用 YOLOv5 官方提供的 `test.py` 脚本输出的结果文件进行。可以使用以下命令计算 mAP50: ``` python -m utils.metrics maps --data /path/to/data.yaml --pred /path/to/predictions.txt --iou 0.50 ``` 其中,`--data` 参数指定数据集配置文件路径,`--pred` 参数指定预测结果文件路径,`--iou` 参数指定 IoU 阈值。 执行完上述命令后,脚本会输出测试集的 mAP50 值。如果需要计算其他 IoU 阈值下的 mAP,可以将 `--iou` 参数设置为相应的值。 ### 回答2: YOLOv5是一种目标检测算法,用于检测图像或视频中的目标物体。其中的MAP(Mean Average Precision)指标用于评估模型的检测性能。MAP@[0.5]即为在IOU阈值为0.5的平均精度。 在进行YOLOv5的计算测试集MAP@0.5,首先需要准备一个具有标注框的测试集,在测试集上运行已训练好的YOLOv5模型。然后通过计算每个目标的预测框与标注框之间的IOU(Intersection over Union,交并比)来确定是否为正确的检测结果。 计算MAP@0.5的步骤如下: 1. 对于每个类别,根据IOU阈值0.5,计算预测框与标注框之间的IOU值。 2. 对于每个类别,按照IOU值的降序排列预测结果。 3. 根据排列后的顺序,计算累计精度和召回率。 4. 根据累计精度和召回率的曲线,计算不同召回率下的平均精度。 5. 对所有类别进行求平均,得到MAP@0.5作为整个测试集的评估指标。 通过计算测试集的MAP@0.5,可以量化YOLOv5模型在检测物体上的准确性和召回率表现,评估模型的整体性能,以便进一步调整和优化模型。 ### 回答3: YOLOv5是一种先进的目标检测算法,其在计算测试集MAP50可以实现高效准确的定位和识别。MAP50是一种常用的评估指标,表示在召回率为50%的平均准确率。以下是使用YOLOv5计算测试集MAP50的步骤。 首先,我们需要准备测试集数据。测试集是包含了一系列图像和相应标签的数据集,用于评估模型的性能。接下来,我们加载预训练好的YOLOv5模型。 然后,我们对测试集数据进行推理。推理过程就是模型利用已学习到的参数对测试集中的图像进行目标检测和识别。YOLOv5通过一次前向传播即可得到目标的位置和类别信息。 在得到模型的输出后,我们根据其置信度对每个预测框进行筛选。通常,我们会设置一个阈值,只保留置信度高于该阈值的预测框。 接着,我们利用非极大值抑制算法来消除重叠的边界框。该算法会计算预测框之间的IoU(交并比),如果IoU高于设定的阈值,则将其中置信度较低的框删除。 最后,我们根据筛选后的预测框与标签之间的匹配程度计算MAP50。MAP50的计算方法是将测试集中每个类别的AP(平均准确率)计算平均并加权,其中AP是通过计算每个类别在不同召回率下的准确率得到的。 总的来说,YOLOv5计算测试集MAP50的过程包括数据准备、模型推理、筛选预测框、非极大值抑制和最终的MAP50计算。通过这些步骤,我们可以评估YOLOv5模型在测试集上的性能,为进一步的优化和改进提供指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值