一、YOLOv8 是什么?
YOLOv8(You Only Look Once version 8)是由 Ultralytics 公司于 2023 年初发布的最新一代目标检测算法,是 YOLO 系列的现代化演进版本。
核心定位:
- 单阶段(One-Stage)实时目标检测器
- 多任务统一框架:支持检测、实例分割、姿态估计、图像分类
- 工业级易用性:开箱即用,支持训练、验证、推理、部署全流程
关键特性:
✅ Anchor-Free
✅ Decoupled Head(解耦检测头)
✅ C2f 主干模块
✅ Task-Aligned Assigner(TAL)
✅ Distribution Focal Loss(DFL)
✅ 支持 ONNX/TensorRT/CoreML 等部署
二、整体架构:Backbone + Neck + Head
YOLOv8 采用经典的三段式结构,但每部分都经过精心优化。
Input Image │ ▼ [ Backbone: CSPDarknet with C2f ] → 提取多尺度特征 (P3, P4, P5) │ ▼ [ Neck: PAN-FPN ] → 自顶向下 + 自底向上特征融合 │ ▼ [ Head: Decoupled Detection Head ] → 分类 + 回归(Anchor-Free)
三、核心模块详解
1. Backbone:CSPDarknet + C2f 模块
(1)CSP(Cross Stage Partial)思想
- 将输入通道 split 为两路:
- 一路 bypass(保留原始梯度)
- 一路经卷积变换
- 最后 concat 融合,减少计算冗余,增强梯度流
(2)C2f 模块(YOLOv8 创新)
替代 YOLOv5 的 C3 模块,核心改进:
- 密集连接:不仅 concat 最终输出,还 concat 所有中间 Bottleneck 输出
- 更强特征复用:低层细节与高层语义融合更充分
- 更好梯度传播:缓解深层网络梯度消失
# C2f 伪代码
y = split(cv1(x))
[X1, X2] = y
for i in range(n):
y.append(Bottleneck(y[-1]))
output = cv2(concat(y))
# [X1, X2, B1, B2, ..., Bn]
📌 C2f 使 YOLOv8 在小目标检测上显著优于 YOLOv5。
2. Neck:改进型 PAN-FPN
- 自顶向下路径:P5 → upsample → + P4 → P4' → upsample → + P3 → P3'

