开山之作 | YOLOv1算法超详细解析(包括诞生背景+论文解析+技术原理等)

news2024/11/17 13:53:09

前言:Hello大家好,我是小哥谈。目标检测是计算机视觉领域的一项重要研究方向,它在许多应用领域中都得到了广泛应用,如人脸识别、物体识别、自动驾驶、视频监控等。在过去,目标检测方法主要采用基于RCNN、Fast R-CNN等深度学习算法,这些方法虽然精度较高,但需要耗费很长时间进行计算,因此无法实现实时处理。而在2015年,Joseph Redmon等人设计了一种新的深度学习算法YOLO,这种算法具有处理速度快、准确性高的特点,被广泛应用于目标检测领域。本节课就给大家重点介绍下YOLO系列算法的开山之作—YOLOv1,希望大家学习之后能够有所收获!🌈 

      目录

🚀1.什么是目标检测?

🚀2.YOLOv1算法的诞生背景

🚀3.YOLOv1论文

🚀4.YOLOv1技术原理

💥💥4.1 网络结构

💥💥4.2 实现方法

💥💥4.3 训练策略

 🚀5.YOLOv1性能评价

🚀1.什么是目标检测?

目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。

如今,目标检测的研究方法主要包括两大类:

  1. 基于传统图像处理和机器学习算法的目标检测与识别方法
  2. 基于深度学习的目标检测与识别方法

针对这两种目标检测方法,下面进行详细介绍。

🍀(1)基于传统图像处理和机器学习算法的目标检测与识别方法

传统的目标检测与识别方法主要可以表示为:目标特征提取 -> 目标识别 -> 目标定位。这里所用到的特征都是人为设计的,主要包括:

  • SIFT (尺度不变特征变换匹配算法,Scale Invariant Feature Transform);
  • HOG(方向梯度直方图特征,Histogram of Oriented Gradient);
  • SURF( 加速稳健特征,Speeded Up Robust Features)。

通过这些特征对目标进行识别,然后再结合相应的策略对目标进行定位。

🍀(2)基于深度学习的目标检测与识别方法

如今,基于深度学习的目标检测与识别方法已经成为主流方法,主要可以表示为:图像的深度特征提取 -> 基于深度神经网络的目标识别与定位,其中主要用到的深度神经网络模型是卷积神经网络CNN。目前可以将现有的基于深度学习的目标检测与识别算法大致分为以下三大类:

  • 基于区域建议的目标检测与识别算法,如R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN等;
  • 基于回归的目标检测与识别算法,如YOLO、SSD;
  • 基于搜索的目标检测与识别算法,如基于视觉注意的AttentionNet,基于强化学习的算法等。

🚀2.YOLOv1算法的诞生背景

YOLOv1算法是在2016年发表的,由Joseph Redmon等人开发,其全称为You Only Look Once version 1。它的特点是将目标检测问题转化为一个回归问题,通过一个神经网络直接预测出目标的类别和位置信息。相比于传统的目标检测算法,YOLOv1具有速度快、精度高等优点。 YOLOv1算法的诞生背景是由于传统的目标检测算法在实时性和准确性上存在矛盾。传统的目标检测算法需要在图像中进行多次滑动窗口操作,计算量大,导致实时性较差。而YOLOv1算法采用了全卷积神经网络,将目标检测任务转化为一个回归问题,大大减少了计算量,提高了实时性。此外,YOLOv1算法还采用了多尺度训练多尺度预测等技术,进一步提高了检测准确率。

❓❓YOLOv1算法相比于传统目标检测算法有哪些优势和劣势?

YOLOv1相比于传统目标检测算法的优势主要有两点:

  1. YOLOv1的检测速度非常快,可以达到实时检测的要求,这是因为YOLOv1采用了单个神经网络同时预测多个物体的位置和类别,避免了传统算法中的候选区域生成和特征提取等耗时的步骤。
  2. YOLOv1的检测精度相对较高,尤其是在小目标检测方面表现优异,这是因为YOLOv1采用了整张图像的全局信息进行物体检测,避免了传统算法中因为局部信息不足而导致的漏检和误检。

