YOLO系列论文精读总结——YOLOv1篇

YOLO系列论文精读总结——YOLOv1篇

概述:本文为YOLOv1论文精度的记录,帮助理解YOLOv1整个训练以及预测过程。
Tips:

  1. 文章绿色部分为YOLO后续论文中优化更改的内容。
  2. YOLOv1论文精度资料,包括论文原文,推测部分经典PPT, 本人精度论文中的标注,已经上传至CSDN,见链接,不方便下载可以给我留言。
    资料
  3. 文章主要内容参考自B站UP主同济子豪兄的讲解,十分详细的论文精读视频!!

YOLOv1概述

YOLOv1相对与同期模型最大的特点是其为单阶段模型,所以YOLO的运行速度相对于其他模型有显著提升。作者创新性的将目标检测问题看作回归问题,输入一张图片经过一个‘黑盒子’便可直接输出预测结果。为了更好的理解YOLO目标检测的过程,我们先不看那个黑盒子,而是聚焦于输出结果,即模型推理阶段。

1. 推理阶段

下图给出了模型的推理过程,YOLOV1的输入为 448 × 448 × 3 448\times448\times3 448×448×3图像,输出大小为 7 × 7 × 30 7\times7\times30 7×7×30向量,输出向量的含义是我们理解YOLO模型推理阶段的关键先生。我们将整张输入图片分成 S × S S\times S S×S个网格(grid cell),每个网格中随机生成 B B B个预测框,用来框出我们待检测的物体。为了确定一个框在图像中的位置,我们采用四个变量,分别是:

  • x——框中心的横坐标
  • y——框中心的纵坐标
  • w——框的宽度
  • h——框的高度

经过黑盒子变换,我们最初随机生成的预测框的位置会发生变换,即模型会输出预测框新的上述四个变量。**同时我们还给每一框定义了一个新的性质——置信度(confidence)用来表征每个框包含物体的概率以及其与真实框的重合情况。**所以一个框将有五个变量输出分别是 x , y , w , h , c x,y,w,h,c x,y,w,h,c
在这里插入图片描述
在YOLOV1中 S = 7 , B = 2 S=7, B=2 S=7,B=2即将每个输入图片分成 7 × 7 7\times7 7×7个网格,每个网格将生成 2 2 2个预测框,用来框出图片中的物体。 每个框会预测出5个变量值,所以一个网格生成两个框,一个框带有5个属性,所以一个格就需要预测出 5 × 2 = 10 5\times2=10 5×2=10个变量值。回到我们模型的输出为 7 × 7 × 30 7\times7\times30 7×7×30,所以 7 × 7 7\times7 7×7即表示网格数量,在图中我们可以看到一个网格后面跟着30个变量值,其中前10个就为该网格预测出的两个框的变量值。

我们在前面分析到,每一个预测框有一个confidence属性表征其包含物体的概率。但具其体包含的是哪个物体,就需要计算出这个框包含每一类物体的概率。在YOLOv1中有20个类别的物体,所以输出结果的后20个值就表示每一个小网格(grid cell)对应每一类物体的概率,即由该网格生产的两个预测框对应每一类物体的概率。 由此,输出的 7 × 7 × 30 7\times7\times30 7×7×30向量的每一项含义便清楚了。

但经过上面分析,一张图片一共生产 7 × 7 × 2 7\times7\times2 7×7×2个框,但只有一部分框我们认为是真正找到物体的,所以我们还需要使用一些后处理方法,去掉无用的框。根据上面的分析,我们输出结果中有每个框包含物体的概率(confidence)以及每个框在包含物体的情况下是每个类别的概率。将二者相乘就是每个框是每个类别物体的概率。我们通过这个概率即可去掉无用的框,选出真正预测到物体的框。

在这里插入图片描述
见下图我们将所有框预测到的概率值按照每一行是一个概率列出来,并逐行处理。例如我们处理第一行——所有框关于类别狗的预测概率。我们先将所有小于0.2的预测概率置为0,然后将概率值按照降序进行排列,对排序后的概率采用非极大值抑制(NMS)。

在这里插入图片描述
NMS的工作原理如下:将最大的概率的框设为bbox_max,然后依次向下,观察概率排序第二的框与bbox_max的IOU(交并比),如果大于0.5,则认为这两个框选中的是同一个物体,因此我们保留概率大的框,并将另一个框概率置为0。如果IOU不大于0.5则保留该框的预测概率。按照这个方法,让第一个框依次比较后续的框。第一个框与其后所有的框比较完后,我们另在这个过程中没有被置零的下一个框为bbox_max,再依次向后比较,重复上述过程,直到最后一个bbox_max比较过后,其后面的框的概率均被置为0.

