学习系列一:YOLO系列目标检测框架之间介绍及对比

news2024/9/22 1:34:27

YOLO系列目标检测框架之间介绍及对比

华为HCIP AI高级工程师证书, 华为HCIA AI证书,目前从事视觉算法工作


文章目录

  • YOLO系列目标检测框架之间介绍及对比
  • 前言
  • 一、YOLOv1
  • 二、YOLOv2
  • 三、YOLOv3
  • 四、YOLOv4
  • 五、YOLOv5及后续算法


前言

YOLO系列算法

YOLO 创新性地通过单次网络运行实现目标检测,之前的方法要么使用滑动窗口,要么使用分类器,每个图像需要运行数百次或数千次,从而造成模型计算量大和实时性更低。更先进的方法则将任务分为两步,首先识别含有物体或候选框可能存在的区域,随后对这些候选框进行分类。与之不同 YOLO 采用了一种更为直观的方法,仅通过回归分析来直接预测检测结果,巧妙地平衡了实时性与准确性的需求,大幅提升了目标检测领域的效率和效果。


一、YOLOv1

YOLOv1 算法引入网格划分机制,输入的图像被划分为一个 7×7 的单元网格,当检测到物体的中心落在某个网格的中心时,这个网格就会负责预测这个物体。对于每一个单元网格,都会预先生成两个边界框,而且只预测一个目标,每个边界框包含边界框坐标信息和置信度得分,最终的预测特征由边框的位置、边框的置信度得分以及类别概率组成。作为一阶段目标检测算法的代表,YOLO 利用其特有的网格分割预测策略机制,成功地跳过了传统候选区域生成的计算步骤,大大减少了算法的复杂性,并显著加快了检测的速度。
在这里插入图片描述

二、YOLOv2

在确保检测速度不变的前提下,针对 YOLOv1 算法存在的问题,YOLOv2 算法进行了若干优化和完善。首先,YOLOv2 算法在所有的卷积层上进行了批量归一化处理,这一方法不仅提高了模型的收敛性,还减少了对其他正则化形式的依赖。接下来,YOLOv2 算法采用了更高分辨率的图像来对模型进行预先的训练,从而增强了网络在高分辨率输入条件下的表现,同时通过融合卷积操作与先验框策略来进行边界框及其分类的预测,这不仅加快了数据处理和预测流程,而且还通过提高特征图的分辨能力,为后续的分类运算奠定了坚实的基础。这种方法有效地增强了算法对于目标特征的捕捉能力,从而提供了更准确、更细腻的预测结果。
经过改进后,其优势变得尤为明显,通过对 YOLOv2 每一个卷积层都做了归一化,改善了模型收敛性,使得平均精度均值提高了 2%;通过使用高分辨率图像来训练模型,来匹配模型对高分辨率图像输入的适应能力,从而使得模型的平均精度平均提升了 4%;参考了两阶段检测算法中的先验框预测边界框策略,并采用 k-means方法对训练集的边界框进行聚类,这使得模型能够独立地找到最适合的锚框尺寸,从而节约大量时间资源。YOLOv2 使用的新的分类模型被称为 Darknet19 作为骨干架构,Darknet19 整体上卷积操作比 YOLOv1 中更少,从而使计算量更少。此外,YOLOv2 还使用联合训练法,来提高
模型的泛化能力。

三、YOLOv3

针对 YOLOv2 的缺陷,YOLOv3 将当时一些较好的检测思想融入到了该版本的 YOLO系列中,在保持速度优势的前提下,进一步提升了检测精度。YOLOv3 主要做了三个方面的改进:(1)继续吸收了当时优秀的检测框架的思想,如残差网络和特征融合等,提出新的网络结构,称之为 DarkNet53,DarkNet53 借鉴残差连接的思想,在基础网络中大量使用了残差连接,并且缓解了在训练中梯度消失的问题,使得模型更容易收敛,很大程度上提高了数据表征能力。(2)采用多尺度预测,YOLOv3 巧妙地输出三种不同尺寸的特征图,依次对应于深层、中层和浅层特征的提取。深层特征图的尺寸较小但感受野更广,这使其特别适合于大尺寸物体的检测。相反,浅层特征图则具有较大的尺寸和较小的感受野,从而更加专注于小尺寸物体的检测,这种分层的方法大幅增强了模型对不同尺寸物体的检测能力。(3)Logistic 函数替代 Softmax 函数来优化类别预测得分的处理。这一变更背后的逻辑在于 Softmax 函数在输出多个类别预测时存在相互抑制的问题,导致仅能预测单一类别。相比之下,Logistic 分类器的设计保证了预测的独立性,从而使得对多个类别的同时预测成为可能,显著增强了模型的多类别识别能力。
在这里插入图片描述

四、YOLOv4