但是,YOLOv1也存在一些劣势:

  1. YOLOv1对于小目标的检测效果不如传统算法,这是因为YOLOv1采用了较大的输入图像尺寸和较粗的特征图,导致小目标的特征难以被有效提取。
  2. YOLOv1在物体定位方面存在一定的误差,这是因为YOLOv1采用了较粗的特征图进行物体位置预测,导致物体位置的精度不高。

🚀3.YOLOv1论文

YOLOv1算法论文的题目是《 You Only Look Once: Unified, Real-Time Object Detection》,由 Joseph Redmon、Santosh Divvala、Ross Girshick和 Ali Farhadi 四位作者于2016年提出。该论文提出了一种基于单个神经网络的实时目标检测算法,可以在一张图片中同时检测出多个不同类别的物体,并且速度非常快。该算法的核心思想是将目标检测问题转化为一个回归问题,通过一个神经网络直接输出物体的类别、位置和大小等信息。

说明:♨️♨️♨️

论文题目:《You Only Look Once: Unified, Real-Time Object Detection》

论文地址:  https://arxiv.org/abs/1506.02640

说明:♨️♨️♨️

关于YOLOv1论文的详细解析,请参考文章:

开山之作 | YOLOv1论文介绍及翻译(纯中文版)


🚀4.YOLOv1技术原理

💥💥4.1 网络结构

YOLOv1网络借鉴了GoogLeNet分类网络结构,不同的是YOLOv1使用1x1卷积层3x3卷积层替代inception module。如下图所示,整个检测网络包括24个卷积层和2个全连接层。其中,卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率值。👇

现在看来,YOLOv1的网路结构非常明晰,是一种传统的one-stage的卷积神经网络:

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

💥💥4.2 实现方法

YOLOv1采用的是“分而治之”的策略,将一张图片平均分成7×7个网格,每个网格分别负责预测中心点落在该网格内的目标。回忆一下,在Faster R-CNN中,是通过一个RPN来获得目标的感兴趣区域,这种方法精度高,但是需要额外再训练一个RPN网络,这无疑增加了训练的负担。在YOLOv1中,通过划分得到了7×7个网格,这49个网格就相当于是目标的感兴趣区域。通过这种方式,我们就不需要再额外设计一个RPN网络,这正是YOLOv1作为单阶段网络的简单快捷之处!🔖

具体实现过程如下:👇

  • 将一幅图像分成 S×S个网格(grid cell),如果某个 object 的中心落在这个网格中,则这个网格就负责预测这个object。
  • 每个网格要预测 B 个bounding box,每个 bounding box 要预测 (x, y, w, h) 和 confidence 共5个值。
  • 每个网格还要预测一个类别信息,记为 C 个类。
  • 总的来说,S×S 个网格,每个网格要预测 B个bounding box ,还要预测 C 个类。网络输出就是一个 S × S × (5×B+C) 的张量。在实际过程中,YOLOv1把一张图片划分为了7×7个网格,并且每个网格预测2个Box(Box1和Box2),20个类别。所以实际上,S=7,B=2,C=20。那么网络输出的shape也就是:7×7×30。

说明:♨️♨️♨️

1. 由于输出层为全连接层,因此在检测时,YOLOv1训练模型只支持与训练图像相同的输入分辨率(可以通过reshape的方法把你的照片压缩或扩张成YOLO要求的尺寸)。

2. 虽然每个格子可以预测B个bounding box,但是最终只选择只选择IoU最高的bounding box作为物体检测输出,即每个格子最多只预测出一个物体。

💥💥4.3 训练策略

