代码地址: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:逐步增大模型尺寸,精度更高。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