2020 年提出的 YOLOv4 算法,在一个阶段内完成特征提取、位置回归和分类识别的任务,实现了检测的实时性与高精度的完美平衡。YOLOv4 改善了骨干网络结构,引入了专为解决特征图冗余问题设计的 CSPDarknet53 网络。这一网络结构深刻认识到,不同通道的特征图中往往蕴含相似的信息,通过对这些冗余信息的精细优化处理,极大提升了算法的处理效率与性能表现。进一步地,YOLOv4 在继承其前代技术基础上进行了深度优化,将 DarkNet53 中的 LeakyReLU激活函数替换为更为先进的 Mish激活函数。同时,通过引进 Dropblock 技术,该算法随机丢弃部分神经元,既简化了网络架构,也提高了模型的泛化能力。在网络的“Neck”部分,YOLOv4 采纳了包含 SPP 模块和路径聚合网络(Path Aggregation Network, PAN)结构的创新性改进,其中 SPP 模块通过最大池化技术对特征图执行深层次卷积,扩大了特征的感受范围;而 PAN 结构通过有效的特征融合策略,显著增强了模型的精确度。在输入端,YOLOv4 通过 Mosaic 数据增强技术的巧妙运用,随机组合四张图片,这不仅极大地丰富了训练数据集,同时也显著减少了 YOLOv4 算法对GPU 资源的过度依赖,从而进一步优化了算法的性能。
在这里插入图片描述

五、YOLOv5及后续算法

YOLOv5 的网络架构融合了当时最新的目标检测技术思想,旨在进一步提升模型的训练效率和检测准确度。
在这里插入图片描述

在此基础上,YOLOv6 和 YOLOv7 通过借鉴参数结构化策略来优化网络架构,在保持较好的多尺度特征融合能力的同时,也能保持网络架构高效的推理。而 YOLOv8则在保持 YOLOv5 基本架构的前提下,在 Backbone 中将 YOLOv5 的 C3 模型结构进行梯度流的优化,换成了梯度流更加丰富的 C2f 结构,并对不同尺度模型的通道数进行了不同的调整,加强网络的特征提取和推理速度优化,以实现
性能的进一步提升。在 Head 部分采用解耦头的设计,将分类与检测任务进行分离,同时锚框也从 Anchor based 换成了 Anchor free。相比较 YOLOv5 而言,YOLOv8 属于对模型结构精心微调,不再是像 YOLOv6 和 YOLOv7 那样把一套新的参数应用所有模型,YOLOv8 大幅提升了模型性能,不过YOLOv8 的 C2f 模块中的 Split 操作对特定硬件进行部署不如 YOLOv5 模型结构更加友好。对 YOLOv1-YOLOv8 算法架构、算法框架、是否锚框和公共数据集上取得性能报告进行对比。
在这里插入图片描述

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

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

相关文章

《0基础》学习Python——第十七讲__正则表达式(requests)

一、什么是正则表 正则表达式是一种用于匹配和操作字符串的强大工具。它可以用于检索、替换和验证字符串。正则表达式使用特定的语法来描述字符串的模式,然后用于查找符合该模式的字符串。 在Python中,可以使用re模块来使用正则表达式。re模块提供了一组…

启动流程和切换流程

启动流程 #mermaid-svg-iUWGw8xl1SyAmoo9 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-iUWGw8xl1SyAmoo9 .error-icon{fill:#552222;}#mermaid-svg-iUWGw8xl1SyAmoo9 .error-text{fill:#552222;stroke:#552222;}#…

3D培训大师创新培训体验,加速空调关键组件的高效精准安装

如今,空调系统的复杂性和精密性与日俱增,对专业技术人员的要求也日益提高。尤其是决定空调是否能平稳运行的空调关键组件的装配培训,不再局限于传统的理论讲解和实体模型演示,而是更注重数字化、沉浸式学习。 案例背景 某空调公…

代码随想录算法训练营Day26 | 491.递增子序列 | 46.全排列 | 47.全排列 II | 332.重新安排行程 | 51.N皇后 | 37.解数独

今日任务 491.递增子序列 题目链接&#xff1a; https://leetcode.cn/problems/non-decreasing-subsequences/description/题目描述&#xff1a; Code class Solution { public:vector<vector<int>> findSubsequences(vector<int>& nums) {vector&l…

[PM]数据分析

概览 数据的定义 运营数据 分析的目的 数据分析流程 1.明确目标 2.数据来源 3.采集数据 4.数据整理 5.数据分析 趋势分析 当数据出现异常&#xff0c;一般从3个角度去查找问题&#xff1a; 1.技术层面&#xff0c;是不统计出错&#xff0c;或者产品出现bug 工 2.产品层面&am…

haproxy服务介绍

haproxy 搭建使用开启HAProxy的界面UI配置负载均衡配置web代理 HAProxy&#xff08;High Availability Proxy&#xff09;是一个高性能的TCP/HTTP负载均衡器和代理服务器&#xff0c;广泛用于提升Web应用的可用性和性能。[官网说明](https://docs.haproxy.org/2.8/intro.html#3…

羊大师:户外狂欢羊奶滋养,年轻人的活力养生新潮流

在这个快节奏的时代&#xff0c;年轻人正以他们独有的方式&#xff0c;重新定义着健康与养生的概念。他们深知&#xff0c;气血不足不应是青春的代名词&#xff0c;而应是活力四射的前奏。于是&#xff0c;一群年轻人以“发癫式”打卡的创意方式&#xff0c;将户外活动的乐趣推…

