简述YOLOv8与YOLOv5的区别

news/2024/11/22 17:35:00/

前言

yolov7,yoloX相关论文还没细看,yolov8就出来了。太卷了!

YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本。
GitHub地址 : github.com/ultralytics/ultralytics

YOLOv8是在YOLOv5上的一次更新,故本篇文章主要对比两者区别:

目录

  • 前言
  • YOLOv5架构:
    • 架构特点:
      • 1.Backbone
      • 2.PAN/FPN
      • 3.Head
      • 4.正负样本分配策略
      • 5.Loss
    • 其他补充:Yolov5中SPP和SPPF的区别。
  • YOLOv8架构:
    • 架构特点:
      • 1.Backbone
      • 2.PAN-FPN
      • 3.Head
      • 4.正负样本分配策略
      • 5. Loss
  • 两者推理过程区别
  • coupled head 和 decoupled head 有什么差异?

YOLOv5架构:

YOLOv5架构

架构特点:

1.Backbone

CSP的思想(/梯度分流)的主要思想, 其中多为CBS和C3模块。

2.PAN/FPN

双流的FPN,其中多为CBS和C3模块。

3.Head

coupled head + Anchor-base(coupled head这一词是在YoloX提出decoupled head 与之对应,后续会讲解coupled head 和decoupled head的区别)。

4.正负样本分配策略

静态分配策略。

5.Loss

分类用BCE Loss,回归用CIOU Loss。还有一个存在物体的置信度损失(BCE Loss)。

其他补充:Yolov5中SPP和SPPF的区别。

作用/功能: 经过1×1,5×5,9×9,13×13的池化生成的特征图都是13×13的,保持原大小不变。这里作用是融合局部和整体特征。
区别: SPPF可以减少计算量,原来要3个MaxPool2d,现在只要1个MaxPool2d,有点像快速幂求解的算法思路。
详细看:https://zhuanlan.zhihu.com/p/584153158

YOLOv8架构:

YOLOv8架构

架构特点:

1.Backbone

相同:CSP的思想(/梯度分流);并且使用SPPF模块。
不同:将C3模块替换为C2f模块。

2.PAN-FPN

双流的FPN,(其中多为CBS和C3模块)。
相同:PAN的思想。
不同:删除了YOLOv5中PAN-FPN上采样的CBS 1*1,将C3模块替换为C2f模块。

3.Head

Decoupled head + Anchor-free

4.正负样本分配策略

采用了TAL(Task Alignment Learning)动态匹配。

5. Loss

相同:分类损失依然采用 BCE Loss
不同:(1).舍去物体的置信度损失;(2).回归分支loss: CIOU loss+ DFL
DFL的描述详见: https://zhuanlan.zhihu.com/p/147691786

两者推理过程区别

YOLOv8 的推理过程和 YOLOv5 几乎一样,唯一差别在于前面需要对 Distribution Focal Loss 中的积分表示 bbox 形式进行解码,变成常规的 4 维度 bbox,后续计算过程就和 YOLOv5 一样了。

coupled head 和 decoupled head 有什么差异?

参考:

https://www.cnblogs.com/chentiao/p/16420907.html

区别:
couple head 和decoulpled head区别

当使用coupled head时,网络直接输出shape (1,85,80,80);
如果使用 decoupled head,网络会分成回归分支和分类分支,最后再汇总在一起,得到shape同样为 (1,85,80,80)。
为什么用decoupled head?
如果使用coupled head,输出channel将分类任务和回归任务放在一起,这2个任务存在冲突性。(论文中说有冲突性,但是没有理解为什么存在冲突,我考虑的是从损失函数角度存在冲突)
通过实验发现替换为Decoupled Head后,不仅是模型精度上会提高,同时 网络的收敛速度也加快了,使用Decoupled Head的表达能力更好。
Couple Head和 Decoupled Head 的对比曲线如下:

Couple Head和 Decoupled Head 的对比曲线


http://www.ppmy.cn/news/823102.html

相关文章

ANSI与UTF-8区别

下文内容的精简版: 1.UTF-8是一种广泛使用的编码,而ANSI是一种过时的编码方案 2.ANSI使用单字节,而UTF-8是多字节编码方案 3.UTF-8可以表示各种各样的字符,而ANSI非常有限 4.UTF-8代码点是标准化的,而ANSI有许多不…

utf8和utf8mb4区别

摘要 刚刚在数据库插入一条信息,报了错误,字符集出错,然后给出了一连串的转义字符,经检查,是由于插入文本包含表情🙂,导致出错,将编码改为utf8mb4外不需要做其他转换就可以解决。 …

金仓数据库float4和float8区别

float 和 real 用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。 如果使用float4或者float8类型,新增后生成的浮点类型小数无法满足需求。栗子如下图 例如: 1000.345 float4—>1…

c语言char和int8,关于数组:C中uint8和char之间的转换

我有一个API,可实现对EEPROM的写操作。 这是它的声明: CYBLE_API_RESULT_T CyBle_StoreAppData (uint8 * srcBuff, const uint8 destAddr[], uint32 buffLen, uint8 isForceWrite); 当我调用此函数并将数组参数发送到已声明为uint8类型的srcBuff时,它工作得很好。 问题是,我…

Unicode 和 UTF-8 有什么区别?

1.应用场景 了解文件,字符编码相关知识. 更好地进行编程开发~ 2.学习/操作 1. 文档 Unicode 和 UTF-8 有什么区别? - 知乎 PHP Unicode编码与解码_Unicode转中文_中文转Unicode字符 linux下php中文UTF-8转换Unicode方法和注意事项 如何将文…

PNG8和PNG24的区别

页面中切图,因为需要透明,所以存为PNG8格式,图片四周全是锯齿,而且阴影也不见了,后来存为PNG24,这些问题就消失了。 去百度搜索了关于PNG8和PNG24的区别,看到下面的文章,原来PNG8要…

ARMv7和ARMv8的区别

记录一些关键的变化: 对工程师来说Armv8-A有什么新东西? Armv8-A架构引入了许多变化,可以设计出可实现的性能更高的处理器。 因为pc端逐渐对arm架构的偏爱,大的内存和寻址空间就很有必要,原始的32bit只能支持4gb内存 大的物理地址 这使处理器能够访问…

mysql8和5语句区别_【摘录】比较MySQL5 和MySQL8的区别

MySQL5与MySQL8的配置区别 首先毋庸置疑maven依赖中将版本改成与数据库对应的版本 重点: 1、druid数据源的driver-class-name配置 MySQL5: driver-class-name: com.mysql.jdbc.Driver MySQL8: driver-class-name: com.mysql.cj.jdbc.Driver 2…