yolov1详解

这篇具有很好参考价值的文章主要介绍了yolov1详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

YOLOv1

YOLOv1是单阶段目标检测方法,不需要像Faster RCNN这种两阶段目标检测方法一样,需要生成先验框。Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测。

yolov1详解

整个YOLO目标检测pipeline如上图所示:首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。相比R-CNN系列算法,其是一个统一的框架,其速度更快,而且Yolo的训练过程也是end-to-end的。

具体来说,YOLO将全图划分为 S × S S×S S×S的格子, 每个格子负责对落入其中的目标进行检测,一次性预测所有格子所含目标的边界框、置信度、以及所有类别概率向量。

论文思想

  1. 将一幅图像分成SxS个网格,如果某个object的中心落在这个网格中,则这个网络就负责预测这个object
  2. 每个网格要预测B个bounding box,每个bounding box,除了要预测位置之外,还要附带预测一个confidence值。每个网格还要预测c个类别的分数

网格单元(Grid Cell)

YOLO将目标检测问题作为回归问题。会将输入图像分成 S × S S \times S S×S的网格(cell),如果一个物体的中心点落入到一个cell中,那么该cell就要负责预测该物体,一个格子只能预测一个物体,会生成两个预测框。

对于每个网格单元cell:

  • YOLOv1会预测两个边界框
  • 每个边界框包含5个元素: ( x , y , w , h ) (x,y,w,h) (x,y,w,h) 和 边界框的置信度得分(box confidence score)
  • 只负责预测一个目标
  • 预测 C C C 个条件概率类别(conditional class probabilities)

yolov1详解

为了评估PASCAL VOC,YOLO V1使用 7×7 的网格(S×S),每个单元格回归2个边界框 和 20个条件类别概率。条件类别概率 (conditional class probability) 是检测到的目标属于特定类别的概率(每个单元对每个类别有一个概率)。

最终的预测特征由边框的位置、边框的置信度得分以及类别概率组成,这三者的含义如下:

  • 边框位置:对每一个边框需要预测其中心坐标及宽、高这4个量, 两个边框共计8个预测值
    • 边界框宽度w和高度h用图像宽度和高度归一化。因此 x , y , w , h x, y, w, h x,y,w,h 都在0和1之间。 x x x y y y 是相应单元格的偏移量。
  • 置信度得分(box confidence score) c :框包含一个目标的可能性(objectness)以及边界框的准确程度。类似于Faster RCNN 中是前景还是背景。由于有两个边框,因此会存在两个置信度预测值。
  • 类别概率:由于PASCAL VOC数据集一共有20个物体类别,因此这里预测的是边框属于哪一个类别。

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

网络结构

yolov1详解

YOLO输入图像的尺寸为 448 × 448 448 \times 448 448×448,经过24个卷积层,2个全连接的层(FC),最后在reshape操作,输出的特征图大小为 7 × 7 × 30 7 \times 7 \times 30 7×7×30

  • YOLO主要是建立一个CNN网络生成预测 7 × 7 × 1024 7 \times 7 \times 1024 7×7×1024 的张量,
  • 然后使用两个全连接层执行线性回归,以进行 7 × 7 × 2 7 \times 7 \times 2 7×7×2 边界框预测。将具有高置信度得分(大于0.25)的结果作为最终预测。
  • 3 × 3 3 \times 3 3×3的卷积后通常会接一个通道数更低 1 × 1 1 \times 1 1×1的卷积,这种方式既降低了计算量,同时也提升了模型的非线性能力。
  • 除了最后一层使用了线性激活函数外,其余层的激活函数为 Leaky ReLU ;
  • 在训练中使用了 Dropout 与数据增强的方法来防止过拟合。
  • 对于最后一个卷积层,它输出一个形状为 (7, 7, 1024) 的张量。 然后张量展开。使用2个全连接的层作为一种线性回归的形式,它输出 个参数,然后重新塑形为 (7, 7, 30) 。

yolov1详解

损失函数

YOLO V1每个网格单元能够预测多个边界框。为了计算true positive的损失,只希望其中一个框负责该目标,为此选择与GT具有最高IOU的那个框

  • YOLO正样本选择
    • 当一个真实物体的中心点落在了某个cell内时,该cell就负责检测该物体。
    • 具体做法是将与该真实物体有最大IoU的边框设为正样本, 这个区域的类别真值为该真实物体的类别,该边框的置信度真值为1。
  • YOLO负样本选择
    • 除了上述被赋予正样本的边框,其余边框都为负样本。负样本没有类别损失与边框位置损失,只有置信度损失,其真值为0。

