☰
YoloV8系列核心基础知识
2026/9/29 8:16:58 网站建设 项目流程

YoloV8网络结构图

网络模块

  • SPPF 模块

SPPF模块将SPP模块并行输入的最大池化调整为多个小卷积核的串行输入,可以有效减小网络的计算量,提升计算效率。 SPPF模块还避 免了对图像区域的裁剪,以及缩放操作导致的图像失真,实现局部特征和全局特征融合,完善目标的 特征信息。

  • C2f 模块

受到ELAN模块的启发,YOLOv8 设计了更轻量化的C2f模块,引入更多的分支结构丰富梯度回传的支流,替换了YOLOv5中的C3模块,使模型变得更轻量化,从而获得更加丰富的梯度流信息。

三段式架构

  • Backbone:主干特征提取

默认 Backbone 的层序非常清楚:Conv -> Conv -> C2f -> Conv -> C2f -> Conv -> C2f -> Conv -> C2f -> SPPF。其中 P3、P4、P5 三个主尺度特征分别在 1/8、1/16、1/32 下采样倍率处形成。

SPPF 仍然保留在 Backbone 末端,作用是扩大感受野并聚合上下文。YOLOv8 没有像某些后续模型那样大改末端金字塔池化,而是保留了这一块成熟设计。

  • Neck:FPN + PAN 风格的双向融合

先上采样 + Concat 把高层语义往浅层传,再下采样 + Concat 把融合后的浅层细节回流到中高层,所以本质上就是 FPN/PAN 风格的双向特征融合。

P3/8 更偏小目标;
P4/16 更偏中目标;
P5/32 更偏大目标。

  • Head:anchor-free 的分离式检测头

有两条主分支:cv2:box branch,输出 4 * reg_max;cv3:class branch,输出 nc。YOLOv8 检测头没有单独的 objectness 分支。 源码里 self.no = nc + self.reg_max * 4,不是旧 YOLO 常见的 nc + 5;训练损失里也是直接取 pred_scores 做分类 BCE,再配 box + dfl,没有单独的 obj loss 分支。

YOLOv8 的关键创新点

  • anchor-based 转向 anchor-free

这是 YOLOv8 最核心的架构变化之一。官方对比页明确说,YOLOv8 的 anchor-free head 省去了手工 anchor 配置,并减少了框预测数量,从而让模型在自定义数据集上更稳,也会让后处理里的 NMS 更轻一些。YOLOv5/7 更像“基于预设框去修正”,YOLOv8 更像“直接在网格点上回归目标”。 这让迁移到新数据集时,少了一层“先配 anchor”的工程成本。

  • 分离式 Head

YOLOv8 的 Head 不是单一输出卷积,而是把框回归和分类分开做。分离式 Head 的意义在于:
定位和分类本来就是两个优化目标,拆开后一般更容易收敛,也更利于后续针对不同分支做轻量化或导出优化。

  • DFL 回归

当前 Detect 头默认 reg_max=16,所以每个位置的框分支先输出 4 * 16 = 64 个通道;随后在损失和解码里,通过 softmax 加权投影恢复成四个连续距离值,再通过 dist2bbox 解码为框。这意味着 YOLOv8 的框回归不是“直接回归 4 个数”,而是用离散分布去近似连续边距。这通常比直接回归更稳,尤其是在高精度定位场景里。

  • 任务对齐分配

当前 v8DetectionLoss 默认使用 TaskAlignedAssigner,源码里默认参数是 topk=10、alpha=0.5、beta=6.0;而 TaskAlignedAssigner 的说明写得也很清楚:它用一个同时结合分类信息与定位信息 的 task-aligned metric 来做正负样本分配。这比“只按 IoU”或者“只按中心点”更像一种联合筛选:
既看你分得像不像,又看你框得准不准。

参考资料:

A Comprehensive Review of YOLO Architectures in Computer Vision: From YOLOv1 to YOLOv8 and YOLO-NAS

yolov8详细讲解,包括网络结构图、关键创新点、部署-CSDN博客

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询