当前位置: 首页 > article >正文

《YOLO目标检测》—— YOLOv1 详细介绍

文章目录

    • 一、算法特点
    • 二、网络结构
    • 三、检测过程
    • 四、损失函数
    • 五、性能表现
    • 六、优缺点

YOLO v1(You Only Look Once version 1)是一种快速的目标检测算法,以下是对YOLO v1的详细介绍:

一、算法特点

  1. 端到端的网络结构:YOLO v1将目标检测视为回归任务,采用端到端的网络结构,使用一个神经网络同时预测bounding box(边界框)的位置和类别,因此速度很快。
  2. 全局信息利用:由于YOLO v1不需提取region proposal(候选区域),而是直接在整幅图像上进行检测,因此可以联系上下文信息和特征,减少将背景检测为物体的错误。
  3. 泛化能力强:YOLO v1学习到的是目标的泛化表示(generalizable representations),因此更容易应用于新的领域或输入。

二、网络结构

YOLO v1的网络结构主要由24个卷积层和2个全连接层构成。输入图像首先被resize到448x448,然后经过卷积层和池化层提取特征,最后通过全连接层输出分类和回归结果。网络的最后一层采用线性激活函数,以预测bounding box的位置(数值型)。

  • 下图为YOLOv1的网络结构图
    在这里插入图片描述

三、检测过程

  1. 图像划分:YOLO v1将输入图像划分为S×S(7×7)的网格,每个网格负责检测中心落在该网格中的物体。

    • 如下图:
      在这里插入图片描述
  2. 边界框预测:每个网格预测B个bounding boxes(边界框,v1中 B=2),以及这些边界框的置信度。置信度反映了模型对于这个网格的预测,即该网格是否含有物体,以及这个边界框的坐标预测的正确性。YOLO v1对每个边界框都有5个预测值,包括中心点的x、y坐标,宽度w、高度h,以及置信度。

  • 置信度(confidence)
    • 置信度(confidence)= Pr(Object) * IoU
    • Pr(Object)是边界框内存在对象的概率,若有对象,Pr(Object)=1,否则Pr(Object)=0
    • IoU 是真实框(ground truth)与预测框(predicted box)的交并比
      • IoU = (预测框和真实框的交集面积) / (预测框和真实框的并集面积)
    • 一般认为IoU>0.5的时候,预测框才是有价值的在这里插入图片描述
  1. 类别预测:每个网格还需要预测C(在v1中 C=20 )个类别概率值,表示该网格负责预测的边界框中的目标属于各个类别的概率。

YOLO v1网络结构中最后输出的 7×7×30 解释如下

  • 7×7 意味着7×7个网格
  • 30 表示每个网格包含30个信息,其中2个预测框,每个预测框包含5个信息(x y w h c),分别为中心点位置坐标(x,y),宽(w)高(h)以及置信度(c),剩下20个是针对数据集的20个种类的预测概率(即假设该网格负责预测物体,那么它是某个类别的概率)。

四、损失函数

  • YOLO v1的损失函数通过ground truth(真实值)和输出之间的sum-squared error(平方和误差)进行计算。
  • YOLO的损失包括三部分:位置误差,置信度误差,分类误差
  • 损失函数的设计目标是让坐标(x, y, w, h)置信度分类三个方面达到很好的平衡。为了平衡不同部分的损失,YOLO v1对不同的损失赋予了不同的权重。
  • 下面是在网上搜集到的一张别人对此模型中损失函数的笔记(本人也没有完全理解,就不做详细展开解释了)
    在这里插入图片描述

五、性能表现

  1. 检测速度:YOLO v1的检测速度非常快,在Titan X的GPU上能够达到45帧每秒(FPS),适用于实时应用。
  2. 检测精度:虽然YOLO v1的检测速度很快,但其检测精度相对较低。它容易产生物体的定位错误,并且对小物体的检测效果不好。

六、优缺点

优点

  1. 检测速度快,适用于实时应用。
  2. 能够利用全局信息进行检测,减少背景错误。
  3. 泛化能力强,容易应用于新的领域或输入。

缺点

  1. 检测精度相对较低。
  2. 容易产生物体的定位错误。
  3. 对小物体的检测效果不好。

综上所述,YOLO v1是一种快速的目标检测算法,具有端到端的网络结构全局信息利用泛化能力强等优点。但其检测精度相对较低,容易产生定位错误,并且对小物体的检测效果不好。这些特点使得YOLO v1在实时应用中有一定的优势,但在需要高精度检测的场景中可能表现不佳。


http://www.kler.cn/news/362430.html

相关文章:

  • NGINX 保护 Web 应用安全之基于 IP 地址的访问
  • Leetcode 最小路径和
  • 【Flutter】基础入门:自定义Widget
  • [数据集][目标检测]电力场景输电线路巡检检测数据集VOC+YOLO格式8667张50类别
  • LeetCode 精选 75 回顾
  • Linux系统——ssh远程连接
  • sealed class-kotlin中的封闭类
  • Flume面试整理-常见的Source类型
  • 陆金所控股第三季度财报分析:增长困局与逆势突围
  • Ascend C算子编程和C++基础 Mission Sinh算子开发-基于ModelArts平台
  • “摄像机”跟随及攻击抖动实现
  • 比XML更简洁的配置文件——yml(2min了解)
  • 重构复杂简单变量之用子类替换类型码
  • 【AIGC】AI时代降临,AI文案写作、AI绘画、AI数据处理
  • PHP编程基础
  • 使用OpenCV实现基于FisherFaces的人脸识别
  • 代码笔记:Linux系统上解压文件
  • VScode分文件编写C++报错 | 如何进行VScode分文件编写C++ | 不懂也能轻松解决版
  • vscode使用pnpm报错
  • C++大坑之——多继承(菱形继承)
  • Java的方法传参机制
  • Nvidia在Jetson NX上模型量化
  • 关于武汉芯景科技有限公司的限流开关芯片XJ6241开发指南(兼容LTC4411)
  • 学习笔记每日一题——缺失的第一个正数
  • 【原创】java+ssm+mysql计算机等级考试网系统设计与实现
  • Android compose 重建流程1