在这里插入图片描述
将每一个类别都进行上述过程,便可以将概率仍然不为零的框画出来,至此得到我们最后的预测结果。

2 训练阶段

在训练阶段我们将通过两个部分——网络结构以及损失函数去深入理解YOLOV1这个黑盒子。

2.1 网络结构:

YOLOv1中采用了24个卷积层和两个全连接层,其整体结构如下(注:YOLOv1论文中作者在网络结构图中少画了一个全连接层)。我们直到卷积层用来提取图像的特征,所以在预训练阶段作者将前20个卷积层在图片分类数据集上进行训练。
在这里插入图片描述
在整个网络(24+2)的训练过程中,除最后一层采用ReLU函数外,其他层均采用leaky ReLU激活函数。leaky ReLU相对于ReLU函数可以解决在输入为负值时的零梯度问题。YOLOv1中采用的leaky ReLU函数的表达式为:
ϕ ( x ) = { x , i f   x > 0 0.1 x , o t h e r w i s e \phi(x)= \begin{cases} x, &if\ x>0 \\ 0.1x, &otherwise \end{cases} ϕ(x)={x,0.1x,if x>0otherwise

2.2 损失函数:

我们在训练过程中,通过最小化损失函数去更新模型中的参数。YOLOv1中作者采用了平方和损失函数,并为每一项损失(定位(x,y,w,h),分类(c, p))分配了不同的权重。见下图:

在这里插入图片描述
在解释每一项的内容之前我们需要先明确几个概念。在预测阶段我们分析道,输入给模型一张图片,模型会将其分成 7 × 7 7\times7 7×7个网格,每个网格生成两个预测框。在训练采用的图片中我们已经认为标注了物体的位置,这个人为标注的框称为ground truth,这个ground truth的中心落在哪一个网格里就由这个网格所生成的两个预测框中与ground truthIOU大的那一个去最后贴合ground truth。这个框就成为负责检测物体的框,这个格子里剩下的另一个框以及没有groung truth中心落在的格子生成的两个框统称为不负责检测物体的框

  • 第一项:负责检测物体的框中心点(x, y)定位误差,遍历所有负责检测物体的框,计算其 ( x i , y i ) (x_i,y_i) (xi,yi)坐标与实际框的 ( x i ^ , y i ^ ) (\hat{x_i},\hat{y_i}) (xi^,yi^)的平方和误差,其权重 λ c o o r d = 5 \lambda_{coord}=5 λcoord=5.

  • 第二项:负责检测物体的框的高宽(w,h)定位误差,遍历所有负责检测物体的框,计算 ( w i , h i ) (\sqrt{w_i},\sqrt{h_i}) (wi ,hi )坐标与实际框的的 ( w i ^ , h i ^ ) (\sqrt{\hat{w_i}},\sqrt{\hat{h_i}}) (wi^ ,hi^ )平方和误差,其权重 λ c o o r d = 5 \lambda_{coord}=5 λcoord=5.这里采用根式形式是为了对小框更加敏感。(可以想一下开二次方函数,在取值较小时,变换比较大)

  • 第三项:负责检测物体的confidence平方和误差我们在预测阶段只给出了confidence的大致含义,却没有给其具体公式,在YOLOv1中作者定义confidence 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。所以在训练中我们是要将预测框的 P r ( O b j e c t ) Pr(Object) Pr(Object)的值变为1的,所以confidence的标签值应该为预测框与实际框的 I O U p r e d t r u t h IOU^{truth}_{pred} IOUpredtruth

  • 第四项:不负责检测物体的confidence平方和误差,根据第三项,我们可以知道这一项的标签值应为0。其权重为0.5。

  • 第五项:负责检测物体的网格对应类别的分类误差:当实际框中心落在某个网格内时,这个网格便需要预测该物体的类别。所以这一项我们遍历所有的网格,并将其类别预测值与实际值求平方误差。很明显,标签值在实际类别时为1,在非该物体类别时为0。

注:公式中特殊符号的含义:

在这里插入图片描述
至此我们整个YOLOv1架构就全部给出了解释。我们读过整个论文我们也会发现,YOLOv1一张 448 ∗ 448 448*448 448448图片只给出了 7 ∗ 7 ∗ 2 7*7*2 772个预测框,且每个网格只能负责预测一个物体,这对于两个物体的中心在同一个网格,小物体检测和群体物体检测很不友好。这些问题在YOLO后续的版本都做出了相应的对策。

后续版本

YOLOv2,YOLOv3,YOlOv4的论文精度,以及YOLOv5的代码、网络结构分析即将更新。

  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值