深圳幻海软件技术有限公司 欢迎您!

官方正品 | Ultralytics YOLOv8算法来啦(尖端SOTA模型)

2023-02-28

🚀🚀🚀卷王之王|UltralyticsYOLOv8 算法来啦!!✨✨✨【前期回顾】🚴‍♀️1.YOLO算法创新改进系列项目汇总(入门级教程指南)2.改进YOLOv5/YOLOv7——魔改YOLOv5/YOLOv7提升检测精度(涨点必备)3.手把手教你搭建属于自己的PyQt5-YOL


🚀🚀🚀卷王之王 | Ultralytics YOLOv8 算法来啦!!✨✨✨


【前期回顾】🚴‍♀️

1.YOLO算法创新改进系列项目汇总(入门级教程指南)

2.改进YOLOv5/YOLOv7——魔改YOLOv5/YOLOv7提升检测精度(涨点必备)

3.手把手教你搭建属于自己的PyQt5-YOLOv5目标检测平台(保姆级教程)

4.YOLO算法改进之结合GradCAM可视化热力图(附详细教程)

5.人工智能前沿——玩转OpenAI聊天机器人ChatGPT(中文版)

6.美团出品 | YOLOv6 v3.0 is Coming(超越YOLOv7、v8)

一、前言简介 🎄🎈

📚 代码地址:卷王之王 | YOLOv8代码下载地址

📚 详细文档:https://v8docs.ultralytics.com/

YOLOv8 是 Ultralytics 开发的 YOLO(You Only Look Once)物体检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的SOTA模型,它建立在先前YOLO成功基础上,并引入了新功能和改进,以进一步提升性能和灵活性。它可以在大型数据集上进行训练,并且能够在各种硬件平台上运行,从CPU到GPU。

不仅如此,YOLOv8还有一个关键特性是它的可扩展性,由于其被设计成一个框架,支持所有以前YOLO的版本,使得在不同版本之间切换和比较它们的性能变得容易。

YOLOv8创新改进点:

1.Backbone。使用的依旧是CSP的思想,不过YOLOv5中的C3模块被替换成了C2f模块,实现了进一步的轻量化,同时YOLOv8依旧使用了YOLOv5等架构中使用的SPPF模块;

2.PAN-FPN。毫无疑问YOLOv8依旧使用了PAN的思想,不过通过对比YOLOv5与YOLOv8的结构图可以看到,YOLOv8将YOLOv5中PAN-FPN上采样阶段中的卷积结构删除了,同时也将C3模块替换为了C2f模块

3.Decoupled-Head。是不是嗅到了不一样的味道?是的,YOLOv8走向了Decoupled-Head;

4.Anchor-Free。YOLOv8抛弃了以往的Anchor-Base,使用了Anchor-Free的思想;

5.损失函数。YOLOv8使用VFL Loss作为分类损失,使用DFL Loss+CIOU Loss作为分类损失;

6.样本匹配。YOLOv8抛弃了以往的IOU匹配或者单边比例的分配方式,而是使用了Task-Aligned Assigner匹配方式。

🍀 下面,请小伙伴们先睹为快!👇👇👇

(一)相关实验效果

(二)模型文件代码

  1. # Ultralytics YOLO 🚀, GPL-3.0 license
  2. # Parameters
  3. nc: 80 # number of classes
  4. depth_multiple: 0.33 # scales module repeats
  5. width_multiple: 0.50 # scales convolution channels
  6. # YOLOv8.0s backbone
  7. backbone:
  8. # [from, repeats, module, args]
  9. - [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
  10. - [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
  11. - [-1, 3, C2f, [128, True]]
  12. - [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
  13. - [-1, 6, C2f, [256, True]]
  14. - [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
  15. - [-1, 6, C2f, [512, True]]
  16. - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
  17. - [-1, 3, C2f, [1024, True]]
  18. - [-1, 1, SPPF, [1024, 5]] # 9
  19. # YOLOv8.0s head
  20. head:
  21. - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  22. - [[-1, 6], 1, Concat, [1]] # cat backbone P4
  23. - [-1, 3, C2f, [512]] # 13
  24. - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  25. - [[-1, 4], 1, Concat, [1]] # cat backbone P3
  26. - [-1, 3, C2f, [256]] # 17 (P3/8-small)
  27. - [-1, 1, Conv, [256, 3, 2]]
  28. - [[-1, 12], 1, Concat, [1]] # cat head P4
  29. - [-1, 3, C2f, [512]] # 20 (P4/16-medium)
  30. - [-1, 1, Conv, [512, 3, 2]]
  31. - [[-1, 9], 1, Concat, [1]] # cat head P5
  32. - [-1, 3, C2f, [1024]] # 23 (P5/32-large)
  33. - [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)

二、创新改进模块 🎄🎈

(一)C2f模块

C2f模块对应代码:

  1. class C2f(nn.Module):
  2. # CSP Bottleneck with 2 convolutions
  3. def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion
  4. super().__init__()
  5. self.c = int(c2 * e) # hidden channels
  6. self.cv1 = Conv(c1, 2 * self.c, 1, 1)
  7. self.cv2 = Conv((2 + n) * self.c, c2, 1) # optional act=FReLU(c2)
  8. self.m = nn.ModuleList(Bottleneck(self.c, self.c, shortcut, g, k=((3, 3), (3, 3)), e=1.0) for _ in range(n))
  9. def forward(self, x):
  10. y = list(self.cv1(x).split((self.c, self.c), 1))
  11. y.extend(m(y[-1]) for m in self.m)
  12. return self.cv2(torch.cat(y, 1))

(二)SPPF

SPPF对应代码:

  1. class SPPF(nn.Module):
  2. # Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
  3. def __init__(self, c1, c2, k=5): # equivalent to SPP(k=(5, 9, 13))
  4. super().__init__()
  5. c_ = c1 // 2 # hidden channels
  6. self.cv1 = Conv(c1, c_, 1, 1)
  7. self.cv2 = Conv(c_ * 4, c2, 1, 1)
  8. self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
  9. def forward(self, x):
  10. x = self.cv1(x)
  11. with warnings.catch_warnings():
  12. warnings.simplefilter('ignore') # suppress torch 1.9.0 max_pool2d() warning
  13. y1 = self.m(x)
  14. y2 = self.m(y1)
  15. return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

(三)PAN-FPN

(四)Decoupled-Head

YOLOv8算法中使用了Decoupled-Head,具体结构如下:

相关参考链接:

YOLOv8来了!YOLOv5官方出品!

YOLOv8来啦 | 详细解读YOLOv8的改进模块!YOLOv5官方出品YOLOv8,必卷!

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览38738 人正在系统学习中
哆啦C梦
QQ名片