YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制)

这篇具有很好参考价值的文章主要介绍了YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🎈🎈🎈YOLO 系列教程 总目录

YOLOV1整体解读
YOLOV2整体解读文章来源地址https://www.toymoban.com/news/detail-709402.html

YOLOV1提出论文:You Only Look Once: Unified, Real-Time Object Detection

1、物体检测经典方法

  • two-stage(两阶段):Faster-rcnn Mask-Rcnn系列
  • one-stage(单阶段):YOLO系列
YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制),yolo物体检测系列,cnn,深度学习,YOLO,物体检测,计算机视觉YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制),yolo物体检测系列,cnn,深度学习,YOLO,物体检测,计算机视觉
  • 最核心的优势:速度非常快,适合做实时检测任务!
  • 但是缺点也是有的,效果通常情况下不会太好!

2、机器学习分类任务评价指标

机器学习 分类任务 评价指标

3、YOLOV1简介

  • 经典的物体检测算法
  • You Only Look Once,名字就已经说明了一切
  • 把检测问题转化为回归问题,一个CNN就搞定了
  • 可以对视频进行检测,应用领域非常广

只需要一个起始位置坐标,加上长和宽,即(x,y,w,h),就能把一个物体框出来了,这就是转化为回归问题

YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制),yolo物体检测系列,cnn,深度学习,YOLO,物体检测,计算机视觉

YOLO算法,在当时15、16年等了很久,因为Faster R-CNN精度高,但是太慢了,速度在当时比精度更重要

4、YOLOV1预测流程

YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制),yolo物体检测系列,cnn,深度学习,YOLO,物体检测,计算机视觉
  1. 把图像分词S*S个格子
  2. 遍历每个格子,如果哪一个物体的中心点落在了这个格子,那么这个格子就负责预测这个物体
  3. 得到了若干个格子,遍历每一个格子
  4. 根据当前的格子都生成两个候选框,找出一个接近的框
  5. 现在有了一个这个物体的位置,需要调整框的长宽来得到最终结果
  6. 在调整的过程中会得到很多个候选框,每个候选框都会得到一个confidence值(即置信度,这个置信度表示了当前框住的部分是否是一个我们需要检测的物体)
  7. 置信度低的框会被过滤掉(因为目标格子可能会有多个,但是不一定都符合)

总结

首先输入就是一个S*S个格子,每一个格子都产生两个候选框,产生两个候选框进行微调,但是不是所有候选框都进行微调,需要切实有物体的,什么时候有物体,通过执行度来判断

5、整体网络架构

YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制),yolo物体检测系列,cnn,深度学习,YOLO,物体检测,计算机视觉

输入图像是一个448*448,是一个固定值(这个固定值并不意味着只能检测固定大小的东西,这个固定值是通过openCV的resize到固定值得到,里面的物体会进行缩放,最后的框会映射到一个完整的原始图像中),这个固定值也导致了一些问题,在v1版本中有一定的局限性

  1. 输入数据(448,448,3)
  2. 经过20层修改的GoogLeNet,得到(14,14,1024)
  3. 经过2次Conv+relu,得到(14,14,1024)
  4. 经过2次Conv+relu,得到(7,7,1024)
  5. 一次拉平操作+FC+relu,得到(4096,1)
  6. 一次全连接(1470,1)
  7. reshape(7,7,30)
  8. 生成检测

YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制),yolo物体检测系列,cnn,深度学习,YOLO,物体检测,计算机视觉

在网络的最后得到一个(7,7,30)的特征图,这个特征图表示的意义:77表示前面提到的SS个grid格子,在7*7的格子中,每一个格子都有30个值,每一个格子都要预测出30个值。

