• yolo后处理操作-如何获取我们想要的目标框及置信度?


    yolo后处理就是模型的输出进行处理,得到我们想要的坐标框的 x y w h xywh xywh以及 c o n f i d e n c e confidence confidence
    在这里插入图片描述
    学习笔记

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bdB1sYQ4-1670143551092)(https://gitee.com/lizheng0219/picgo_img/raw/master/img2/image-20221204163144547.png)]

    这是yolov1的模型,他将图像划分成了7x7个网格,每个网格负责预测两个边界框,每个边界框都有5个信息$x、y、w、h、confidence $ ,(这个confidence是该区域有目标框的概率),共预测20个类,每个类都有一个置信度信息(这个confidence是这个框是猫是狗的概率),所以最终输出为 7 ∗ 7 ∗ 30 7*7*30 7730

    在这里插入图片描述

    然后每个边界框的confidence 乘以所有类别的confidence就是边界框的全概率

    这样每个grid cell都能有两个20维向量,一共49个grid cell,所以共有98个向量


    这些向量就组成如下的很多边界框
    在这里插入图片描述
    下一步就是筛选出真正的边界框

    第一步:这张图片上并不是有20个类的,所以先有个阈值将大于这个阈值的类别筛选出来,比如筛选出了dog、bicycle、car
    然后分别对这三个类处理,比如先对dog,从dog类的所有96个置信度进行从大到小排个序,设置一个阈值,confidence小于这个阈值的就被舍去了。

    但确实还有真正包含某个物体的多个框,比如下面四个bbox的置信度都比较大,那怎么从这多个框中选择最合适的呢?

    下面就是非极大抑制NMS
    在这里插入图片描述
    应该先将置信度最大的拿出来,然后后面的每一个都与第一个最大的作比较,如果IOU大于某个阈值,则认为两个识别了同一个物体,则把低置信度的那个抑制掉。比如bbox20和bbox47重合度较大,所以认为两个是同一物体。

    如果IOU小于这个阈值,就说明两个框不是识别的同一个物体,保留。bb15和bb7与bb47的重合度较小,所以认为两个box不是同一个物体。
    在这里插入图片描述

    然后选取剩下的第二大置信度作为基box,其他框再与这个框比较,比如bb7和bb15重合度较大,认为这两个box内是同一个物体。
    在这里插入图片描述

    合适的阈值下可能只留下一个框,当然某些阈值下可能会保留更多的框,阈值的设置应该是根据目标任务设置的,越高的阈值(越不容易置零,即越宽容)会检测出越多的目标。

    对其他类别也是同样操作,就得到了所有的目标框。

    当然注意,在训练阶段是不需要剔除框的,所有框对我们反向传播参数更新都是有用的,只是在推理阶段需要这样做。

  • 相关阅读:
    普冉PY32系列(四) PY32F002A/003/030的时钟设置
    Activiti——流程的挂起与激活
    【第十四届蓝桥杯单片机组】学习笔记(5):PCF8591( AD/DA芯片)
    数据结构模拟题[二]
    IDEA中更换java项目JDK
    Linux中使用Shell脚本安装jdk
    企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)
    java解析html代码,采集网页信息
    Bootstrap对段落和文本的设置(与段落-和文本相关的类)
    嵌入式进阶——LED灯
  • 原文地址:https://blog.csdn.net/weixin_45755332/article/details/128174203