YOLO使用预测值和GT之间的误差平方的求和(MSE)来计算损失。 损失函数包括

  • localization loss -> 坐标损失(预测边界框与GT之间的误差)
  • classification loss -> 分类损失
  • confidence loss -> 置信度损失(框里有无目标, objectness of the box)

yolov1详解

坐标损失

坐标损失也分为两部分,坐标中心误差和位置宽高的误差,其中 1 i j o b j \mathbb{1}^{obj}_{ij} 1ijobj 表示第i个网格中的第j个预测框是否负责obj这个物体的预测,只有当某个预测框对某个物体负责的时候,才会对box的coordinate error进行惩罚,而对哪个物体负责就看其预测值和GT box的IoU是不是在那个网格的所有box中最大。

我们可以看到,对于中心点的损失直接用了均方误差,但是对于宽高为什么用了平方根呢?这里是这样的,我们先来看下图:
yolov1详解
上图中,蓝色为bounding box,红色框为真实标注,如果W和h没有平方根的话,那么bounding box跟两个真实标注的位置loss是相同的。但是从面积看来B框是A框的25倍,C框是B框的81/25倍。B框跟A框的大小偏差更大,所以不应该有相同的loss。

如果W和h加上平方根,那么B对A的位置loss约为3.06,B对C的位置loss约为1.17,B对A的位置loss的值更大,这更加符合我们的实际判断。所以,算法对位置损失中的宽高损失加上了平方根。
而公式中的 λ c o o r d \lambda_{coord} λcoord 为位置损失的权重系数,在pascal VOC训练中取5。

置信度损失

置信度也分成了两部分,一部分是包含物体时置信度的损失,一个是不包含物体时置信度的值。

其中前一项表示有无人工标记的物体落入网格内,如果有,则为1,否则为0.第二项代表预测框bounding box和真实标记的box之间的IoU。值越大则box越接近真实位置。

confidence是针对预测框bounding box的,由于每个网格有两个bounding box,所以每个网格会有两个confidence与之相对应。

从损失函数上看,当网格i中的第j个预测框包含物体的时候,用上面的置信度损失,而不包含物体的时候,用下面的损失函数。对没有物体的预测框的置信度损失,赋予小的loss weight, 记为在pascal VOC训练中 λ n o o b j \lambda_{noobj} λnoobj取0.5。有有物体的预测框的置信度损失和类别的loss的loss weight正常取1。

类别损失

类别损失这里也用了均方误差。其中 1 i o b j \mathbb{1}^{obj}_{i} 1iobj 表示有无物体的中心点落到网格i中,如果网格中包含有物体object的中心的话,那么就负责预测该object的概率。

YOLOv1的缺点
由于YOLOV1的框架设计,该网络存在以下缺点:文章来源地址https://www.toymoban.com/news/detail-464573.html

  • 每个网格只对应两个bounding box,当物体的长宽比不常见(也就是训练数据集覆盖不到时),效果较差。
  • 原始图片只划分为7x7的网格,当两个物体靠的很近时,效果比较差。
  • 最终每个网格只对应一个类别,容易出现漏检(物体没有被识别到)。
  • 对于图片中比较小的物体,效果比较差。这其实是所有目标检测算法的通病。