30个值的意义:

  • 7*7个格子分别对应 B 1 B_1 B1 B 2 B_2 B2两个框,比如 B 1 B_1 B1框,对应了4个值 ( x 1 , y 1 , w 1 , b 1 ) (x_1,y_1,w_1,b_1) x1y1w1b1就可以表示成一个唯一的框,但是这里的 x 1 和 y 1 x_1和y_1 x1y1不是一个具体的坐标值,是经过归一化后得到的一个在0到1之间的相对值
  • 因此 B 2 B_2 B2框,也对应了4个值 ( x 2 , y 2 , w 2 , b 2 ) (x_2,y_2,w_2,b_2) x2y2w2b2
  • 此外每一个框,是不是有框住了物体呢?有一个置信度C值。
  • 因此 B 1 B_1 B1框,对应5个值 ( x 1 , y 1 , w 1 , b 1 , C 1 ) (x_1,y_1,w_1,b_1,C_1) x1y1w1b1C1 B 2 B_2 B2框,对应了5个值 ( x 2 , y 2 , w 2 , b 2 , C 2 ) (x_2,y_2,w_2,b_2,C_2) x2y2w2b2C2
  • 在前面提到了一共有30个值,前10个对应了这10个值,后面的20个值,则是对应了20分类,也就是对应了20个类别的概率值。

了解了30个值的意义,就了解了(7,7,30),就基本懂了yolo-v1了

6、损失函数计算公式

YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制),yolo物体检测系列,cnn,深度学习,YOLO,物体检测,计算机视觉

6.1 每个数字的意义

前面我们已经解释了每个数字的意义

  • 10 = (X,Y,W,H,C)* 2
  • 当前数据集有20个类别
  • 7*7代表最终网格的大小
  • SS(B*5+C)

6.2 坐标回归误差(中心点定位)

位置损失计算的是(X,Y,W,H)这4个值和真实值之间的误差
前面我们仔细解释了各项参数的含义,下面陆续给出整个损失计算公式,首先是位置损失,位置损失又包含两部分,分别是坐标和长宽,不是一个具体的坐标值,是经过归一化后得到的一个在0到1之间的相对值
λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j [ ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 ] λ_{coord}\sum_{i=0}^{S^2}\sum_{j=0}^{B}1^{obj}_{ij}[(x_i-\hat{x}_i)^2+(y_i-\hat{y}_i)^2] λcoordi=0S2j=0B1ijobj[(xix^i)2+(yiy^i)2]

  1. λ c o o r d λ_{coord} λcoord=5:超参数,坐标损失的权重
  2. ∑ i = 0 S 2 \sum_{i=0}^{S^2} i=0S2:遍历所有的grid cell格子
  3. ∑ j = 0 B \sum_{j=0}^{B} j=0B:遍历所有的bounding box候选框
  4. 指示函数 1 i j o b j 1^{obj}_{ij} 1ijobj:挑选负责检测物体的bbox
  5. ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 (x_i-\hat{x}_i)^2+(y_i-\hat{y}_i)^2 (xix^i)2+(yiy^i)2:中心点定位 预测值标签值 的差的平方和

6.3 坐标回归误差(长宽定位)

+ λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j [ ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] +λ_{coord}\sum_{i=0}^{S^2}\sum_{j=0}^{B}1^{obj}_{ij}[(\sqrt{w_i}-\sqrt{\hat{w}_i})^2+(\sqrt{h_i}-\sqrt{\hat{h}_i})^2] +λcoordi=0S2j=0B1ijobj[(wi w^i )2+(hi h^i )2]

  1. λ c o o r d λ_{coord} λcoord=5:超参数,坐标损失的权重
  2. ∑ i = 0 S 2 \sum_{i=0}^{S^2} i=0S2:遍历所有的grid cell格子
  3. ∑ j = 0 B \sum_{j=0}^{B} j=0B:遍历所有的bounding box候选框
  4. 指示函数 1 i j o b j 1^{obj}_{ij} 1ijobj:挑选负责检测物体的bbox
  5. ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 (\sqrt{w_i}-\sqrt{\hat{w}_i})^2+(\sqrt{h_i}-\sqrt{\hat{h}_i})^2 (wi w^i )2+(hi h^i )2 :宽高定位 预测值标签值 算术平方根的差的平方和

求根号能使小框对误差更敏感

6.4 置信度回归误差(含有object)

