YOLO学习笔记(二):YOLOv1

一、产生背景:

  1. 在YOLOv1提出之前,R-CNN系列算法在目标检测领域独占鳌头。R-CNN系列检测精度高,但是由于其网络结构是双阶段(two-stage)的特点,使得它的检测速度不能满足实时性,饱受诟病。为了打破这一僵局,设计一种速度更快的目标检测器是大势所趋。
  2. 2016年,Joseph Redmon、Santosh Divvala、Ross
    Girshick等人提出了一种单阶段(one-stage)的目标检测网络。它的检测速度非常快,每秒可以处理45帧图片(45FPS),能够轻松地实时运行。由于其速度之快和其使用的特殊方法,作者将其取名为:You
    Only Look Once(也就是我们常说的YOLO的全称),并将该成果发表在了CVPR 2016上,从而引起了广泛关注。
  3. YOLO 的核心思想:把目标检测转变成一个回归问题,利用整张图作为网络的输入,仅仅经过一个神经网络,得到bounding box(边界框) 的位置及其所属的类别。

二、网络架构

  • 输入:448×448×3的特征图片
  • 中间层:由若干卷积层和最大池化层组成,用于提取图片的抽象特征
  • 全连接层:由两个全连接层组成,用来预测目标的位置和类别概率值
  • 输出:7×7×30的预测结果

总体思想:YOLO将输入的448×448×3的特征图片送入CNN,其中经过24个卷积层,2个全连接层(FC),最后输出的特征图大小为7×7×30。网络架构示意图如下:
在这里插入图片描述

三、核心思想

  1. YOLO将一幅448×448×3的图像分成 S×S个网格(grid
    cell),如果某个物体的中心落在这个网格中,则这个网格就负责预测这个物体。

  2. 对于一个网格:一个网格只能预测一个物体,会生成B个预测框(bounding box)。每个网格(grid cell)要预测 B 个bounding box,每个bounding box 要预测 (x, y, w, h)—中心坐标和长宽这四个元素, 以及置信度confidence。此外,每个网格还要预测一个类别信息,记为 C 个类。 因此S×S个网格的输出就是一个 S × S × (5×B+C) 的张量。

  3. 实际上,对于YOLOv1的实际使用中,S=7,B=2,C=20,因此网络输出为7 × 7 × 30。因此30的组成为B1的5个元素,B2的5个元素以及20个条件概率类别。最终的预测特征由边框的位置、边框的置信度得分以及类别概率组成。

参考
在这里插入图片描述

词汇解释:
  1. 边框位置:对每一个边框需要预测 (x, y, w, h)这4个元素,两个边框共计8个预测值。边界框宽度w和高度h用图像宽度和高度归一化。因此(x, y, w, h)都在0和1之间。
  2. 置信度得分(box confidence score) C :预测框包含一个目标的可能性(objectness)以及边界框的准确程度。类似于Faster R-CNN中是前景还是背景。由于有两个边框,因此会存在两个置信度预测值。
  3. 类别概率:由于YOLOv1使用的PASCAL VOC数据集一共有20个物体类别,因此这里预测的是边框属于哪一个类别。

注:一个cell预测的两个边界框共用一个类别预测, 在训练时会选取与标签IoU更大的一个边框负责回归该真实物体框,在测试时会选取置信度更高的一个边框,另一个会被舍弃,因此整张图最多检测出49个物体。

四、损失函数的组成和计算

YOLO使用预测值和真实值之间的误差平方的求和(MSE)来计算损失。 损失函数包括坐标预测损失(localization loss),置信度预测损失(confidence loss),类别预测损失(classification loss)。公式示意图如下:
在这里插入图片描述

坐标预测损失:对S×S个网格以及每个网格的B个预测框进行求和,分别对两部分:坐标中心误差和位置长宽的误差进行求和。注意对长宽的求和使用的平方根的方法,原因是对不同大小的bounding box预测中,对于小bounding box的预测更加敏感,因此将bounding box的w和h取平方根代替原本的w和h。式中的 λ c o o r d {\lambda _{coord}} λcoord为坐标损失的权重系数,在PASCAL VOC数据集训练中取5。

置信度预测损失:置信度是针对预测框bounding box的,由于每个网格有两个bounding box,所以每个网格会有两个置信度与之相对应。置信度损失分为两部分,含有object和不含有object。若预测框内含有object,则置信度为1,反之置信度则为0。对没有物体的预测框的置信度损失,赋予小的损失权重(loss weight) λ n o o b j {\lambda _{noobj}} λnoobj,在PASCAL VOC数据集训练中 λ n o o b j {\lambda _{noobj}} λnoobj取0.5。对于含有object的预测框,权重为1。

五、YOLOv1的优缺点分析

优点:
  1. YOLO检测速度非常快。标准版本的YOLO可以每秒处理 45 张图像;YOLO的极速版本每秒可以处理150帧图像。
  2. YOLO 实时检测的平均精度是其他实时监测系统的两倍。
缺点:
  1. 每个网格只有两个预测框,且可选择的长宽比较为单一,当物体的长宽比不常见(也就是训练数据集覆盖不到时),效果较差。
  2. 因为YOLOv1的输入图片只划分为7x7的网格,所以当两个物体靠的很近或者群体检测时,效果比较差。
  3. 因为每个网格只对应一个类别的检测,容易出现漏检现象(object没有被识别到),并且无法解决物体重叠时的问题。

引用参考:
1.https://blog.csdn.net/wjinjie/article/details/107509243
2.https://blog.csdn.net/frighting_ing/article/details/123450918

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值