到了这里,关于yolov1详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 经典目标检测YOLO系列(一)YOLOV1的复现(1)总体架构

    实现原版的YOLOv1并没有多大的意义,因此,根据 《YOLO目标检测》(ISBN:9787115627094) 一书,在不脱离YOLOv1的大部分核心理念的前提下,重构一款较新的YOLOv1检测器,来对YOLOV1有更加深刻的认识。 书中源码连接:GitHub - yjh0410/RT-ODLab: YOLO Tutorial 对比原始YOLOV1网络,主要改进点如下:

    2024年02月03日
    浏览(49)
  • 浅析目标检测入门算法:YOLOv1,SSD,YOLOv2,YOLOv3,CenterNet,EfficientDet,YOLOv4

    本文致力于让读者对以下这些模型的创新点和设计思想有一个大体的认识,从而知晓YOLOv1到YOLOv4的发展源流和历史演进,进而对目标检测技术有更为宏观和深入的认知。本文讲解的模型包括:YOLOv1,SSD,YOLOv2,YOLOv3,CenterNet,EfficientDet,YOLOv4。         候选区域         和R-CNN最

    2024年02月07日
    浏览(50)
  • 目标检测——Yolo系列(YOLOv1/2/v3/4/5/x/6/7/8)

    什么是目标检测? 滑动窗口(Sliding Window) 滑动窗口的效率问题和改进 滑动窗口的效率问题:计算成本很大 改进思路 1:使用启发式算法替换暴力遍历 例如 R-CNN,Fast R-CNN 中使用 Selective Search 产生提议框 ( 区域提议 ) 依赖外部算法,系统实现复杂,难以联合优化性能 改进

    2024年02月09日
    浏览(41)
  • 人工智能学习07--pytorch21--目标检测:YOLO系列理论合集(YOLOv1~v3)

    如果直接看yolov3论文的话,会发现有好多知识点没见过,所以跟着视频从头学一下。 学习up主霹雳吧啦Wz大佬的学习方法: 想学某个网络的代码时: 到网上搜这个网络的讲解 → 对这个网络大概有了印象 → 读论文原文 ( 很多细节都要依照原论文来实现, 自己看原论文十分

    2024年02月10日
    浏览(73)
  • 深度学习||YOLO(You Only Look Once)深度学习的实时目标检测算法(YOLOv1~YOLOv5)

    目录 YOLOv1: YOLOv2: YOLOv3: YOLOv4: YOLOv5: 总结: YOLO(You Only Look Once)是一系列基于深度学习的实时目标检测算法。 自从2015年首次被提出以来,YOLO系列不断发展,推出了多个版本,包括YOLOv1, YOLOv2, YOLOv3, YOLOv4, 和YOLOv5等。下面是对YOLO系列的详解: 提出时间 : 2015年。 主要贡献 :

    2024年02月20日
    浏览(58)
  • 【目标检测——YOLO系列】YOLOv1 —《You Only Look Once: Unified, Real-Time Object Detection》

    论文地址:1506.02640] You Only Look Once: Unified, Real-Time Object Detection (arxiv.org) 代码地址:pjreddie/darknet: Convolutional Neural Networks (github.com) YOLOv1是一种end to end目标检测算法,由Joseph Redmon等人于2015年提出。它是一种基于单个神经网络的实时目标检测算法。 YOLOv1的中文名称是\\\"你只看一

    2024年02月08日
    浏览(48)
  • yolov1详解

    YOLOv1是单阶段目标检测方法,不需要像Faster RCNN这种两阶段目标检测方法一样,需要生成先验框。Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测。 整个YOLO目标检测pipeline如上图所示:首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目

    2024年02月06日
    浏览(40)
  • YOLO学习笔记(2):YOLOV1算法详解

    SAY YOU ONLY LOOK ONCE AGAIN!!! SAY YOU ONLY LOOK ONCE AGAIN!!! SAY YOU ONLY LOOK ONCE AGAIN!!! 本文章主要参考up主同济子豪兄的视频的基础上整理的笔记,建议读者务必观看原视频,受益匪浅 注:在文章中大量使用,所以注解较为全面,可以在阅读文章前只大致浏览,在正文部分不断回顾

    2024年04月22日
    浏览(39)
  • 三万字硬核详解:yolov1、yolov2、yolov3、yolov4、yolov5、yolov7

    mAP是综合衡量Precision与Recall的一种指标值,理论上mAP的最优值=1。 举例理解:在所有预测图片中, 取某一个类别的P-R曲线图 P-R曲线图 :以Recall为横轴,Precision为纵轴,并将Precision [0, 1] 范围内的每个点对应recall的值连接起来形成一条折线。 如左图的蓝色曲线 曲线特点:随着

    2023年04月15日
    浏览(60)
  • YOLO系列概述(yolov1至yolov7)

    参考: 睿智的目标检测53——Pytorch搭建YoloX目标检测平台 YoloV7 首先我们来看一下yolo系列的发展历史,yolo v1和yolox是anchor free的方法,yolov2,yolov3,一直到yolov7是anchor base的方法。首选我们来回顾下每个版本的yolo都做了些什么 yolo v1是将 416 ∗ 416 416*416 4 1 6 ∗ 4 1 6 的图片,分

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包