首页 > 其他分享 >yolo系列

yolo系列

时间:2024-03-11 19:56:00浏览次数:15  
标签:box object 置信度 预测 yolo cell bounding 系列

非极大值抑制

那么可以采用NMS算法来实现这样的效果:首先从所有的检测框中找到置信度最大的那个框,然后挨个计算其与剩余框的IOU,如果其值大于一定阈值(重合度过高),那么就将该框剔除;然后对剩余的检测框重复上述过程,直到处理完所有的检测框。Yolo预测过程也需要用到NMS算法。

yolov1

算法首先把输入图像划分成S*S的格子,然后对每个格子都预测B个bounding boxes,每个bounding box都包含5个预测值:x,y,w,h和confidence。
如果一个物体的中心点落入一个格子,那么这个格子负责预测这个物体。
每个bounding box的confidence和每个类别的score相乘,得到每个bounding box属于哪一类的confidence score。

将原始图片分割成互不重合的小方块,然后通过卷积最后生产这样大小的特征图,可以认为特征图的每个元素也是对应原始图片的一个小方块,然后用每个元素来可以预测那些中心点在该小方格内的目标。

Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。
结构:
image
Yolo算法将目标检测看成回归问题,所以采用的是均方差损失函数。但是对不同的部分采用了不同的权重值。首先区分定位误差和分类误差。对于定位误差,即边界框坐标预测误差,采用较大的权重。

对于Yolo算法先使用NMS,然后再确定各个box的类别。其基本过程如图12所示。对于98个boxes,首先将小于置信度阈值的值归0,然后分类别地对置信度值采用NMS,这里NMS处理结果不是剔除,而是将其置信度值归为0。最后才是确定各个box的类别,当其置信度值不为0时才做出检测结果输出。

** 那么我们有每个object的标注信息,也就是知道每个object的中心点坐标在输入图像的哪个位置,那么不就相当于知道了每个object的中心点坐标属于哪个grid cell了吗,而只要object的中心点坐标落在哪个grid cell中,这个object就由哪个grid cell负责预测,也就是该grid cell包含这个object。另外由于一个grid cell会预测两个bounding box,实际上只有一个bounding box是用来预测属于该grid cell的object的,因为这两个bounding box到底哪个来预测呢?答案是:和该object的ground truth的IOU值最大的bounding box。**

yolov2

YOLOv1最后采用的是全连接层直接对边界框进行预测,其中边界框的宽与高是相对整张图片大小的,因为需要检测物体大小不同,YOLOv1在训练过程中学习适应不同物体的形状是比较困难的。yolov2移除了全连接层而采用了卷积和anchor boxes来预测边界框

对于YOLOv1,每个cell都预测2个boxes,每个boxes包含5个值:前4个值是边界框位置与大小,最后一个值是置信度(confidence scores,包含两部分:含有物体的概率以及预测框与ground truth的IOU)。但是每个cell只预测一套分类概率值(class predictions,其实是置信度下的条件概率值),供2个boxes共享。YOLOv2使用了anchor boxes之后,每个位置的各个anchor box都单独预测一套分类概率值,这和SSD比较类似(但SSD没有预测置信度,而是把background作为一个类别来处理)。

标签:box,object,置信度,预测,yolo,cell,bounding,系列
From: https://www.cnblogs.com/kafukasy/p/18066919

相关文章

  • 杭电OJ递推系列的题目
    1.2047阿牛的EOF牛肉串阿牛的EOF牛肉串分析:对于这种递推求解的题目无非分为两种递推方式:(1)从前往后递推(2)从后往前递推这道题用从后往前递推比较好,因为题目中的限制条件为禁止出现O相邻的情况,所以通过定后一项的值来判断前一项的取值比较容易。参考资料PS:这种题目难点就......
  • Nestjs系列 文件上传(一)
    Express中的文件上传Nest的文件上传是基于Express中间件multer实现的,所以需要先了解下multer包的使用。npminit-y#创建一个package.jsonnpminstallexpressmultercors#安装依赖包cors是处理跨域用的。创建index.js文件,并写入内容constexpress=re......
  • [Open3d系列]--点云曲线拟合
    Open3d:点云曲线拟合因为项目需要分析点云数据,此文总结其中拟合点云的部分。拟合首先定一个曲线方程:deffunc(x,a,b,c):returna*x**2+b*x+c然后将点云数据结构转换为numpy数组:points=np.asarray(pcd.points)读取点数组中,x轴、y轴的数组:xy_points......
  • YOLOv9环境搭建&推理测试
    引子对于CV从业者来说,YOLO系列是个绕不过的经典结构,笔者遥想当年YOLO横空出世的时候,FasterRCNN还是学术界目标检测的翘楚。二阶段检测还是大行其道,不过时至今日,估摸着没有人再提二阶段目标检测的结构了。YOLO系列也从1更新到了9,这新鲜出炉的v9版本,我也来凑个热闹(虽然没有前几年......
  • 多线程系列(十六) -常用并发原子类详解
    一、简介在Java的java.util.concurrent包中,除了提供底层锁、并发同步等工具类以外,还提供了一组原子操作类,大多以Atomic开头,他们位于java.util.concurrent.atomic包下。所谓原子类操作,顾名思义,就是这个操作要么全部执行成功,要么全部执行失败,是保证并发编程安全的重要一环。相......
  • Logstash系列---【centos7离线安装logstash7.8.0】
    1.安装包下载地址一般根据es的版本来确定logstash的版本,一般保持一致即可。Logstash和es版本对应关系:https://www.elastic.co/cn/support/matrix#matrix_compatibility。Logstash下载地址:https://www.elastic.co/cn/downloads/past-releases/logstash-7-8-02.解压并复制配置......
  • Nestjs系列 Nestjs基础(四)
    Nest中的middlewaremiddware基础用法已经在Nest的AOP架构章节中存在。此次记录middleware的更详细用法新建项目,然后创建一个middleware模板nestgmiddlewaretest--no-spec--flat可以看到此时的req和res都是any,可以对其进行明确的类型标注,express就从......
  • 深度学习-卷积神经网络-目标检测YOLO-v1详解-54
    目录1.结构3.总结3.训练样本的构造4.损失函数5.训练6.推理6.小结参考:https://www.zhihu.com/tardis/zm/art/46691043?source_id=1005输入一张图片,要求输出其中所包含的对象,以及每个对象的位置(包含该对象的矩形框)RCNN开创性的提出了候选区(RegionProposals)的方法,先从......
  • 解密prompt系列26. 人类思考vs模型思考:抽象和发散思维
    在ChainofThought出来后,出现过许多的优化方案例如Treeofthought,GraphofThought,AlgorithmofThought等等,不过这些优化的出发点都更加"MachineLike",而非"HumanLike",哈哈不是说机器化不好,仅仅是对AGI的一些个人偏好而已。所以如果我们从人类思考的角度出发,能否把当......
  • 国产光刻机系列产品
    SSX600系列光刻机 SSX600系列步进扫描投影光刻机采用四倍缩小倍率的投影物镜、工艺自适应调焦调平技术,以及高速高精的自减振六自由度工件台掩模台技术,可满足IC前道制造90nm、110nm、280nm关键层和非关键层的光刻工艺需求。该设备可用于8寸线或12寸线的大规模工业生产。SSB50......