【YOLOv8】Yolov5和Yolov8网络结构的分析与对比
目录
一 YOLOv5
二 YOLOv8
yolo通常采用backbone-neck-head的网络结构。
- Backbone 主要负责从输入图像中提取高层次的语义特征,常包含多个卷积层和池化层,构建了一个深层次的特征提取器。
- Neck通常用来进一步整合与调整backbone提取的特征,有利于将不同层次的特征融合进而提升网络对目标的感知能力。
- Head通常包括边界框回归层(用于预测目标的位置)和分类层(用于预测目标的类别)。进行最终的回归预测。
一 YOLOv5
YOLOv5有s、m、l、x四个版本,模型的结构基本一样,不同的是depth_multiple模型深度和width_multiple模型宽度这两个参数。
1 YOLOv5的网络结构
主要结构图如下所示:
① Input
YOLOv5在输入端Input采用了Mosaic进行数据增强。
采用Mosaic数据增强的优点:
- 随机使用4张图像,随机缩放后随机拼接,增加很多小目标,丰富数据集。
- 随机拼接的方式让一张图像可以计算四张图像的数据,减少每个batch的数量,即使只有一个GPU,也能得到较好的结果(减少GPU数量)。
- 通过对识别物体的裁剪,使模型根据局部特征识别物体,有助于被遮挡物体的检测,从而提升了模型的检测能力。
② Backbone
Conv卷积层由卷积,Batch Normalization和SiLu激活层组成。其中,BN(batch normalization)具有防止过拟合,加速收敛的作用。BN层的输入为一个batch的特征图,它将每个通道上的特征进行均值和方差的计算,并对每个通道上的特征进行标准化处理。标准化后的特征再通过一个可学习的仿射变换(拉伸和偏移)进行还原,从而得到BN层的输出。激活函数用于给神经网络引入非线性变换能力。综上所述,Conv模块是常用的基础模块,它通过卷积操作提取局部空间信息,并通过BN层规范化特征值分布,最后通过激活函数引入非线性变换能力,从而实现对输入特征的转换和提取。
k:卷积核大小;S:步长;P:padding填充;C:Channels通道数。
C3模块的作用是增加网络的深度和感受野,从不同维度去提取特征并融合,提高特征提取的能力。
SPP(Spatial Pyramid Pooling),空间金字塔池化模块其主要思想是将不同大小的感受野应用于同一张图像,从而能够捕捉到不同尺度的特征信息。在SPP模块中,首先对输入特征图进行不同大小的池化操作,以得到一组不同大小的特征图。然后将这些特征图连接Concat在一起,并通过全连接层进行降维,最终得到固定大小的特征向量。综上所述,SPP的作用是将不同尺度的特征进行融合,通过对特征图进行金字塔划分和池化操作,将多尺度特征整合到一个固定长度的特征向量中。
SPP模块的具体可参考下图,仅便于理解,不要纠结于数字哈!
与SPP相比,SPPF模块的池化操作由并联变为串联,且池化区域大小不变。后面两次池化是在上一次的基础上进行的。
③ Neck
特征金字塔是一种用于处理多尺度目标检测的技术。在Neck部分,yolov5主要采用了PANet结构。
FPN通过自顶向下(Top-down)的结构,将深层的语义信息传递到浅层,但是浅层的位置信息却无法影响到深层特征。PANet在FPN(feature pyramid network)上提取网络内特征层次结构,在FPN的基础上又引入了一个自底向上(Bottom-up)的路径。经过自顶向下(Top-down)的特征融合后,再进行自底向上(Bottom-up)的特征融合,这样底层的位置信息也能够传递到深层,从而增强多个尺度上的定位能力。
其中自底向上(Bottom-up)的过程是沿着N 2 → N 3 → N 4 → N 5 的路径,逐个stage通过卷积进行2倍下采样,然后与FPN中相应大小的feature map进行相加融合(在YOLOv5中采用的是拼接融合)。
④ Head
YOLOv5的Head对Neck中得到的不同尺度的特征图分别通过1×1卷积将通道数扩展,扩展后的特征通道数为:(类别数量+5)×每个检测层上的anchor数量。
5对应的是预测框的中心点横坐标、纵坐标、宽度、高度和置信度。Head中的3个检测层分别对应Neck中得到的3种不同尺寸的特征图。
二 YOLOv8
Yolov8提供了N/S/M/L/X不同尺度的模型,以满足不同部署平台和应用场景的需求。
YOLOV8的改进内容如下:
- Backbone:同样借鉴了CSP模块思想,但是将Yolov5中的C3模块替换成了C2f模块,实现了进一步轻量化,同时沿用Yolov5中的SPPF模块,并对不同尺度的模型进行精心微调,不再是无脑式一套参数用于所有模型,大幅提升了模型性能。
- Neck:继续使用PAN的思想,但是删除了上采样阶段的卷积结构,同时将C3模块替换为C2f模块。
- Head:相比YOLOv5改动较大,Yolov8换成了目前主流的解耦头结构(Decoupled-Head),将分类和检测头分离。从Anchor-Based换成了Anchor-Free思想(anchor-free和anchor-based是两种不同的目标检测方法,区别在于是否使用预定义的anchor框来匹配真实的目标框)。
- Loss计算:使用VFL Loss作为分类损失(实际训练中使用BCE Loss);使用DFL Loss+CIOU Loss作为回归损失。
- 标签分配:Yolov8抛弃了以往的IoU分配或者单边比例的方式,而是采用Task-Aligned Assigner分配方式。
1 YOLOV8的网络结构
主要结构图如下所示:
YOLOv5和YOLOv8配置文件参数对比:
YOLOv5 | YOLOv8 |
| |
① Backbone
V8同样借鉴了CSPDarkNet结构网络结构,但是将Yolov5中的C3模块替换成了C2f模块,实现了进一步轻量化,同时沿用Yolov5中的SPPF模块。
具体改进为:
- 第一个卷积层的卷积核大小(Kernel size)从6×6改为3x3。
- 所有的C3模块改为C2f模块(多了更多的跳层连接和额外Split操作)。
C3 | C2f |
![]() | ![]() |
- Block数由C3模块3-6-9-3改为C2f模块的3-6-6-3。
YOLOv5和YOLOv8的Backbone对比:
YOLOv5 | YOLOv8 |
![]() | ![]() |
② Neck
Neck部分起到的作用是特征提取和特征融合,YOLOv8采用的是PAN-FPN的思想。
获取Neck产物的过程参考下图:
Layer4、Layer6、Layer9作为PANet(PANet是一个双向通路网络,引入了自下向上的路径,使得底层信息更容易传递到顶层)结构的输入,经过上采样,通道融合,最终将PANet的三个输出分支送入到Detect head中进行Loss的计算或结果解析。
③ Head
YOLOv8直接将耦合头改为类似Yolox的解耦头结构(Decoupled-Head),将回归分支和预测分支分离。
YOLOv5和YOLOv8的Head图对比:
YOLOv5和YOLOv8的配置文件Head对比:
YOLOv5 | YOLOv8 |
![]() | ![]() |
④ Loss
Loss计算过程包括两部分:正负样本分配策略和Loss计算(分类和回归分支)。
常见的正负样本分配策略包括动态分配策略和静态分配策略两种。
- 静态分配策略是指在训练开始之前,固定为一组预先定义的权重,这些权重不会在训练过程中改变。
- 动态分配策略则可以根据训练的进展和样本的特点动态调整权重,使之可以更加关注那些容易被错分的样本。动态分配策略可以根据训练损失或者其他指标来进行调整,可以更好地适应不同的数据集和模型。
YOLOv5采用的是静态分配策略,考虑到动态分配策略的优异性,Yolov8算法中直接引用了TOOD中的Task-Aligned Assigner(对齐分配器)正负样本分配策略。
分类得分和 IoU表示了这两个任务的预测效果,所以,TaskAligned使用分类得分和IoU的高阶组合来衡量Task-Alignment的程度。
s 和 u 分别为分类得分和 IoU 值,α 和 β 为权重超参。从上边的公式可以看出来,t 可以同时控制分类得分和IoU 的优化来实现 Task-Alignment,可以引导网络动态的关注于高质量的Anchor。
LOSS计算
分类损失:Yolov8团队应该是对VFL Loss和BCE Loss都尝试过,但最终发现使用VFL和使用普通的BCE效果相当,优势不明显,故采用了简单的BCE Loss。
回归损失:CIou_Loss + Distribution Focal Loss
其中,CIou_Loss用于计算预测框与目标框之间的IoU。
通常,对于遮挡、模糊场景下目标框的边界存在一定的不确定性,常规的回归方式不能解决这种不确定问题。
DFL将边界表示成一种分布,解决边界不明确的问题。
相关文章:

