《You Only Look Once: Unified, Real-Time Object Detection》YOLO一种实时目标检测方法 阅读笔记(未完成版)

1. one-stage与two-stage检测算法

two-stage:
one-stage目标检测算法:一步到位,速度较快。

yolo_v1的基本思想:预测框的位置、大小和物体分类都通过CNN暴力predict出来。

1. 模型过程

yolo v1进行目标检测的过程如下图所示
yolo的基本流程
就拿yolo如何检测出这只小狗的过程来说,引出yolo是如何进行目标检测和在这个过程中的相关概念。

1.1 grid cell

首先,将图片分为7*7的网格,每个网格叫做grid或则和grid cell。所以一张图片有49个grid。如果一个目标的中心位置落在某个格子,那么这个格子就负责检测出这个目标(If the center of an object falls into a grid cell, that grid cell is responsible for detecting that object.)。比如下面狗的中心落在(5,2)grid,所以该grid负责预测狗。
在这里插入图片描述

1.2 bounding box与confidence score

上文中含有小狗中心的那个grid cell会预测2个bounding boxes(边界框)和这些框框的confidence scores(置信度分数)。
这些confidence scores反映了模型对框中包含对象的置信度,以及它认为框预测的准确性。也就是一个bounding box对应一个confidences score
在这里,需要明确一点,一个grid cell会有多个bounding box,而每个bounding box会有一个confidence score。比如,下面的一个grid cell就有三个bounding box。每个bounding box会对应一个confidences score
在这里插入图片描述
其中,confidences score的定义公式为:
置 信 度 = P r ( O b j e c t ) ∗ I O U p r e d t r u t h 置信度=Pr(Object)*IOU^{truth}_{pred} =Pr(Object)IOUpredtruth
其中,Pr(Object)代表bounding box对应的grid cell中是否有含有物体中心。若有,为1,若没有,则为0(没有的话,计算IOU没有任何意义)。
关于IOU,它表示的是真实框与预测框的交并比。其意义如下图所示。
在这里插入图片描述
所以confidences score代表其所对应的bounding box预测能力的强弱。

每个bounding box有5个属性,x、y、w、h和confidence core。(x,y)表示的是某个grid cell下的bounding box的中心(The (x, y) coordinates represent the center of the box relative to the bounds of the grid cell.)。w和h表示预测的图片的宽和高(个人理解,w和h就是bounding box的宽和高)。最后,confidence反应的是预测图像和真实图像的IOU。

1.3 类别预测

每个grid cell有预测C个条件概率:Pr(Classi|Object),即在一个grid cell包含一个Object的前提下,它属于某个类的概率。 每个网格单元预测一组类概率,不管框的数量是多少。也就是说,类别预测只是跟grid cell是相关的,与这个grid cell有多少个bounding box无关。

最终每个网格会得到一个30维度向量。
在这里插入图片描述
所以,最后一张图片会生成一个7730的张量。

其中,置信度confidence score计算为

所以上面说的类别预测的条件概率乘以单个盒子的置信度即:
= P r ( C l a s s i ) ∗ I O U p r e d t r u t h =Pr(Class_{i})*IOU^{truth}_{pred} =Pr(Classi)IOUpredtruth
这个给了我们每个box一个分数特殊类别预测。这些分数编码了类出现在框中的概率以及预测框与对象的匹配程度。

1.4 预测目标

在测试阶段,将每个网格的类别预测与每个 bounding box的 confidence相乘:
在有目标中心的情况下,即Pr(Object)不等于0
P r ( C l a s s i ∣ O b j e c t ) ∗ 置 信 度 = P r ( C l a s s i ∣ O b j e c t ) ∗ P r ( O b j e c t ) ∗ I O U p r e d t r u t h = P r ( C l a s s i ) ∗ I O U p r e d t r u t h Pr(Class_{i}|Object)*置信度=Pr(Class_{i}|Object)*Pr(Object)*IOU^{truth}_{pred} =Pr(Class_{i})*IOU^{truth}_{pred} Pr(ClassiObject)=Pr(ClassiObject)Pr(Object)IOUpredtruth=Pr(Classi)IOUpredtruth
这是我看到的一篇博客的图。
图片来源于网络

在训练过程中,关于拿如何把狗这个对象预测出来。整个过程有三点:

首先,将整个图片分成S*S个grid cell(网格)。每个grid cell会预测B个(多个)

2. 网络的学习

对于上面的过程,可能会有如下疑问:

  1. 模型是如何知道“狗”的中心点在哪个网格,或者说模型是如何知道网格中是否包含物体中心点
  2. 模型是如何选择bbox的,即预测框是如何框的
  3. 模型是如何预测方框中的对象是“狗”,而不是猫或者其他的东西
2.1 网络输出的数据与预测集数据

由1中可知,神经网络每次回输出7730(即SS(B*5+C))的张量。
对于每个网格会输出一个30维张量。
同时,我们的数据集经过处理过后,会有一个25维的张量(一个真实框+类别)。
拿预测的值和真实值进行对比。以此达到训练的目的。
所以:

  1. 模型开始并不知道“狗”的中心点在哪个网格,它会随机预测一个,拿它与真实值对比。以此达到学目的。
  2. 模型开始也是随机选择bbox的,然后拿它跟真实框对比,以此来学习。
  3. 至于预测网格中对象是“狗”而不是“猫”,则是类似于手写识别字
2.2 损失函数

损失函数的设计目标就是让坐标(x,y,w,h),confidence,classification 这个三个方面达到很好的平衡。
在这里插入图片描述

2.3 网络的设计

YOLO的检测网络分为24个卷积层和2个全连接层,如下图所示:
在这里插入图片描述
其中,卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"YOLO:统一、实时目标检测"简称YOLO,是一种深度学习算法,用于实时目标检测。它的核心思想是将目标检测问题转化为单个统一的回归问题,使得只需一次前向传播即可直接预测出目标的位置和类别。 相比于传统的目标检测方法YOLO具有显著的优势。首先,YOLO采用了统一的网络结构,端到端地完成整个目标检测过程。这意味着不需要将图像分割成多个部分进行处理,减少了冗余计算,提高了计算效率。 其次,YOLO实时性能出色。它将目标检测任务与边界框回归深度学习模型相结合,使得可以在一次前向传播中同时预测出多个目标的位置和类别。因此,YOLO在速度上远远超过了传统的基于滑窗的目标检测方法。 此外,YOLO还采用了多尺度的特征图来检测不同大小的目标。通过在不同层级的特征图上进行预测,YOLO可以有效地捕捉目标的多尺度信息,并提高了目标检测的准确性。 然而,YOLO也存在一些局限性。由于采用了统一的网络结构,YOLO对小尺寸的目标检测相对较差。此外,当目标之间存在重叠或者遮挡时,YOLO可能会出现漏检或者虚警的情况。 总而言之,YOLO一种统一、实时目标检测算法,具有高效、准确的特点。它在图像处理、智能安防、自动驾驶等领域具有广泛的应用前景。然而,为了提升其性能,在处理小尺寸目标和目标重叠等复杂场景时,仍需要不断的研究和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值