YOLOv8介绍
代码地址:https://github.com/ultralytics/ultralytics
YOLOv8是Ultralytics公司推出的目标检测模型,属于YOLO(You Only Look Once)系列。它在YOLOv5的基础上进行了架构改进和性能优化,支持目标检测、实例分割、姿态估计等任务,具有更高的精度和更快的推理速度。YOLOv8 旨在快速、准确且易于使用,这也使其成为对象检测、图像分割和图像分类任务的绝佳选择。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,还支持YOLO以往版本,方便不同版本切换和性能对比。
1.核心特点
(1) 架构改进
-
使用新的骨干网络(Backbone)和特征金字塔(FPN)设计,提升特征提取能力。
-
引入自适应训练策略,如动态标签分配和损失函数优化。
(2)多任务支持
-
目标检测:支持分类和边界框回归。
-
实例分割:新增掩码预测分支。
-
姿态估计:可检测关键点(如人体关节点)。
(3)性能优势
-
相比YOLOv5,mAP(平均精度)提升约10%-20%。
-
推理速度优化,支持实时处理(30+ FPS)。
|
优势 |
说明 |
|
无锚框设计 |
消除手动配置锚框需求,简化训练流程,提升小目标检测精度 |
|
C2f 模块优化 |
替代 YOLOv5 的 C3 模块,改善梯度流,增强特征表示能力,计算成本低 |
|
解耦检测头 |
分离分类与定位任务,提升收敛速度与检测精度 |
|
TAL 标签分配 |
动态标签分配策略,提高正负样本匹配质量,减少训练噪声 |
2.YOLOv8
YOLOv8 有5个不同模型大小(网络尺寸大小)的预训练模型:n、s、m、l 和 x。关注下面的参数个数和COCO mAP(准确率),可以看到准确率比YOLOv5有了很大的提升。特别是 l 和 x,它们是大模型尺寸,在减少参数数量的同时提高了精度。

整体结构上与YOLOv5类似: CSPDarknet(主干)+ PAN-FPN(颈)+ Decoupled-Head(输出头部),但是在各模块的细节上有一些改进,并且整体上是基于anchor-free的思想,这与Yolov5也有着本质上的不同。Backbone:特征提取网络;Neck:特征融合网络;Head:检测头。

(1)YOLOv5网络结构包含:
输入端:Mosaic数据增强、自适应锚框计算、自适应图片缩放;
Backbone:Focus结构,CSP结构;
Neck:FPN+PAN结构;
Head:CIOU_Loss。其中,基本组件包含
Focus:基本上就是YOLOv2的passthrough。
CBL:由Conv+Bn+Leaky ReLU三者3组成。
CSP1_X:借鉴CSPNet网络结构,由三个卷积层和X个Res unit模块Concat组成。
CSP2_X:不再用Res unit模块,而是改为CBL。
SPP:采用1x1,5x5,9x9,13x13的最大池化方式,进行多尺度融合。
(2)YOLOv8模型架构

