当前位置:   article > 正文

YOLOv8学习笔记

yolov8学习笔记
  • 与先前几个版本相比,YOLOv8 模型更快、更准确,同时为训练模型提供统一框架,以执行以下基本任务:

  • YOLOv8 的主要具有以下特点:

  • 对用户友好的 API(命令行 + Python);

  • 模型更快更准确;

  • 模型能完成目标检测、实例分割和图像分类任务;

  • 与先前所有版本的 YOLO 兼容可扩展;

  • 模型采用新的网络主干架构;

  • 无锚(Anchor-Free)检测;

  • 模型采用新的损失函数。

  • YOLOv8 还高效灵活地支持多种导出格式,并且可在 CPU 和 GPU 上运行该模型。

  • YOLOv8 的整体架构

  • 如下图所示:

  • C2f模块的结构图如下:

  • 我们可以很容易的看出,C2f模块就是参考了C3模块以及ELAN的思想进行的设计,让YOLOv8可以在保证轻量化的同时获得更加丰富的梯度流信息。

  • SPPF

  • YOLOv5中SPP的结构图如下图所示:SPP结构又被称为空间金字塔池化,能将任意大小的特征图转换成固定大小的特征向量。

  • SPPF替换SPP,二者效果一致,但前者较后者的执行时间减少至1/2。

  • PAN-FPN

  • yolov5的Neck部分的结构图如下:

  • YOLOv6的Neck部分的结构图如下:

  • YOLOv8的Neck部分的结构图如下:

  • 相对于YOLOv5或者YOLOv6,YOLOv8将C3模块以及RepBlock替换为了C2f,同时细心可以发现,相对于YOLOv5和YOLOv6,YOLOv8选择将上采样之前的1×1卷积去除了,将Backbone不同阶段输出的特征直接送入了上采样操作。

  • Head部分

  • YOLOv5本身的Head(Coupled-Head):

  • YOLOv8则是使用了Decoupled-Head,同时由于使用了DFL 的思想,因此回归头的通道数也变成了4*reg_max的形式:

  • 损失函数

  • 对于YOLOv8,其分类损失为VFL Loss,其回归损失为CIOU Loss+DFL的形式,这里Reg_max默认为16。

  • VFL主要改进是提出了非对称的加权操作,FL和QFL都是对称的。

  • DFL(Distribution Focal Loss),其主要是将框的位置建模成一个 general distribution,让网络快速的聚焦于和目标位置距离近的位置的分布。DFL的含义是以交叉熵的形式去优化与标签y最接近的一左一右2个位置的概率,从而让网络更快的聚焦到目标位置的邻近区域的分布;也就是说学出来的分布理论上是在真实浮点坐标的附近,并且以线性插值的模式得到距离左右整数坐标的权重。

  • 样本的匹配

  • 在YOLOv5的早期版本中使用了MaxIOU作为标签分配方法。然而,在实践中发现直接使用边长比也可以达到效果。而YOLOv8则是抛弃了Anchor-Base方法使用Anchor-Free方法,找到了一个替代边长比例的匹配方法,TaskAligned。

  • 为与NMS搭配,训练样例的Anchor分配需要满足以下两个规则:

  • 正常对齐的Anchor应当可以预测高分类得分,同时具有精确定位;

  • 不对齐的Anchor应当具有低分类得分,并在NMS阶段被抑制。基于上述两个目标,TaskAligned设计了一个新的Anchor alignment metric 来在Anchor level 衡量Task-Alignment的水平。并且,Alignment metric 被集成在了 sample 分配和 loss function里来动态的优化每个 Anchor 的预测。

  • YOLOv8 系列包含 5 个模型,其中 YOLOv8 Nano(YOLOv8n)是最小的模型,但速度最快;而 YOLOv8 Extra Large (YOLOv8x) 是最准确的模型,但速度最慢。

  • YoloV8相对于YoloV5的改进点:

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

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

  • Decoupled-Head:是不是嗅到了不一样的味道?是的,YOLOv8走向了Decoupled-Head;

  • Anchor-Free:YOLOv8抛弃了以往的Anchor-Base,使用了Anchor-Free的思想;

  • 损失函数:YOLOv8使用VFL Loss作为分类损失,使用DFL Loss+CIOU Loss作为分类损失;

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

  • YoloV8精度对比

  • YOLOv8 和 YOLOv5 之间的综合比较

  • YOLOv8 和 YOLOv5 目标检测模型对比

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/965809
推荐阅读
  

闽ICP备14008679号