主要是判断当前预测的是前景还是背景,含有object物体即为前景
∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j ( C i − C ^ i ) 2 \sum_{i=0}^{S^2}\sum_{j=0}^{B}1^{obj}_{ij}(C_i-\hat{C}_i)^2 i=0S2j=0B1ijobj(CiC^i)2

  1. ∑ i = 0 S 2 \sum_{i=0}^{S^2} i=0S2:遍历所有的grid cell格子
  2. ∑ j = 0 B \sum_{j=0}^{B} j=0B:遍历所有的bounding box候选框
  3. 指示函数 1 i j o b j 1^{obj}_{ij} 1ijobj:挑选负责检测物体的bbox
  4. ( C i − C ^ i ) 2 : (C_i-\hat{C}_i)^2: (CiC^i)2 预测值标签值差的平方和
  5. C i C_i Ci :从模型正向推断结果为SS(B*5+C)维向量找到这个bbox的confidence score
  6. C ^ i \hat{C}_i C^i :计算这个bbox与ground truth的IOU

6.5 置信度回归误差(不含有object)

λ n o o b j ∑ i = 0 S 2 ∑ j = 0 B 1 i j n o o b j ( C i − C ^ i ) 2 λ_{noobj}\sum_{i=0}^{S^2}\sum_{j=0}^{B}1^{noobj}_{ij}(C_i-\hat{C}_i)^2 λnoobji=0S2j=0B1ijnoobj(CiC^i)2

  1. λ n o o b j = 0.5 λ_{noobj}=0.5 λnoobj=0.5:超参数,非目标置信度损失的权重
  2. ∑ i = 0 S 2 \sum_{i=0}^{S^2} i=0S2:遍历所有的grid cell格子
  3. ∑ j = 0 B \sum_{j=0}^{B} j=0B:遍历所有的bounding box候选框
  4. 指示函数 1 i j n o o b j 1^{noobj}_{ij} 1ijnoobj:挑选不负责检测物体的bbox
  5. ( C i − C ^ i ) 2 (C_i-\hat{C}_i)^2 (CiC^i)2预测值标签值差的平方和

6.6 分类误差

∑ i = 0 S 2 1 i o b j ∑ C ∈ c l a s s e s ( p i ( C ) − p ^ i ( c ) ) 2 \sum_{i=0}^{S^2}1^{obj}_{i}\sum_{C∈classes}(p_i(C)-\hat{p}_i(c))^2 i=0S21iobjCclasses(pi(C)p^i(c))2

  1. ∑ i = 0 S 2 \sum_{i=0}^{S^2} i=0S2:遍历所有的grid cell格子
  2. 1 i o b j 1^{obj}_{i} 1iobj:挑选不负责检测物体的bbox
  3. ∑ C ∈ c l a s s e s \sum_{C∈classes} Cclasses:遍历所有类别

7、指示函数

前面的误差计算公式提到了三个指示函数:

7.1 第1个 1 i o b j 1^{obj}_{i} 1iobj​

