YOLO V1学习笔记

YOLOV1是一种经典的一阶段目标检测算法,以其速度快、实时性强而著称。它将检测问题转化为回归问题,通过CNN预测边界框和类别概率。每个网格预测两个候选框,每个框包含坐标、宽高和置信度,以及20类别的概率。损失函数包括位置、置信度和分类误差,用于最小化预测与真实值的差距。NMS用于去除重叠框。尽管YOLOV1在小物体检测和多类别预测上存在挑战,但其简单快速的特性使其在实时应用中极具价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

YOLO V1

  • 是一个经典的one-stage方法

  • “只看一次”,一个网络架构直接得出结果,速度非常快

  • 把检测问题转化为回归问题,一个CNN就搞定了

  • 可以对视频进行实时检测,应用领域非常广

  1. 基本网络架构:

在这里插入图片描述

此处比较难理解的就是将图片划分为7*7*30,7*7比较容易理解,即:将图片划分为7*7的格子,也就是最终网格的大小。对于每一个物体(格子)来说,需要产生两种候选框,而这每一个格子中包含30个值,这30个值被分成了3份,如图上的绿色长条所示,前面的两个5位分别为第一个候选框(b1:宽<高的黄色框)和第二个候选框(b2:宽>高的黄色框)的相关信息,这5位由以下内容组成:

  • x,y:
    • 并不是实际的像素点的坐标值,而是被归一化之后的处于0-1之间的一个值
  • w,h:
    • 并不是实际的像素点数量值,而是被归一化之后的处于0-1之间的一个值
  • c:
    • 置信度值

还剩余20位为20分类,但这个分类是依据数据集来确定的,并不一定每个数据集都是20分类,此处是以20为例,这个20位也就是一个分类任务,每一个位中存放相应类别的置信度值,如下所示:

老虎狮子…(此处省略15个)
0.050.80.090.08…(此处省略15个0.1

所以,我们最终需要的就是7*7*30中的这个7和30。

参数的含义总结:

  • 10 = (x,y,w,h,c)* Box数量
  • 20:当前数据集共有20个类别
  • 7*7:表示最终网格的大小
  • (S*S)* (Box数量 * 5 + c):表示最终得到的结果
  1. 损失函数

    具体组成结构如下图所示:

在这里插入图片描述

损失函数的作用:由于我们最终得到的结果是30个值的预测值,而我们所希望的是将这些预测值尽可能的趋近真实值,也就是最小化预测值和真实值之间的误差。

  1. 位置误差:

    在这里插入图片描述

    这里的在这里插入图片描述
    表示cell i 中的第j个box对这个物体负责,也就是候选框中IOU最大的那个box。对于w和h为什么计算的时候要带根号,可以从函数在这里插入图片描述
    这个函数的图像得出,当x较小的时候,y的斜率较大,对x的变化较为敏感,当x较大的时候,y的斜率较小,此时对x的变化变得不太敏感,这种情况映射到w和h上时就表现为:当真实框和预测框的w和h都比较大时,那么预测框相对于真实框微小偏移对预测的结果来说则影响不大,而当真实框和预测框的w和h都比较小时,那么预测框相对于真实框微小偏移则会对预测的结果产生相当大的影响。

  2. 置信度误差(含object(物体)的):

    在这里插入图片描述

    含有所预测物体的框可以认为是前景框,这时候需要找一个IOU最大的框作为候选框。

  3. 置信度误差(不含object(物体)的):

    在这里插入图片描述

    由于在预测的时候很多框是不含有物体的,这一部分为背景区域。为了避免这一大部分的背景框对结果造成较大影响,所以需要给这一部分值一个权重,使其在相同值条件下对结果的影响程度低于含有object的框。

  4. 分类误差:

    用于判断物体是哪种类别

    在这里插入图片描述

    计算预测物体的概率和真实值之间的概率的交叉熵,交叉熵如何计算?

    在二分的情况下,模型最后需要预测的结果只有两种情况,对于每个类别我们的预测得到的概率为 p 和 1−p ,此时表达式为(log 的底数是 e):
    L = 1 N ∑ n = 1 L i = 1 N ∑ i − [ y i ∗ log ⁡ ( p i ) + ( 1 − y i ) ∗ l o g ( 1 − p i ) ] L=\frac{1}{N}\sum_{n=1}L_i=\frac{1}{N}\sum_{i}-[y_i*\log(p_i)+(1-y_i)*log(1-p_i)] L=N1n=1Li=N1i[yilog(pi)+(1yi)log(1pi)]
    其中:
    y i : 表示样本 i 的 l a b e l ,正类为 1 ,负类为 0 p i : 表示样本 i 预测为正类的概率 \begin{aligned} &y_i:表示样本i的label,正类为1,负类为0\\ &p_i:表示样本i预测为正类的概率 \end{aligned} yi:表示样本ilabel,正类为1,负类为0pi:表示样本i预测为正类的概率
    多分类的情况实际上就是对二分类的扩展:
    L = 1 N ∑ i L i = − 1 N ∑ i ∑ c = 1 M y i c l o g ( p i c ) L=\frac{1}{N}\sum_{i}L_i=-\frac{1}{N}\sum_{i}\sum_{c=1}^My_{ic}log(p_{ic}) L=N1iLi=N1ic=1Myiclog(pic)
    其中:
    M : 类别的数量 y i c : 符号函数( 0 或 1 ),如果样本 i 的真实类别等于 c 取 1 ,否则取 0 p i c : 观测样本 i 属于类别 c 的预测概率 \begin{aligned} &M:类别的数量\\ &y_{ic}:符号函数(0或1),如果样本i的真实类别等于c取1,否则取0\\ &p_{ic}:观测样本i属于类别c的预测概率 \end{aligned} M:类别的数量yic:符号函数(01),如果样本i的真实类别等于c1,否则取0pic:观测样本i属于类别c的预测概率

  5. NMS(非极大值抑制):

    顾名思义,非极大值抑制就是排除掉不是极大值的值。实际情况就是,在测试的时候,可能会检测到很多个框都是重叠的,这个时候可以用非极大值抑制去处理

    在这里插入图片描述

    比如这张图片在识别人脸,并且每个人脸上有多个框,这个时候就需要用非极大值抑制,左侧女性人脸取极大值0.98,右侧男性人脸取极大值0.81

  6. YOLO V1

    • 优点:快速,简单
    • 问题1:每个cell只预测一个类别,如果重叠则无法解决
    • 问题2:小物体检测效果一般,长宽比可选但单一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃小巴掌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值