|
区域 |
位置 |
核心作用 |
|
骨干网络(Backbone) |
最左侧 |
从输入图片里分层提炼特征(边缘、纹理、物体形状),为后续检测打基础 |
|
颈部网络(Neck) |
中间偏右(层 10-21) |
把骨干提取的特征多尺度融合,让低层细节和高层语义结合,提升不同大小目标的检测能力 |
|
检测头(Head) |
最右侧 |
从融合后的特征里,输出最终检测结果(物体位置 + 类别) |
|
细节模块(Details) |
中间黄色区域 |
拆解了上面用到的所有核心模块(Conv、C2f、SPPF 等)的内部结构 |
|
辅助信息(Loss + 缩放表) |
右上角 |
标注了模型用的损失函数,以及不同大小 YOLOv8(n/s/m/l/x)的缩放规则 |
具体来说,这是YOLOv8的工作流程:
输入图片 → 骨干网络(多尺度特征提取) → 颈部网络(多尺度特征融合) → 检测头(分类+回归,输出检测结果)
(a)骨干网络(Backbone)—— 给图片 “分层提炼信息”
输入是一张640×640×3的图片(宽 × 高 ×RGB 三通道),骨干网络就像一个一边把图片缩小(下采样),一边提炼特征,最终输出 3 个不同尺度的特征层,给后面的网络用。
-
初始下采样(层 0-1):替代旧版 Focus 模块
-
层 0(P1):Conv(k=3,s=2,p=1),第一次下采样,把图片从640×640缩小到320×320,同时把通道数从 3(RGB)升到64×w(w是宽度系数,控制模型大小,比如 nano 模型 w=0.25,就是 16)。
-
层 1(P2):再一个步长 2 的卷积,缩小到160×160,通道升到128×w。
这两步用简单的卷积替代了旧版本的切片操作,更高效、更容易在不同硬件上部署。
-
多阶段特征提取(层 2-9):核心是 C2f 模块
骨干网络分4个 Stage,每个Stage都是“下采样 + C2f 特征提取”,最终输出3个关键特征层:
|
阶段 |
模块 |
输出尺寸 |
作用 |
|
Stage1 (层2) |
C2f(shortcut=True) |
160×160×128×w |
提取低层纹理、边缘特征 |
|
Stage2 (层3-4) |
Conv 下采样 + C2f |
80×80×256×w(P3 层) |
小目标检测的关键特征(感受野小,细节丰富) |
|
Stage3 (层5-6) |
Conv 下采样 + C2f |
40×40×512×w(P4 层) |
中目标检测的关键特征(感受野中等,兼顾细节和语义) |
|
Stage4 (7-9) |
Conv 下采样 + C2f + SPPF |
20×20×512×w(P5 层) |
大目标检测的关键特征(感受野大,语义信息强) |
C2f 模块(层2/4/6/8):图里的绿色模块,是 YOLOv8 的核心改进。它把输入特征分成两路:一路直接保留细节,另一路经过多个残差瓶颈层提取深层特征,最后拼接起来。既丰富了梯度流动,又减少了计算量,还能同时保留细节和语义信息。
SPPF 模块(层9):骨干网络的最后一步,用快速空间金字塔池化,在不缩小特征图的前提下扩大感受野,让模型能同时看到局部细节和全局场景,提升复杂场景的检测能力。
(b)颈部网络(Neck)—— 把不同尺度的特征 “打通融合”
骨干网络输出的 P3/P4/P5 三个特征层,分别负责小/中/大目标,但它们是 “孤立” 的。颈部网络的作用就是把它们融合起来,让每个特征层都同时拥有低层细节和高层语义,也就是 YOLOv8 的改进型 PAN-FPN 结构,分两步走:
-
自顶向下(FPN:高层语义往下传)
-
先把最高层的 P5(20×20)上采样(放大)到 40×40,和 P4 的特征拼接(Concat),再用 C2f 融合,得到增强版的 P4 特征。
-
再把增强后的 P4 上采样到 80×80,和 P3 的特征拼接融合,得到增强版的 P3 特征。
把高层的语义信息传到低层,让低层特征也知道自己提取的细节属于什么物体。
-
自底向上(PAN:低层细节往上传)
-
把增强后的 P3(80×80)下采样到 40×40,和增强后的 P4 特征拼接融合,得到新的 P4 特征。
-
再把新的 P4 下采样到 20×20,和 P5 的特征拼接融合,得到新的 P5 特征。
把低层的细节信息传到高层,让高层特征能更精准地定位物体。
经过这两步,P3/P4/P5 三个特征层都变成了“细节 + 语义兼备”的融合特征,送到后面的检测头。
(c)检测头(Head)—— 输出最终的检测结果
Detect 模块是 YOLOv8 的Anchor-Free 解耦检测头,和旧版本的耦合头不同,它把“分类(是什么物体)”和“回归(物体在哪里)”分成了两个独立的分支:
每个融合后的特征层(P3/P4/P5),分别输入 Detect 头:
-
分类分支:经过2个卷积,输出每个位置的物体类别概率,用 BCE 损失计算误差。
-
回归分支:经过2个卷积,输出物体的边界框(x,y,w,h),用 CIoU+DFL 损失计算误差。
因为分类和回归不共用卷积参数,互不干扰,所以模型的检测精度更高,也避免了 Anchor 带来的调参麻烦。
(d)Details 区——核心模块拆解
-
Conv 模块:最基础的模块,就是“卷积层 + 批归一化 + SiLU 激活函数”,用来提取特征、调整通道数、改变特征图大小。
-
Bottleneck 模块:残差瓶颈结构,由两个1×1和3×3的卷积组成,shortcut=True时会加上输入,用来加深网络,同时缓解梯度消失。
-
C2f 模块:骨干和颈部的核心,输入分成两路,一路直连,一路经过多个 Bottleneck,最后拼接,比旧版 C3 模块的梯度路径更丰富,特征提取能力更强。
-
SPPF 模块:用 3个连续的5×5最大池化,快速扩大感受野,比原来的 SPP 模块速度更快,效果一样。
-
Detect 模块:解耦检测头,分类和回归分支分开,Anchor-Free 设计,直接预测物体的中心和宽高,不用手动调 Anchor 参数。
3.YOLOv8改进部分
(1)输入端
与 YOLOv5 类似。YOLOv8 继续使用 Mosaic 数据增强技术,通过将四张图像拼接成一张进行训练,增加了数据的多样性,提升模型泛化能力。
(2)主干网络
Backbone 部分采用的结构为CSPDarknet53(Cross Stage Partial Darknet53),其中包括:
基本卷积单元 Conv;
空间金字塔池化模块 SPPF:实现局部特征和全局特征的 Feature Map 级别融合;
C2f 模块:替代 YOLOv5 的 C3 模块,提供更高效的特征融合和更丰富的梯度流,增强特征提取能力;
CSPDarknet53 通过 Cross Stage Partial (CSP) 结构减少了计算量,同时保持了较高的特征提取能力。具体特点包括:
CSP 结构:通过将特征图分成两部分,一部分经过卷积操作,另一部分直接传递,最后将两部分特征融合,减少计算量并提升特征提取能力
Focus 模块移除:YOLOv5 中使用的 Focus 模块(通过切片操作减少计算量)在 YOLOv8 中被移除,改用更高效的 3×3 卷积核、步长为 2 的标准卷积层替代,一次性完成下采样与特征提取,简化结构并提升推理速度
(3)颈部网络
Neck 部分采用了改进型 PAN-FPN(Path Aggregation Network + Feature Pyramid Network)结构,用于特征融合。具体特点包括:
FPN(Feature Pyramid Network):通过自顶向下的路径将高层语义信息传递到低层特征;
PAN(Path Aggregation Network):通过自底向上的路径将低层细节信息传递到高层特征;
融合方式:采用 concat+C2f 模块(非 add),保留更多通道信息,输出三个尺度特征图。
(4)头部网络 任务输出
Head 部分负责最终的检测任务,包括分类和回归。具体特点包括:
Anchor-Free:YOLOv8 采用了 Anchor-Free 的设计,直接预测目标的中心点和宽高,减少了 Anchor 的复杂性和计算量,消除锚框计算开销,简化 NMS 过程;
Decoupled Head:YOLOv8 使用了分离的检测头,分别处理分类和回归任务,提高了检测精度。
(5)其他改进
Label Smoothing:YOLOv8 使用了标签平滑技术,减少了过拟合的风险
正样本分配策略:采用 Task Aligned Assigner(TAL),提高正负样本匹配质量
损失函数计算:由分类损失 VFL(Varifocal Loss)和回归损失 CIoU(Complete-IOU)+DFL(Distribution Focal Loss)两部分加权组合而成,提升边界框回归精度和分类准确性
4.应用场景
-
工业检测:缺陷检测、零件识别。
-
自动驾驶:行人、车辆检测。
-
安防监控:实时目标跟踪。
-
医疗影像:病灶定位。
5.代码示例
from ultralytics import YOLO
# 加载预训练模型(如YOLOv8n)
model = YOLO("yolov8n.pt")
# 目标检测
results = model.predict(source="image.jpg", save=True)
# 实例分割
seg_model = YOLO("yolov8n-seg.pt")
seg_results = seg_model.predict(source="image.jpg")
6.模型版本
YOLOv8提供不同规模的预训练模型:
- YOLOv8n(Nano):轻量级,适合移动端。
- YOLOv8s/m/l/x:逐步增大模型尺寸,精度更高。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)