目标检测的置信度和NMS

这篇具有很好参考价值的文章主要介绍了目标检测的置信度和NMS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 置信度(confidence)

    还存在一个很关键的问题:在训练中我们挑选哪个bounding box的准则是选择预测的box与ground truth box的IOU最大的bounding box做为最优的box,但是在预测中并没有ground truth box,怎么才能挑选最优的bounding box呢?这就需要另外的参数了,那就是下面要说到的置信度。

    置信度是每个bounding box输出的其中一个重要参数,作者对他的作用定义有两重:
    一重是:代表当前box是否有对象的概率 Pr​(Object),注意,是对象,不是某个类别的对象,也就是说它用来说明当前box内只是个背景(backgroud)还是有某个物体(对象);
    另一重:表示当前的box有对象时,它自己预测的box与物体真实的box可能的 I O U p r e d t r u t h IOU_{pred}^{truth} IOUpredtruth的值,注意,这里所说的物体真实的box实际是不存在的,这只是模型表达自己框出了物体的自信程度。
    以上所述,也就不难理解作者为什么将其称之为置信度了,因为不管哪重含义,都表示一种自信程度:框出的box内确实有物体的自信程度和框出的box将整个物体的所有特征都包括进来的自信程度。经过以上的解释,其实我们也就可以用数学形式表示置信度的定义了:
    C i j = P r ( O b j e c t ) ∗ I O U p r e d t r u t h C_{i}^{j}=P_{r}(Object)*IOU^{_{pred}^{truth}} Cij=Pr(Object)IOUpredtruth
    其中, C i j C_{i}^{j} Cij表示第i个grid cell的第j个bounding box的置信度。
    那么如何训练 C i j C_{i}^{j} Cij​?

    训练中, C i j ^ \hat{C^{_{i}^{j}}} Cij^表示真实值, C i j ^ \hat{C^{_{i}^{j}}} Cij^的取值是由grid cell的bounding box有没有负责预测某个对象决定的。如果负责,那么 C i j ^ \hat{C^{_{i}^{j}}} Cij^ = 1 ,否则, C i j ^ \hat{C^{_{i}^{j}}} Cij^=0。
    下面我们来说明如何确定某个grid cell的bounding box是否负责预测该grid cell中的对象:前面在说明anchor box的时候提到每个bounding box负责预测的形状是依据与其对应的anchor box(bounding box prior)相关的,那这个anchor box与该对象的ground truth box的IOU在所有的anchor box(与一个grid cell中所有bounding box对应,COCO数据集中是9个)与ground truth box的IOU中最大,那它就负责预测这个对象,因为这个形状、尺寸最符合当前这个对象,这时 C i j ^ \hat{C^{_{i}^{j}}} Cij^ = 1 ,其他情况下 C i j ^ \hat{C^{_{i}^{j}}} Cij^ = 0 。注意,你没有看错,就是所有anchor box与某个ground truth box的IOU最大的那个anchor box对应的bounding box负责预测该对象,与该bounding box预测的box没有关系。

  2. 类别置信度:
    分类器返回某个目标的类别置信度,即该目标属于A的概率,属于B的概率。即分类器最后softmax得到的结果。

    具体地,描述为对象条件类别概率(conditional class probabilities)

    对象条件类别概率是一组概率的数组,数组的长度为当前模型检测的类别种类数量,它的意义是当bounding box认为当前box中有对象时,要检测的所有类别中每种类别的概率.
    其实这个和分类模型最后使用softmax函数输出的一组类别概率是类似的,只是二者存在两点不同:

    YOLO的对象类别概率中没有background一项,也不需要,因为对background的预测已经交给置信度了,所以它的输出是有条件的,那就是在置信度表示当前box有对象的前提下,所以条件概率的数学形式为 P r ( c l a s s i ∣ O b j e c t ) P_{r}(class_{i}|Object) Pr(classiObject);

    分类模型中最后输出之前使用softmax求出每个类别的概率,也就是说各个类别之间是互斥的,而YOLOv3算法的每个类别概率是单独用逻辑回归函数(sigmoid函数)计算得出了,所以每个类别不必是互斥的,也就是说一个对象可以被预测出多个类别。这个想法其实是有一些YOLO9000的意思的,因为YOLOv3已经有9000类似的功能,不同只是不能像9000一样,同时使用分类数据集和对象检测数据集,且类别之间的词性是有从属关系的。

  3. NMS 非极大值抑制
    非极大值抑制用在最后阶段,即所有边界框都已经回归调整过后,对图片每一类使用NMS防止一个目标出现多个边界框。
    1、非极大值抑制需要设置一个阈值
    2、使用时间是最后调整完预测框位置后
    3、多少个类就使用多少次非极大值抑制
    4、每一类使用非极大值抑制后找到所有这类的边界框

    yolov3中NMS在训练过程中不执行。正是因为不需要训练,所以也就不需要保留梯度。所以可以在代码中看到tensor一会儿加载到cpu一会儿加载到GPU上的操作。这种操作在训练过程中是不允许出现的。

    在目标检测网络中,会生成许多重复地目标框,使用NMS去除冗余的目标框,保留置信度高的目标框。

    (1)在Bounding Box列表中,首先选择置信度最高的目标框A。
    (2)将与A的IoU超过阈值的目标框从Bounding Box中去除,并将A标记并移入保留框列表中。
    (3)重复(1)和(2),知道Bounding Box列表清空为止。
    对每个分类,都需要使用一次上述流程,直到Bounding Box清空为止。

    然而,单纯使用NMS去选取目标框,可能会导致两个相同类别的重合度高的物体,由于IoU较大,较小置信度的目标框被删除而导致漏检。

    Soft-NMS就是针对这种情况出现的。

    原NMS算法中,当IoU较大时,小置信度的框的置信度会直接置零:
    目标检测的置信度和NMS
    Soft-NMS算法中,当IoU较大时,小置信度的目标框的得分,会被重置,重置方法有两种:

    线性加权法:

    目标检测的置信度和NMS
    高斯加权法:
    目标检测的置信度和NMS
    当目标框与当前选定的最大置信度的目标框重合度越高,分数被扣除的越多。
    这样,当选取的阈值合适时,就会降低同类目标由于IoU较大而被误删的概率。