YOLOv1的训练策略主要包括以下几个方面:👇

  1. 数据集准备:YOLOv1使用PASCAL VOC数据集进行训练,数据集中包含20个类别的物体,每个物体都有对应的边界框和标签信息。

  2. 模型设计:YOLOv1采用单个卷积神经网络同时预测物体类别和边界框信息,输出一个S*S(B*5+C)的张量,其中S表示特征图的大小,B表示每个格子预测的边界框数量,C表示物体类别数。

  3. 损失函数:YOLOv1使用均方误差作为损失函数,同时考虑物体类别预测误差和边界框预测误差。

  4. 训练过程:YOLOv1采用随机梯度下降算法进行训练,每次随机选择一张图片进行训练,采用多尺度训练和数据增强技术提高模型的泛化能力。


 🚀5.YOLOv1性能评价

YOLOv1是一种基于单阶段检测器的目标检测算法,其主要特点是速度快,但精度相对较低。下面是YOLOv1的性能评价:

  1. 精度:在PASCAL VOC 2012数据集上,YOLOv1的mAP为63.4%,相比于当时的其他目标检测算法,如Faster R-CNN和SSD,精度较低。
  2. 速度:YOLOv1的速度非常快,可以达到45帧/秒的实时检测速度。
  3. 目标类别数:YOLOv1最多支持20个目标类别的检测。

综上所述,YOLOv1适用于对实时性要求较高,但对精度要求相对较低的场景,如视频监控等。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1084005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件工程与计算总结(九)软件体系结构基础

目录 ​编辑 一.体系结构的发展 二.理解体系结构 1.定义 2.区分体系结构的抽象与实现 3.部件 4.连接件 5.配置 三.体系结构风格初步 1.主程序/子程序 2.面向对象式 3.分层 4.MVC 一.体系结构的发展 小规模编程的重点在于模块内部的程序结构非常依赖于程序设计语言…

学网络安全的过程 ,差点要了我的命