[保姆级教程]uniapp安装使用uViewUI教程

文章目录 创建 UniApp 项目下载uView UI下载安装方式步骤 1: 安装 uView UI步骤 2: 查看uView UI是否下载成功步骤 3: 引入 uView 主 JS 库步骤 4: 引入 uView 的全局 SCSS 主题文件步骤 5: 引入 uView 基础样式步骤 6: 配置 easycom 组件模式注意事项 NPM方式步骤 1: 安装 uVi…

跟代码执行流程,读Megatron源码(二)训练入口pretrain_gpt.py

Megatron-LM默认支持GPT、T5、BERT等多个常见模型的预训练&#xff0c;当下大模型流行&#xff0c;故以pretrain_gpt.py为例做源码的走读。 一. 启动pretrain_gpt.py pretrain_gpt.py为GPT类模型的训练入口&#xff0c;它通过命令行形式被调用&#xff0c;其精确执行路径位于M…

n7.Nginx 第三方模块

Nginx 第三方模块 第三模块是对nginx 的功能扩展&#xff0c;第三方模块需要在编译安装Nginx 的时候使用参数–add-modulePATH指定路径添加&#xff0c;有的模块是由公司的开发人员针对业务需求定制开发的&#xff0c;有的模块是开 源爱好者开发好之后上传到github进行开源的模…

初学Linux之常见指令(上)

初学Linux之常见指令&#xff08;上&#xff09; 文章目录 初学Linux之常见指令&#xff08;上&#xff09;1. Linux下的小技巧热键man 指令 2. ls 指令3. pwd 指令4. cd 指令5. tree 指令6. touch 指令7. mkdir 指令8. rmdir 和 rm 指令9. cp 指令10. mv 指令 1. Linux下的小技…

微信小程序:vant-weapp 组件库、css 变量

vant-weapp 组件库 前往 vant-weapp 官网 npm 使用限制&#xff1a;不支持依赖于 Node.js 内置库、浏览器内置对象、C 插件 的包。 安装 vant-weapp # 通过 npm 安装 npm i vant/weapp -S --production# 通过 yarn 安装 yarn add vant/weapp --production# 安装 0.x 版本 npm i…

Hadoop3:MR程序处理小文件的优化办法(uber模式)

一、解决方案 1、在数据采集的时候&#xff0c;就将小文件或小批数据合成大文件再上传HDFS&#xff08;数据源头&#xff09; 2、Hadoop Archive&#xff08;存储方向&#xff09; 是一个高效的将小文件放入HDFS块中的文件存档工具&#xff0c;能够将多个小文件打包成一个HAR…

Git --- Branch Diverged

Git --- Branch Diverged Branch Diverged是如何形成的如何解决RebaseMerge Branch Diverged是如何形成的 尝试提交并将更改推送到 master 分支时&#xff0c;是否看到这条烦人的消息 原因是&#xff1a; 直到更改 B 之前&#xff0c;我的分支和“origin/master”完全相同。从…

通过HTML/CSS 实现各类进度条的功能。

需求&#xff1a;我们在开发中会遇到使用各式各样的进度条&#xff0c;因为当前插件里面进度条各式各样的&#xff0c;为了方便我们定制化的开发和方便修改样式&#xff0c;我们这里使用HTML和CSS样式来进行开发进度条功能。 通过本文学习我们会明白如何使用 HTML/CSS 创建各种…

Docker_一刀流_好用、好玩还方便_(持续更新)

Docker 简介一、镜像和容器的概念镜像&#xff08;Image&#xff09;容器&#xff08;Container&#xff09;镜像和容器的关系 宿主机二、Dockerfile2.1 什么是Dockerfile2.2 Dockerfile中的常见指令2.3Dockerfile实例2.4 详细扩展 三、镜像3.1 镜像的创建3.2对于镜像的一些常用…

开放原子校源行 | 湖南大学师生一行赴麒麟信安开展专业见习活动

“开放原子校源行”是开放原子开源基金会作为国家级开源公益平台发起的长期性开源教育推广公益项目。项目拟通过资助高校设立开源社团、推广开源课程、设置开源助学金、引导开源实践等方式培育开源人才&#xff0c;加快将开源文化、理念和技术融入校园&#xff0c;引导广大师生…

TCP/IP四层模型、OSI七层模型

OSI定义了网络互连的七层框架&#xff08;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层&#xff09;TCP/IP 四层模型是目前被广泛采用的一种模型&#xff0c;由以下 4 层组成&#xff1a;应用层、传输层、网络层、网络接口层 FTP&#xff08;File Transfer Pro…

Thinkphp开发文档二次整理版

基础部分 安装 环境要求 ​ *php>7.1.0 命令下载 通过Composer进行下载&#xff0c;操作步骤下载软件 phpstudy --->点击软件管理 --->安装Composer --->再点击网站 --->点击管理 --->点击Composer --->复制如下命令代码&#xff1a; ​ 稳定版&…