参考:
1、https://blog.csdn.net/weixin_43384257/article/details/100974776文章来源地址https://www.toymoban.com/news/detail-461120.html

到了这里,关于目标检测的置信度和NMS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • p 值计算(置信度)

    参考 【科研新手必学】手把手教你统计学的P值含义和检验假设 下图中,μ0 表示整个地区的总体均值,μ 表示整个矿区的整体均值, X ‾ overline{X} X 表示矿区抽样的均值 H0是无效假设(原假设),即,矿区的均值和该地区的均值其实是一样的,只是因为抽样误差而导致的(即矿

    2024年02月08日
    浏览(32)
  • YOLOv5改进训练过程中置信度损失上升

            最近需要对yolov5网络框架进行改进,改进训练的过程当中发现了一个奇怪的问题。        从tensorboard的图像过程中看出,bbox_loss,cls_loss在训练预测之后正常下降,当时obj_loss置信度损失值在上升。这可把我给困住了,各方面都没有问题,困扰好久。       

    2024年02月08日
    浏览(39)
  • t分布95%的置信度,相关系数是多少的问题

    在概率论和统计学中,t-分布(t-distribution)用于根据 小样本 来估计呈正态分布且方差未知的总体的均值。如果总体方差已知(例如在样本数量足够多时),则应该用正态分布来估计总体均值。 t分布95%的置信度,相关系数是 1.96 ,因为 t 分布于自由度有关,置信度对应下的

    2024年02月12日
    浏览(37)
  • YOLOv8 推理脚本--置信度保留多位浮点数 & 特征图可视化

    特征图可视化: 4位浮点数: 原始2位浮点数 4位浮点数 在进行改动前,请大家先阅读下 基础入门篇 | YOLOv8 项目【训练】【验证】【推理】最简单教程 | YOLOv8必看 | 最新更新,直接打印 FPS,mAP50,75,95 ,确保会用我给的推理脚本。 YOLO( ) :这里写你推理使用的

    2024年04月11日
    浏览(49)
  • 【海量数据挖掘/数据分析】 之 关联规则挖掘 Apriori 算法 (数据集、事务、频繁项集、关联规则、支持度、置信度)

    目录 【海量数据挖掘/数据分析】 之 关联规则挖掘 Apriori 算法 (数据集、事务、频繁项集、关联规则、支持度、置信度) 一、 关联规则挖掘简介 二、 数据集 与 事务 ( Transaction ) 概念 三、项 ( Item ) 概念 四、项集 ( Item Set ) 概念 五、频繁项集 六、数据集、事物、项、项集

    2024年02月05日
    浏览(49)
  • 【目标检测】 非极大值抑制—NMS

    在目标检测任务中,一个目标可能会被多个边界框检测到,这些边界框可能会有不同的位置和大小,但表示同一个目标。 非极大值抑制 (Non-Maximum Suppression, NMS )是一种常用的方法,用于抑制这些重叠的边界框,只保留置信度最高的那个边界框,从而得到最终的目标检测结

    2024年02月04日
    浏览(29)
  • 一文打尽目标检测NMS(1): 精度提升篇

    文章来自于:曲終人不散丶@知乎, 连接:https://zhuanlan.zhihu.com/p/151914931, 本文仅用于学术分享,如有侵权,前联系后台做删文处理。 众所周知,非极大值抑制NMS是目标检测常用的后处理算法,用于剔除冗余检测框,本文将对可以提升精度的各种NMS方法及其变体进行阶段性总

    2024年02月04日
    浏览(63)
  • 【目标检测】非极大值抑制NMS的原理与实现

    非极大值抑制(Non-Maximum Suppression,NMS)是目标检测中常用的一种技术,它的主要作用是去除冗余和重叠过高的框,并保留最佳的几个。 NMS计算的具体步骤如下: 首先根据目标检测模型输出结果,得到一系列候选框及其对应的概率分数。 对所有候选框按照概率分数进行降序

    2024年02月08日
    浏览(31)
  • 【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling

    最近刚接触图像识别,理解一些概念十分困难,尤其是动不动就冒出个看不懂的英语,让人抓狂。查了不少资料后做一个总结并加上一些自己的理解,理解若有误,烦请大家指出,相互学习。 本文主要对 region proposal、anchor box、bounding box、bounding box regression、ground truth、IoU、

    2024年02月05日
    浏览(34)
  • 检测到目标URL存在暗链

    暗链又叫隐藏链接,指的是正常的链接通过一些方法,如:把链接放入js代码中,使用display:none等等,从而使用户在正常浏览网页的时候无法看到这个链接。暗链是对搜索引擎的一种欺骗,导致搜索引擎的误判,将高权重分配给原本没有价值的网站甚至是钓鱼网站。这样极易

    2024年02月16日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包