YOLOv8 是目前最强工业级目标检测模型,没有之一。它在保持极致速度的同时,把精度推到了新的高度,已经彻底取代 YOLOv5 成为新一代标杆。
YOLOv8 的核心思想仍然是 “You Only Look Once”——整张图只看一次,就把所有物体的位置和类别全部预测出来。它属于单阶段检测器(one-stage detector),直接把输入图像划分成网格,每个网格负责预测自己区域内的物体,整个过程端到端一次完成,没有区域建议(proposal)阶段,所以速度极快。
YOLOv8 的网络结构可以清晰地分成三个大模块:Backbone(主干)、Neck(颈部)、Head(检测头)。我们按从后往前、从输出到输入的顺序来背,更符合理解逻辑,也更好记忆。
一、检测头(Head)—— YOLOv8 最大变革所在
YOLOv8 的检测头彻底抛弃了以前所有 YOLO 系列使用的 Anchor-Based 方式,改成了 Anchor-Free + Decoupled Head(无锚框 + 解耦头),这是它精度暴涨的最核心原因。
- Anchor-Free(无锚框) 以前的 YOLOv3/v5 都要预先设定很多不同比例的锚框(anchor boxes),然后判断物体最匹配哪个锚框。YOLOv8 完全不设锚框,而是直接让每个网格单元直接回归物体的中心点偏移量和宽高值,就像 CenterNet 那样,把物体看成一个点(中心点),然后直接预测这个点到左上右下四条边的距离。这种方式极大减少了超参数数量,对各种尺度、各种长宽比的物体都更加友好,特别对小物体和大物体同时存在的场景提升巨大。
- Decoupled Head(解耦头) 以前的 YOLO 检测头是耦合的,一个卷积同时输出分类分数和边界框回归值。YOLOv8 把分类任务和回归任务彻底分开:两条并行分支,一个分支专职分类,一个分支专职回归(位置)。分类分支看“我是不是这个类别”,回归分支看“框得准不准”。两条分支各自优化,互不干扰,精度大幅提升。这已经是当前所有 SOTA 模型的标配设计(RT-DETR、RTMDet、Gold-YOLO 等全都在用)。
- 输出特征图尺度 YOLOv8 依然输出 3 个尺度的特征图,分别对应原图的 8倍、16倍、32倍下采样,即 P3、P4、P5 层。
- 小尺度(P5,32倍下采样):负责检测大物体
- 中尺度(P4):负责检测中等物体
- 大尺度(P3,8倍下采样):负责检测小物体
每个尺度上,每个网格都会输出:
- 分类分支:直接输出每个类别的分数(共 nc 个类别,比如 COCO 是 80 类)
- 回归分支:输出 4 个值(中心点相对于网格左上角的偏移 tx, ty + 宽高 w, h),不再输出 objectness 分数(因为无锚框不需要)
二、标签分配策略(正负样本分配)——精度飞升的真正杀手锏
YOLOv8 抛弃了以前基于 IoU 的固定阈值分配方式,改用 TaskAlignedAssigner(任务对齐分配器),这是目前最强的动态分配策略之一。
核心思想:正样本不是只看 IoU 高不高,而是综合考虑“分类分数”和“IoU”两个指标的加权得分(s = cls^α × iou^β,通常 α=0.5, β=0.6)。哪个网格对某个物体预测的类别分数高、同时 IoU 又高,就把这个物体分配给这个网格作为正样本。
这样做的好处是:即使某个网格的 IoU 不是最高,但它对这个类别特别自信(分类分数很高),也会被选为正样本,避免了“一刀切”只看 IoU 导致的误分配。这正是“任务对齐”的含义——让分类任务和定位任务共同决定谁是好样本。
同时,YOLOv8 在每个真实物体周围只选 Top-k 个最高得分的网格作为正样本(一般 k=10),其余全是负样本,极大减少了正样本数量,提高训练效率和精度。
三、损失函数(背诵口诀:分类用 VFL + 回归用 DFL + CIoU)
虽然你说不要公式,但名字必须记住,因为这就是 YOLOv8 的三大损失:
- 分类损失:Varifocal Loss(VFL)—— 对正样本要求高分,对负样本要求低分,对高质量负样本惩罚更重
- 回归损失:Distribution Focal Loss(DFL)+ CIoU Loss
- DFL 把宽高回归看成分布预测,让网络关注真实值附近的分布区间,提升边界框精度
- CIoU Loss 综合考虑了中心点距离、重叠率、长宽比,是目前最好的完整 IoU 类损失
四、Neck 部分—— PAN 结构 + C2f 模块
YOLOv8 的 Neck 依然是经典的 PAN(Path Aggregation Network)结构,结构顺序是:
下采样路径(自顶向下):把深层语义信息传递给浅层 上采样路径(自底向上):把浅层定位信息再补回深层,实现多尺度特征的充分融合
YOLOv8 把原来 YOLOv5 的 C3 模块全部替换成了更轻、更快的 C2f 模块。
C2f 模块结构(必须背下来): 输入 → Split(分成两路) → 一路直接走 → 另一路依次经过 n 个 Bottleneck(Bottleneck 内部是 3×3 卷积 + 残差 + 3×3 卷积) → 两路 Concat → 最后再接一个 3×3 卷积输出
比 C3 多了并行梯度分支,梯度流更丰富,特征表达能力更强,同时参数量和计算量更少。
另外在 Backbone 和 Neck 中都保留了 SPPF 模块(Spatial Pyramid Pooling - Fast),用三个 MaxPool(5,5,stride=1) 串联代替原来的 SPP,速度更快,效果相当。
五、Backbone 主干网络—— 依然是 CSP 思想的终极形态
YOLOv8 的 Backbone 整体结构和 YOLOv5 非常相似,但所有 C3 模块都被换成 C2f,第一个 3×3 卷积的 stride=2 卷积被换成了 6×6 的更大卷积(感受野更大,对大物体更友好)。
整体流程(以 YOLOv8n 为例,记住层序就行): Conv(6×6) → Conv → C2f ×3 → Conv → C2f ×6 → Conv → C2f ×6 → Conv → C2f ×3 → SPPF → 上采样 + Concat + C2f(进入 Neck)
六、训练策略(最后冲刺的秘密武器)
- 最后 10 个 epoch 自动关闭 Mosaic 数据增强 Mosaic 是把四张图拼成一张,极大提升小物体检测能力。但训练末期关闭 Mosaic,可以让模型更好地适应真实单张图片分布,避免过拟合到拼接图,提升最终精度。
- 自动混合精度训练、自动 anchor 关闭(因为本来就无锚框)、自动学习率余弦退火等,全程无脑训练也能出极致效果。
总结背诵口诀(一句话记完所有核心点)
“YOLOv8:C2f 替换 C3,无锚框 + 解耦头,TaskAlignedAssigner 分配正样本,VFL + DFL + CIoU 三大损失,最后10轮关 Mosaic,PAN 颈部 + CSP 思想主干,速度精度双王者。”
1804

被折叠的 条评论
为什么被折叠?



