对YOLOv5目标检测正确与否的理解

学习目标检测有一段时间了,然而对目标检测怎么才算正确一直没有透彻的理解,也许有人会说,那不是很简单嘛,预测框与目标框IOU大于设定的阈值就认为是正确的呀,但是当真正写代码计算PR时,会有些细节性的问题。


  1. 哪些框是应该与目标框计算的
  2. 同一张图片同类物体有两个,如何与预测框对应
  3. 为什么要选iou最大的预测框作为最终框

先举个例子,假如在一张图片上给出狗子的位置,现在模型输出三个狗子位置,其中一个是预测正确的(IOU大于阈值),另外两个位置是没有狗子的,即错误的,问预测的准确率是多少?三分之一吗,我之前也是这样想的。实际上YOLOv5是这样计算的,计算这三个预测结果与目标位置的IOU,取其中最大的IOU对应的预测结果为最终预测结果,如果这个最大的IOU大于阈值则认为是正确的,反之错误。也就是说,对于同一个目标的预测,只看最佳预测!对应代码为:

ious, i = box_iou(predn[pi, :4], tbox[ti]).max(1)  # best ious, indices

现在回到开头的三个问题,哪些框是应该与目标框计算的

YOLOv5预测的每个结果中是有类别这一值的,目标框也有类别,与目标框类别相同的预测框即是参与IOU计算的框,最后选出IOU值最高的预测框作为该目标预测结果。

同一张图片同类物体有两个,如何与预测框对应?

一样道理,物体同类但位置不同,与目标框类别相同的预测框即是参与IOU计算的框,最后选出IOU值最高的预测框作为该目标预测结果。

为什么要选IOU最大的预测框作为最终框?

个人觉得,每个预测框的置信度不同,所以不能一视同仁而是取最优?暂时还没完全想明白。

计算TP和FP是用到哪些预测类别正确,置信度低,但IOU小的结果的。在YOLOv5的测试过程中,发现个问题,改变NMS的参数值(conf-thres和iou-thres)会影响最后的P、R、AP,那官方的设置应该是多少呢

版权声明:本文为CSDN博主「Coding-Prince」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42362891/article/details/122481278

Coding-Prince

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

YOLOX笔记

目录 1. 样本匹配 正负样本划分过程 2. yoloxwarmcos 学习率 3. 无法开启多gpu训练, 或者多gpu训练卡住? 1. 样本匹配 正负样本划分过程 说明: gt_centerbbox是在gt_bbox中心点向四周