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

ops/2024/10/24 7:14:01/

文章目录

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

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.ppmy.cn/ops/128034.html

相关文章

社区团购在一线城市的新机遇:定制开发小程序助力用户细分

摘要:本文深入探讨社区团购在一线城市的发展现状与挑战,强调通过对用户的精准细分而非品类细分来挖掘市场潜力。引入“定制开发 AI 智能名片 21 链动模式 S2B2C 商城小程序”这一创新元素,详细阐述其在社区团购用户细分及平台活力提升方面的重…

基于SpringBoot+Vue+uniapp的C语言在线评测系统的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

【zlm】 webrtc源码讲解(二)

目录 webrtc播放 MultiMediaSourceMuxer里的_ring webrtc播放 > MediaServer.exe!mediakit::WebRtcPlayer::onStartWebRTC() 行 60 CMediaServer.exe!mediakit::WebRtcTransport::OnDtlsTransportConnected(const RTC::DtlsTransport * dtlsTransport, RTC::SrtpSession::…

php后端学习,Java转php

遇到前后端跨域 php解决跨域问题可以加上下面的代码: header(“Access-Control-Allow-Origin:*”); 并且查看自己的数据库信息是否连接成功。 从Java转php 个人感受php跟偏向前端, 写后端逻辑时没有像java又springboot工具方便。 但是和前端联调很方便…

大数据面试题整理——Zookeeper

系列文章目录 大数据面试题专栏点击进入 文章目录 系列文章目录大数据面试题专栏点击进入 1. 什么是 Zookeeper?2. Zookeeper 的特点有哪些?3. Zookeeper 的数据模型是怎样的?4. Zookeeper 的工作流程是怎样的?5. Zookeeper 如何…

241023-RHEL非管理员安装Docker并开放指定宿主机端口部署Gitlab

A. RHEL非管理员安装Docker 要在没有管理员权限的情况下离线安装 Docker 和 Docker Compose,虽然受到一定限制,仍有一些可行的步骤可以帮助你在有限权限下完成这项任务。需要注意的是,这种方式适用于本地用户环境下的 Docker 安装&#xff0…

完美白嫖解决dlib、face_recognize、opencv等无法安装或安装失败问题

前言 由于windows电脑的特性,发现很多人本机安装人脸识别相关 模块非常麻烦,有的可能需要安装cuda等显卡驱动,各种问题,折磨的生不如死 今天找到了一种免费白嫖云端的方案没有需要的小伙伴可以自取。 原理 本方案是免费使用抖音…

基于 Konva 实现Web PPT 编辑器(三)

完善公式 上一节我们简单讲述了公式的使用,并没有给出完整的样例,下面还是完善下相关步骤,我们是默认支持公式的编辑功能的哈,因此,我们只需要提供必要的符号即可: 符号所表达的含义是 mathlive 的command命…