我真的好像感慨一下,这个世界真的给计算机应届生留活路了吗? 看着周围的同学,打算搞前端、JAVA、C、C的,一个两个去跑去应聘。你以为是00后整治职场? 真相是主打一个卑微:现阶段以学习为主(工资…

在Linux中掌握不同的命令,让创建文件变得易如反掌

在Linux中创建一个新文件很简单,但也有一些令人惊讶和灵巧的技术。​在本教程中,学习如何从Linux终端创建文件。​ 先决条件 访问命令行/终端窗口(Ctrl-Alt-F2或Ctrl-Alt-T) 具有sudo权限的用户帐户(对于某些文件/目录是可选的) 从命令行创建新的Linux文件 Linux的设计…

TXT文件恢复,简单3招,快速恢复文件!

“由于工作需要,我的电脑中保存了很多的TXT文件,但是在清内存时,我不小心删除了一些比较重要的文件,请问有什么方法可以恢复吗?” TXT文件是一种普通的文本文件格式,它包含了纯文本信息,没有任何…

股票价格预测 | Python基于RNN及股票预测实战

循环神经网络(RNN)是基于序列数据(如语言、语音、时间序列)的递归性质而设计的,是一种反馈类型的神经网络,其结构包含环和自重复,因此被称为“循环”。它专门用于处理序列数据,如逐字生成文本或预测时间序列数据(例如股票价格)。 (1)one to one:其实和全连接神经网络…

Pycharm 2023 设置远程调试

pycharm 版本 : 2023.2.1 整体流程参考:https://blog.csdn.net/xuanhaolaile/article/details/128293254 首先确定远程服务器上已经安装好 requirements.txt 中所需的依赖包。 1、SSH Configurations 添加远程服务器 2、Python Interpreter 注意&…

别再使用循环的方式筛选元素了!开发常用的Stream流+Lambda表达式过滤元素了解过吗?10000字超详细解析

目录 1. Stream 流的简单展示 1.1 抛出问题 1.2 传统解决问题的编码方式 1.3 Stream 流的方式过滤元素 2. Stream 流的核心思想 3. Stream 流的使用 3.1 获取 stream 流 3.1.1 单列集合获取 stream 流 3.1.2 双列集合获取 stream 流 3.1.3 数组获取 stream 流 3.1.4…

AD20统一修改相同元器件的名称和标号的方法

如图所示,我们原理图中有很多开关,比如说名字乱七八遭,想要整体快速修改应该怎么办呢? 解决方法:把鼠标指针放到原理图的空白处单击鼠标右键 点击查找相似对象之后鼠标变成了一个十字状,用十字状中心点击要…

凉鞋的 Godot 笔记 108. 第二个通识:增删改查

在这一篇,我们来学习此教程的第二个通识,即:增删改查。 增删改查我们不只是一次接触到了。 在最先接触的场景窗口中,我们是对 Node 进行增删改查。 在文件系统窗口中,我们是对文件&文件夹进行增删改查&#xff1…

Linux工具-远程登录/访问

测试环境:ubuntu 20.04 一、ssh服务 SSH(Secure Shell Protocol,安全的壳程序协议,基于tcp协议默认使用22端口),它可以通过数据包加密技术将待传输的数据包加密后再传输到网络上。通过ssh协议/服务&#…

ros之乌龟做圆周运动and订阅乌龟的位姿信息

一 .基于乌龟显示节点,通过话题发布,编码实现控制小乌龟做圆周运动 打开终端1,进入工作空间 ros_ws cd ros_ws启动节点(ros服务器) roscore新开终端2,启动乌龟节点(turtlesim ) rosrun turtlesim turtl…

企业数字化营销策略如何制定?企业开展数字化营销有的关键步骤?

​制定数字化营销策略是建立数字化营销体系的关键步骤,想要建立好的数字化营销策划,需要企业明确目标客户群体,通过了解他们的需求和行为,来制定相应的营销策略。例如,通过数据分析手段,企业可以确定目标客…

#JavaScript教程:循环遍历@FDDLC

一、普通的for循环(当然还有while循环和do while循环) 二、for of 遍历 三、for in 遍历 四、forEach 五、map方法 六、reduce方法 输出:543 七、filter方法 八、some方法

TensorFlow入门(二十三、退化学习率)

学习率 学习率,控制着模型的学习进度。模型训练过程中,如果学习率的值设置得比较大,训练速度会提升,但训练结果的精度不够,损失值容易爆炸;如果学习率的值设置得比较小,精度得到了提升,但训练过程会耗费太多的时间,收敛速度慢,同时也容易出现过拟合的情况。 退化学习率 退化学…

mysql误删误操作恢复数据,比传统方式和binlog2sql更快速用的恢复方式-reverse_sql恢复数据(单表多表)

场景: 误操作删除了某个表的数据,本文只讲工具的使用,首先自己通过mysqlbinlog或者记录找到误操作的时间范围:开始时间和结束时间,已经确定好是哪个binlog了下面以误删为例。 查看binlog是否开启 show variables like …

2023影视源接口分享 影视仓配置接口大全 TVBox接口地址源 订阅源地址大全

如今有着大量以TVBox为原版开发出的影视TV软件,这软件软件盒子本身不能观看影视,但是能够通过添加影视源的方式畅看影视,并且这些影视源能够在这款类型的软件中共用,非常的方便,今天小编将为用户提供丰富的影视源和直播…

本地部署Element-Plus开发文档

访问Element-Plus文档官网的时候,时不时会很卡,直接卡死 https://element-plus.gitee.io/zh-CN/ 有点影响 CV 大法的施展,看了一下又是 gitee.io ,而且开源的项目,找到文档搞下来本地部署就不用担心卡不卡的问题了 文章…

UGUI不规则响应区域(例如多个按钮重叠,避免点击错误)

1、UI的默认响应区域是UI元素所在的矩形框线内的区域。这也就意味着,当UI的图形为不规则形状时,点击图形的外部也可能会触发事件。 2、但其实Unity自带了一种不规则区域点击策略。要想使用它,我们首先要将精灵的「Read/Write」属性设置为开启…

【LeetCode75】第七十一题 搜索推荐系统

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 给我们一个产品数组,以及一个字符串,我们模拟依次输入字符串中的每一个字符,要求返回与对应的输入字符…

Python皮卡丘

系列文章 序号文章目录直达链接1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.csdn.net/article/details/1295031234漂浮爱心https://want…