1 i o b j = { 1 , 如果第  i  个网格单元包含目标。 0 , 否则。 1^{obj}_{i} = \begin{cases} 1, & \text{如果第 } i \text{ 个网格单元包含目标。} \\ 0, & \text{否则。} \end{cases} 1iobj={1,0,如果第 i 个网格单元包含目标。否则。

1 i o b j 1^{obj}_{i} 1iobj:第i个grid cell是否包含物体,也即是否有groud truth框的中心点落在grid cell中,若有则为1,否则为0

7.2 第2个 1 i j o b j 1^{obj}_{ij} 1ijobj​

1 i j o b j = { 1 , 如果第  i  个网格单元中的第  j  个边界框预测到了目标。 0 , 否则。 1^{obj}_{ij} = \begin{cases} 1, & \text{如果第 } i \text{ 个网格单元中的第 } j \text{ 个边界框预测到了目标。} \\ 0, & \text{否则。} \end{cases} 1ijobj={1,0,如果第 i 个网格单元中的第 j 个边界框预测到了目标。否则。
1 i j n o o b j 1^{noobj}_{ij} 1ijnoobj:第i个grid cell的第j个bounding box若负责预测物体则为1,否则为0

7.3 第3个 1 i j n o o b j 1^{noobj}_{ij} 1ijnoobj​

1 i j n o o b j = { 1 , 如果第  i  个网格单元中的第  j  个边界框没有预测到目标。 0 , 否则。 1^{noobj}_{ij} = \begin{cases} 1, & \text{如果第 } i \text{ 个网格单元中的第 } j \text{ 个边界框没有预测到目标。} \\ 0, & \text{否则。} \end{cases} 1ijnoobj={1,0,如果第 i 个网格单元中的第 j 个边界框没有预测到目标。否则。
1 i j n o o b j 1^{noobj}_{ij} 1ijnoobj:第i个grid cell的第j个bounding box若不负责预测物体则为1,否则为0

  • 1 i j o b j 1^{obj}_{ij} 1ijobj为1, 1 i o b j 1^{obj}_{i} 1iobj也必为1
  • 1 i j o b j 1^{obj}_{ij} 1ijobj为1, 1 i j n o o b j 1^{noobj}_{ij} 1ijnoobj必为0

8、NMS(非极大值抑制)

YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制),yolo物体检测系列,cnn,深度学习,YOLO,物体检测,计算机视觉

置信度是可以设置的,设置的较大的时候则比较严格,可能出现有些物体没有被检测,较小的时候可能一个物体出现多个预选框。
但是有时候就算设置较大的置信度,还是出现了多个预选框,我们可以进行非极大值抑制操作,对预选框的置信度进行排序,最终只选取较大的预选框。

YOLOV1到这里内容就全部都结束了,那YOLOV1有哪些问题呢?

  1. 小物体检测效果不好:当前一个grid cell只预测一个类别,当有两个物体高度重合在一起的时候,比如一只狗的旁边还有一只猫,那可能只能检测出狗。
  2. 多标签预测效果不好:这里介绍的是20分类,实际任务可以设置更多或者更少的分类,假设标签中有狗这个类别,还有斑点狗,还有哈士奇之类的,可能一个物体对应了两个标签,既是狗又是哈士奇,softmax可能无法拿到多个标签

那么YOLOV2做了哪些改进呢?

YOLOV1整体解读
YOLOV2整体解读

到了这里,关于YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 目标检测——YOLO系列学习(一)YOLOv1

    YOLO可以说是单阶段的目标检测方法的集大成之作,必学的经典论文,从准备面试的角度来学习一下yolo系列。 RCNN系列,无论哪种算法,核心思路都是 Region Proposal(定位)+ classifier(修正定位+分类) 。所以也被称为两阶段算法。但是难以达到实时检测的效果,因此yolov1将其修

    2024年04月25日
    浏览(39)
  • 【目标检测系列】YOLOV1解读

    从R-CNN到Fast-RCNN,之前的目标检测工作都是分成两阶段,先提供位置信息在进行目标分类,精度很高但无法满足实时检测的要求。 而YoLo将目标检测看作回归问题,输入为一张图片,输出为S*S*(5*B+C)的三维向量。该向量结果既包含位置信息,又包含类别信息。可通过损失函数,

    2024年02月13日
    浏览(40)
  • 经典目标检测YOLO系列(一)YOLOV1的复现(1)总体架构

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

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

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

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

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

    2024年02月10日
    浏览(68)
  • 【目标检测——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日
    浏览(44)
  • 目标检测YOLO算法,先从yolov1开始

    有一套配套的学习资料,才能让我们的学习事半功倍。 yolov1论文原址:You Only Look Once: Unified, Real-Time Object Detection 代码地址:darknet: Convolutional Neural Networks (github.com) one-stage(单阶段):YOLO系列 最核心的优势:速度非常快,适合做实时检测任务! 但是缺点也是有的,效果通常

    2024年02月09日
    浏览(45)
  • 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日
    浏览(43)
  • YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍 !!

    文章目录 前言 一、YOLO算法的核心思想 1. YOLO系列算法的步骤 2. Backbone、Neck和Head 二、YOLO系列的算法 1. YOLOv1(2016) 1.1 模型介绍 1.2 网络结构 1.3 实现细节 1.4 性能表现 2. YOLOv2(2016) 2.1 改进部分 2.2 网络结构 2.3 性能表现 3. YOLOv3 (2018) 3.1 模型介绍 3.2 网络结构 3.3 改进部分

    2024年04月10日
    浏览(55)
  • 从YOLOv1到YOLOv8的YOLO系列最新综述【2023年4月】

    作者: Juan R. Terven 、 Diana M. Cordova-Esparaza 摘要: YOLO已经成为 机器人 、 无人驾驶汽车 和 视频监控应用 的核心实时物体检测系统。我们对YOLO的演变进行了全面的分析,研究了从最初的YOLO到YOLOv8每次迭代的创新和贡献。我们首先描述了标准指标和后处理;然后,我们讨论了

    2024年02月04日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包