【YOLOv8】Yolov5和Yolov8网络结构的分析与对比
目录 一 YOLOv5 二 YOLOv8 yolo通常采用backbone-neck-head的网络结构。 Backbone 主要负责从输入图像中提取高层次的语义特征,常包含多个卷积层和池化层,构建了一个深层次的特征提取器。Neck通常用来进一步整合与调整backbone提取的特征,有利于将不同…...

无人机低空数字摄影测量系统
一、 系统概述 系统完全基于IDL设计实现,包括界面布局到人机交互再到底层核心函数功能。整体设计框架基于数字摄影测量的专业处理流程,实现了数据输入、数据预处理、影像信息检测、空间定向、地形三维建模、专题信息提取、成果输出与更新等功能。同时为…...

Disk Drill Enterprise for Mac v5.5.1515数据恢复软件中文版
Disk Drill 是 Mac 操作系统固有的Mac数据恢复软件:使用 Recovery Vault 轻松保护文件免遭意外删除,并从 Mac 磁盘恢复丢失的数据。支持大多数存储设备,文件类型和文件系统。 软件下载:Disk Drill Enterprise for Mac v5.5.1515激…...

day55 最长递增子序列 最长连续递增子序列 最长重复子数组
题目1 300 最长递增子序列 题目链接 300 最长递增子序列 题意 找到整数数组nums的最长严格递增子序列的长度(子序列并不改变原始的顺序,但是可以删除元素) 动态规划 动规五部曲 1)dp数组及下标i的含义 dp[i] 表示以nums[i…...

使用Springboot配置生产者、消费者RabbitMQ?
生产者服务 1、引入依赖以及配置rabbitmq 此时我们通过使用springboot来快速搭建一个生产者服务 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> applica…...
代码随想录算法训练营第46天|139.单词拆分、多重背包问题
139.单词拆分 题目链接:单词拆分 题目描述:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 **注意:**不要求字典中出现的单词全部都使用,并且字典中的单词…...

数组与伪数组的区别
大家都知道,在js中使用 document.querySelectorAll(选择器)获取到的为该选择器能选择到的所有元素组成的伪数组,所谓伪数组,就是外表和数组一样,能够使用索引遍历,但本质是对象。 数组与伪数组之间的区别&…...

Java集合List
List特有方法 经典多态写法 // 经典的多态写法 List<String> list new ArrayList<>();常用API:增删改查 // 添加元素 list.add("Java"); // 添加元素到指定位置 list.add(0, "Python");// 获取元素 String s list.get(0);// 修改…...
elasticsearch基础命令
1 字段分词分析: GET /store_info_data/_analyze {"field": "storeName","text":"20pilapala0" }2 精确查找,去除评分 GET /store_info_data/_search {"query": {"constant_score": {"filter": {&quo…...

Capture One 23 Enterprise for Mac中文版 全面的图像处理工具
Capture One 23 Enterprise for Mac中文版一款专业的图像编辑和管理软件,具备强大的功能和工具,适用于摄影师、摄影工作室和专业用户。 软件下载:Capture One 23 Enterprise for Mac中文版下载 该软件为用户提供了全面的图像处理工具…...

Qt案例 通过调用Setupapi.h库实现对设备管理器中设备默认驱动的备份
参考腾讯电脑管家-软件市场中的驱动备份专家写的一个驱动备份软件案例,学习Setupapi.h库中的函数使用.通过Setupapi.h库读取设备管理器中安装的设备获取安装的驱动列表,通过bit7z库备份驱动目录下的所有文件. 目录导读 实现效果相关内容示例获取SP_DRVIN…...
如何理解JVM
JVM(Java虚拟机)是Java程序的运行环境,它是Java技术的核心组成部分之一。理解JVM涉及到以下几个方面的内容: 1. **虚拟机概念**:虚拟机是一种软件实体,它在物理计算机上模拟出一个计算机系统,使…...

第十四讲:C语言字符函数和字符串函数
目录 1. 字符分类函数 2、字符转换函数 3. strlen的使⽤和模拟实现 4. strcpy 的使⽤和模拟实现 5. strcat 的使⽤和模拟实现 6. strcmp 的使⽤和模拟实现 7. strncpy 函数的使⽤ 8. strncat 函数的使⽤ 9. strncmp函数的使⽤ 10. strstr 的使⽤和模拟实现 11. strt…...

华为海思2024春招数字芯片岗机试题(共9套)
huawei海思2024春招数字芯片岗机试题(共9套,有答案和解析,答案非官方,未仔细校正,仅供参考)(WX:didadidadidida313,加我备注:CSDN huawei数字题目,谢绝白嫖哈)…...

分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测
分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测 目录 分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述…...

与机器对话:ChatGPT 和 AI 语言模型的奇妙故事
原文:Talking to Machines: The Fascinating Story of ChatGPT and AI Language Models 译者:飞龙 协议:CC BY-NC-SA 4.0 从 ELIZA 到 ChatGPT:会话式人工智能的简史 会话式人工智能是人工智能(AI)的一个分…...

概率论基础——拉格朗日乘数法
概率论基础——拉格朗日乘数法 概率论是机器学习和优化领域的重要基础之一,而拉格朗日乘数法与KKT条件是解决优化问题中约束条件的重要工具。本文将简单介绍拉格朗日乘数法的基本概念、应用以及如何用Python实现算法。 1. 基本概念 拉格朗日乘数法是一种用来求解…...
[xboard]real6410-6.2 移植kernel网络驱动
文章目录 硬件电路软件配置问题1问题2问题3问题4功能测试硬件电路 核心板,使用DM9000A [图片] 软件配置 问题1 / # / # ifconfig ifconfig: /proc/net/dev: No such file or directory ifconfig: socket: Fun...
Quarkus初探
Quarkus初探 背景安装Quarkus安装Quarkus CLI 创建Quarkus项目运行Quarkus初探代码修改一下代码 数据持久化创建PanacheEntiry写入数据读取数据 Dev Service使用外部数据库区分dev和prod 构建native应用(依赖Graalvm) 背景 最早是在Infoq上了解到Quarku…...

90天玩转Python-02-基础知识篇:初识Python与PyCharm
90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装&…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...

Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...

[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...