-
本研究对 YOLOv8 目标检测模型进行了详细分析,重点关注其架构、训练技术以及相对于 YOLOv5 等之前迭代的性能改进。关键的创新,包括用于增强特征提取的 CSPNet 主干、用于卓越的多尺度目标检测的 FPN+PAN 颈部,以及向无锚方法的过渡,都得到了彻底的研究。该论文回顾了 YOLOv8 在 Microsoft COCO 和 Roboflow 100 等基准测试中的性能,强调了其在不同硬件平台上的高精度和实时功能。此外,该研究还探讨了 YOLOv8 对开发人员友好的增强功能,例如其统一的 Python 包和 CLI,可简化模型训练和部署。总的来说,这项研究将 YOLOv8 定位为不断发展的目标检测领域最先进的解决方案。
-
YOLOv8 是 Ultralytics 于 2023 年推出的 YOLO 系列新一代目标检测模型,在YOLOv5 基础上完成多项核心创新,采用CSPNet 骨干网络 实现高效特征提取、FPN+PAN 增强颈部模块 优化多尺度检测、无锚框检测方案 简化预测并提升适配性;训练层面融合马赛克 /mixup 数据增强 、焦点损失函数 、混合精度训练 等技术,还推出 n/s/m/l/x 五款不同规模模型变体,在 Microsoft COCO 等基准数据集上,对比 YOLOv5 实现mAP@0.5 从 50.5% 提升至 55.2% 、推理时间从 30ms / 张降至 25ms / 张的性能突破,同时配备统一 Python 包与 CLI 、支持 ONNX/TensorRT 多格式部署、兼容多款标注工具与第三方平台,是兼顾高精度 与实时性的目标检测 SOTA 方案,适用于边缘设备、自动驾驶、工业检测等多类应用场景。
-
YOLOv8 作为 Ultralytics2023 年推出的 YOLOv5 重大升级版,并非全新理论创新,而是融合 YOLOX/YOLOv6/YOLOv7/PPYOLOE 等 SOTA 技术的工程化集大成者 ,支持目标检测、图像分类、实例分割三大任务,兼顾精度与灵活性,同时依托 Ultralytics 框架实现了极强的可扩展性。
-
基于 YOLOv5 优化,提供 P5(640 分辨率)/P6(1280 分辨率)检测网络,以及基于 YOLACT 的实例分割网络;设计n/s/m/l/x 5 个尺度模型,通过深度因子(d)、宽度因子(w)、比例因子(r) 精细化调整网络结构,适配从边缘设备到高端 GPU 的全场景需求。无全新理论创新,聚焦工程化优化与 SOTA 技术融合 ,核心改动集中在骨干网络模块替换、检测头解耦 + 无锚框化、动态正负样本分配、训练策略精细化 四大方向。Ultralytics 未将其单纯定义为 "YOLOv8 算法",而是作为通用计算机视觉框架,支持 YOLO 系列及非 YOLO 模型,兼容分类、分割、姿态估计等多任务,具备极强的扩展能力。
-
YOLOv8 整体结构仍分为Backbone(骨干)、Neck(颈部)、Head(检测头) 三部分,核心改动集中在模块替换、结构精简、头部分离 ,MMYOLO 博客中通过YAML 配置文件对比、模块结构可视化清晰拆解了这些变化,以下为逐部分解析:
- Backbone(骨干网络):C3→C2f,梯度流更丰富,算力更高效。YOLOv8 对 YOLOv5 的骨干网络做了最小化结构调整 + 核心模块替换 ,保留了原有的层级结构和 SPPF 层,核心改动有 4 点:
- 首卷积核缩小 :将 YOLOv5 的 6×6 卷积核改为3×3,减少计算量的同时保证特征提取能力;
- 核心模块全替换 :将 YOLOv5 的C3 模块 全部替换为C2f 模块(参考 YOLOv7 ELAN 思想),这是骨干网络的核心改动;
- Block 数精简 :C2f 的堆叠数从 YOLOv5 的3-6-9-3 调整为3-6-6-3,减少冗余计算;
- 保留高效层:继续使用 SPPF(空间金字塔池化快速版),保证多尺度特征提取的同时提升推理速度。
- C2f 是 C3 的梯度流增强版 ,通过Split 操作 + 多分支 Bottleneck 堆叠 + Concat 融合 实现更丰富的梯度传播,两者结构对比如下:
- C3:单分支 Bottleneck 堆叠,梯度流单一,仅通过残差连接补充梯度;
- C2f :输入特征经 1×1 卷积降维后Split 为两个分支 ,一个分支直接保留,另一个分支堆叠 n 个 Bottleneck,最终所有分支Concat 融合 后再经 1×1 卷积升维。
- 优势:多分支设计让梯度流更丰富,特征表达能力更强,同等参数量下精度高于 C3;
- 劣势 :引入Split(特征分割) 操作,对端侧 / 嵌入式硬件的部署友好性略低于 C3(部分硬件对 Split/Concat 的算子支持不佳)。
- Backbone(骨干网络):C3→C2f,梯度流更丰富,算力更高效。YOLOv8 对 YOLOv5 的骨干网络做了最小化结构调整 + 核心模块替换 ,保留了原有的层级结构和 SPPF 层,核心改动有 4 点:
-
Neck(颈部网络):PPAFPN + 精简结构,特征融合更高效。Neck 部分基于 YOLOv5 的 PAFPN 优化为PPAFPN ,核心改动围绕模块替换 + 结构精简,无全新设计,保证了与 YOLOv5 的兼容性同时提升特征融合效率:
- 模块替换:将所有 C3 模块替换为 C2f,与骨干网络保持一致,提升特征传递的一致性;
- 结构精简 :去掉了 2 个卷积连接层,减少计算冗余,同时不影响特征融合的完整性;
- 特征融合逻辑 :保留 PAFPN 的自上而下 + 自下而上双向特征融合,保证小目标、大目标的检测能力,适配多尺度场景。
-
Head(检测头):耦合→解耦,锚框→无锚框,史上最大改动。Head 部分是 YOLOv8 与 YOLOv5差异最大 的模块,完全摒弃了 YOLOv5 的耦合头 + Anchor-Based 设计,改为解耦头 + Anchor-Free,同时移除了 objectness 分支,是 YOLOv8 精度提升的核心原因之一,完全对齐当前目标检测的主流设计。
- YOLOv5 耦合头:分类、回归、objectness 三个任务共享一套卷积层,任务间存在干扰,尤其是小目标 / 低置信度目标的检测精度易受影响;
- YOLOv8 解耦头 :将分类分支 和回归分支完全分离 ,各用一套独立的 3×3+1×1 卷积层:
- 回归分支:最终输出4×reg_max 维特征,结合DFL(分布焦点损失) 实现边界框的精细化回归;
- 分类分支:最终输出类别数维特征,用 Sigmoid 激活实现多类别预测。
- Anchor-Based 的痛点:需要根据数据集预计算锚框尺寸,泛化性差(跨数据集需重新聚类),对不同宽高比的目标适配性低;
- YOLOv8 Anchor-Free :直接预测目标的中心坐标 + 宽高,无需预定义锚框,减少了超参数调优成本,同时对异形、极端比例的目标(如细长物体、小物体)检测精度更高。
- YOLOv5 的 objectness 分支用于预测 "该位置是否存在目标",YOLOv8 通过动态正负样本分配 直接实现目标区域的筛选,移除了该分支,简化了检测头的任务,减少了计算量,同时避免了 objectness 分支与分类 / 回归分支的干扰。
-
YOLOv8 的损失计算分为正负样本分配 和损失函数计算 两部分,完全抛弃了 YOLOv5 的静态正负样本分配 + 耦合损失 ,引入了 TOOD 的TaskAlignedAssigner 和 DFL 的分布焦点损失,是其精度提升的另一核心原因。
-
正负样本分配的核心是确定哪些预测框需要参与训练 ,YOLOv5 采用基于锚框的静态分配 (根据锚框与 GT 的 IoU 阈值),存在分配不精准、漏检 / 误检的问题;YOLOv8 引入TaskAlignedAssigner 动态分配策略 ,实现分类分数 和回归 IoU的双对齐,分配更精准。核心原理(1 个公式 + 2 个步骤)
- 对齐分数计算 :t=sα+uβ(、为超参数,通常取 1)
- s:该位置对 GT 类别的预测分类分值;
- u:该预测框与 GT 框的IoU 值;
- t:对齐分数,综合了分类和回归的性能,分数越高,该预测框与 GT 的匹配度越高。
- 正样本选择 :对每个 GT 框,计算所有预测框的对齐分数,选取topK 个分数最高 的预测框作为正样本,其余为负样本。优势:动态分配让正样本更贴合 GT 的特征,尤其是小目标、遮挡目标,避免了静态分配的 "一刀切" 问题,提升了检测精度。
- 对齐分数计算 :t=sα+uβ(、为超参数,通常取 1)
-
损失函数:解耦为分类 + 回归,无 objectness 损失。YOLOv8 的损失函数与解耦头一一对应,完全解耦为分类损失和回归损失,无 objectness 损失,两者按一定权重加权求和得到总损失:
- 分类损失 :BCE Loss(二值交叉熵损失)。YOLOv8 用 Sigmoid 实现多类别预测,BCE Loss 更适配多类别、多标签的检测场景,避免了 Softmax 的 "互斥假设" 限制。
- 回归损失 :CIoU Loss + DFL(分布焦点损失) 组合。CIoU Loss 在 IoU 的基础上,考虑了边界框的中心距离、宽高比 ,比 IoU/GIoU/DIoU 更精准,能更快收敛;DFL(分布焦点损失)将边界框的坐标预测转化为分布预测,用积分形式表示边界框位置,解决了传统回归损失对边界框精细化定位的不足,尤其是小目标、模糊目标的边界框预测更精准。
-
-
YOLOv8 的训练策略基于 YOLOv5 优化,无全新框架 ,但通过数据增强精细化、训练超参数调整实现了精度的进一步提升,核心改动有两点:
-
YOLOv8 的基础数据增强与 YOLOv5 一致,包括Mosaic、MixUp、HSV 色彩增强、随机仿射、水平翻转 等,核心创新是引入了 YOLOX 的 "最后 10epoch 关闭 Mosaic 增强":
- Mosaic 的优势:将 4 张图拼接为 1 张,丰富了训练样本的背景和目标尺度,提升模型的泛化性;
- Mosaic 的痛点 :训练后期,模型已趋于收敛,Mosaic 的拼接失真会影响模型的精细化拟合,尤其是小目标的定位精度;
- YOLOv8 优化 :假设总训练 epoch 为 500,前 490epoch 使用 Mosaic,最后 10epoch 关闭,让模型在真实的单图数据上收敛,提升最终检测精度。
- YOLOv8 对不同尺度模型采用不同的增强强度 ,避免 "一刀切":小模型(n/s):仅使用基础增强,不开启 MixUp/CopyPaste,避免过拟合;大模型(m/l/x):开启MixUp+CopyPaste,进一步丰富训练样本,提升泛化性和精度。
-
YOLOv8 的训练优化器、学习率调度、批次大小等超参数与 YOLOv5 基本一致 ,核心改动是训练总 epoch 从 300 提升至 500,这是其精度提升的重要原因,但也导致训练时间大幅增加。YOLOv8-s(基准模型)核心训练超参数
配置项 数值 / 策略 配置项 数值 / 策略 优化器 SGD 基础学习率 0.01 权重衰减 0.0005 动量 0.937 batch size 128 学习率调度 线性衰减 训练 epoch 500 warmup 迭代 max(1000,3×iters_per_epochs) 输入尺寸 640×640 EMA 衰减 0.9999
-
Introduction
-
计算机视觉仍然是一个动态且快速发展的领域,使机器能够解释和理解视觉数据。该领域的核心是对象检测,这是一项关键任务,涉及准确识别和定位图像或视频序列中的对象。多年来,人们开发了一系列复杂的算法来应对这一挑战,每次迭代都带来了新的进步和改进 。
-
Redmon 等人于 2015 年引入了 You Only Look Once (YOLO) 算法 ,物体检测取得了重大突破。 YOLO 系列通过将对象检测构建为单一回归问题,彻底改变了该领域,其中卷积神经网络一次性处理整个图像以预测边界框和类概率 。这种方法标志着与传统多级检测方法的不同,在速度和效率方面提供了显着的提升。在其前身的成功基础上,YOLOv8 引入了先进的架构和方法创新,显着提高了实时目标检测的准确性、效率和可用性 。
Survey Objective
-
本研究的主要目的是与其他最先进的检测算法相比,全面评估 YOLOv8 目标检测模型的性能。这项研究将评估 YOLOv8 不同版本(微型、小型、中型、大型)的准确性和推理速度之间的权衡,以确定最适合各种应用场景的模型大小。重点关注领域包括:
- CSPNet 主干和 FPN+PAN 颈部对特征提取和多尺度目标检测的影响。
- 无锚方法的好处是简化训练和提高检测精度。
- YOLOv8 的统一 Python 包和 CLI 在简化模型开发、训练和部署方面的作用。
- 该模型在 Microsoft COCO 和 Roboflow 100 等基准测试中的性能,包括与之前的 YOLO 迭代的比较。
-
此外,该研究还将研究 YOLOv8 中引入的以开发人员为中心的改进,例如其与 Darknet 和 PyTorch 框架的兼容性,以及其 Python API 和命令行界面提供的增强的用户体验。通过深入探索 YOLOv8 的创新和性能,本研究旨在为计算机视觉领域先进目标检测模型的持续开发和应用提供有价值的见解。
Evolution of YOLOv8
-
YOLOv8 是 YOLO 系列的最新演进,由 Ultralytics 于 2023 年开发。它建立在 YOLOv5 奠定的基础上,融合了重大的架构和方法创新。 YOLOv8 代表了 YOLOv5 中引入的思想的完善和扩展,重点是增强实时目标检测任务的模型准确性和可用性。这是 YOLOv8 的开发时间表:
- 2023年1月10日:YOLOv8正式发布,采用全新的anchor-free架构,旨在简化模型训练并提高各种任务的检测精度。
- 2023 年 2 月 15 日:引入 YOLOv8 Python 包和命令行接口 (CLI),简化模型训练、验证和部署的过程。
- 2023 年 3 月 5 日:实施马赛克和混合增强等先进增强技术,增强模型跨不同数据集的泛化能力。
- 2023 年 4 月 20 日:集成 CSPNet 主干以改进特征提取和混合 FPN+PAN 颈部,优化模型在多尺度目标检测中的性能。
- 2023 年 6 月 1 日:添加了对 ONNX 和 TensorRT 格式的支持,便于在更广泛的硬件平台(包括边缘设备)上进行部署。
-
YOLOv8 的发布和后续更新对目标检测领域产生了重大影响。它被认为是一个动态和不断发展的模型,正在进行的研究和开发工作旨在进一步增强其功能。本研究深入研究了 YOLOv8 中引入的新技术和性能指标,详细信息请参阅 Ultralytics 官方文档和 GitHub 存储库。
-

-
图1:物体检测过程
-
Architectural Footprint of YOLOv8
-
YOLOv8 建立在 YOLO 系列前辈建立的坚实基础之上,集成了神经网络设计和训练方法方面的前沿进展。与早期版本类似,YOLOv8 将对象定位和分类任务统一在单个端到端可微神经网络框架内,保持速度和准确性之间的平衡。 YOLOv8 的架构围绕三个核心组件构建: 主干 YOLOv8 采用复杂的卷积神经网络 (CNN) 主干,旨在从输入图像中提取多尺度特征。该主干网络可能是 CSPDarknet 或其他高效架构的高级版本,它捕获代表低级纹理和高级语义信息的分层特征图,这对于准确的对象检测至关重要。主干网针对速度和准确性进行了优化,结合了深度可分离卷积或其他高效层,以最大限度地减少计算开销,同时保留表示能力。
-

-
图2:Yolov8的模型结构
-
-
Neck YOLOv8中的neck模块细化并融合了backbone提取的多尺度特征。它利用路径聚合网络 (PANet) 的优化版本,该网络经过增强以改善不同功能级别之间的信息流。这种多尺度特征集成对于检测不同大小和尺度的物体至关重要,YOLOv8 中增强的 PANet 设计可能包括对原始 PANet 的修改,以进一步优化内存使用和计算效率。
-
Head 头模块负责根据精炼后的特征生成最终预测,包括边界框坐标、对象置信度分数和类标签。YOLOv8 引入了一种无锚点的边界框预测方法,摆脱了早期 YOLO 版本中使用的基于锚点的方法。这种无锚方法简化了预测过程,减少了超参数的数量,并提高了模型对具有不同纵横比和比例的对象的适应性。通过集成这些架构创新,YOLOv8 增强了目标检测任务的性能,提高了准确性、速度和灵活性。
YOLOv8 Training Methodologies
- YOLOv8 在目标检测方面的高性能不仅归功于其架构的进步,还归功于其复杂的训练方法:
Advanced Data Augmentation
- YOLOv8 结合了一套新的数据增强策略,可增强模型泛化能力。采用改进的马赛克增强和混合等技术,将多个图像组合成单个训练示例。此过程使模型暴露于更广泛的对象尺度、方向和空间配置,从而提高其鲁棒性和跨不同数据集泛化的能力。
Focal Loss Function
- YOLOv8 利用焦点损失函数进行分类任务,为难以分类的示例赋予更多权重。这种方法缓解了对象检测数据集中常见的类不平衡问题,并增强了模型检测小或遮挡对象(这些对象通常代表性不足)的能力。
Transition to PyTorch with Optimization
- 作为持续向 PyTorch 过渡的一部分,YOLOv8 优化了其架构和训练流程,以有效利用现代 GPU 架构。通过采用混合精度训练和其他计算优化,YOLOv8 实现了更快的训练和推理时间,同时保持甚至提高了准确性。这种优化确保模型非常适合在资源受限的环境中部署。
Data Augmentation Techniques
- 除了核心训练方法之外,YOLOv8 还引入了数据增强方面的进一步增强功能:
Mosaic and Mixup Augmentation
- 该技术将四个或更多图像组合成一个训练示例。通过这样做,模型可以接触到更多种类的物体尺度、位置和空间排列,从而显着提高其检测小物体的能力并增强对不可见数据的泛化。
Anchor-Free Bounding Box Prediction
- YOLOv8 脱离了早期 YOLO 版本中使用的基于锚点的方法,采用无锚点方法进行边界框预测。这项创新消除了对预定义锚框的需求,从而降低了计算复杂性,并提高了模型效率,特别是在检测具有不同纵横比和比例的物体时。
Loss Calculation
- YOLOv8的损失函数经过精心设计,包括三个主要组成部分:
Focal Loss for Classification
- 该组件通过更加重视难以分类的示例来解决类别不平衡问题,从而提高所有类别的分类准确性。
IoU Loss for Localization
- 并交交集 (IoU) 损失组件提高了边界框预测的准确性,提高了模型精确定位图像内对象的能力。
Objectness Loss
- 这种损失确保模型专注于可能包含对象的图像区域,从而提高其整体检测能力。
Mixed Precision Training
- YOLOv8 采用混合精度训练,该技术允许模型在训练和推理过程中利用 16 位浮点精度。这种方法显着加快了兼容 GPU(例如 NVIDIA A100 和 T4 模型)上的训练过程,同时保持了模型的准确性。混合精度训练还可以减少内存消耗,从而实现更大的批量大小和更高效的 GPU 利用率。
-

-
图 3:混合精度训练
-
CSP Backbone and Efficient Layer Aggregation
- YOLOv8集成了高级版本的CSP(Cross Stage Partial)瓶颈模块,减少了计算冗余,增强了特征重用。这种架构选择辅以改进的特征金字塔网络 (FPN) 的集成,该网络更有效地聚合多尺度特征,从而在对象检测任务中实现更快的推理时间和更好的整体性能。
Enhanced PANet Neck
- YOLOv8 基于 YOLOv5 中使用的 PANet 架构构建,具有增强版的 PANet 颈部。此增强功能优化了从主干到头部的特征信息流,提高了模型检测各种尺度和上下文中的对象的能力。这种优化的 PANet 颈部可确保在复杂的物体检测任务中实现最先进的性能,特别是在涉及小型或密集物体的场景中。
Performance Metrics
- 为了证实 YOLOv8 中引入的架构和方法改进,必须使用关键指标评估其性能。这些指标为将 YOLOv8 与其前身进行比较以及了解其在实际应用中的效率和有效性提供了定量基础。
Key Metrics
- 在评估 YOLOv8 等对象检测模型时,通常会考虑以下性能指标:
- 平均精度 (mAP):该指标衡量不同类别的对象检测的准确性,值越高表示性能越好。
- 推理时间:评估模型处理图像的速度,这对于实时应用程序至关重要。
- 训练时间:这评估了训练过程的效率,强调了模型训练以达到最佳性能的速度。
- 模型大小:这表示部署所需的计算资源,较小的模型大小有利于在内存和处理能力有限的设备上部署。
Performance Comparison (Actual Data)
- 下表1提供了 YOLOv5 和 YOLOv8 之间这些指标的比较。这些值基于最新的实验结果:
-

-
表 1:YOLOv5 和 YOLOv8 性能指标比较
-
Importance of Metrics
- 这些指标对于评估 YOLOv8 相对于 YOLOv5 等早期版本的实际优势至关重要。更高的 mAP 值和更低的推理时间直接意味着更准确、更快的目标检测,使 YOLOv8 特别适合实时处理和精度至关重要的应用。此外,训练时间和模型大小的减少表明 YOLOv8 的部署和维护效率更高,这对研究和行业应用都有好处。
YOLOv8 Models
-
YOLOv8 架构引入了五种不同的模型,从高效的 YOLOv8n 到最先进的 YOLOv8x,每种模型都针对不同的计算环境进行了定制。这些模型建立在以前版本的改进基础上,结合了增强的特征提取和更复杂的架构,以实现卓越的性能。YOLOv8系列包括以下型号:
-
YOLOv8n:该模型是YOLOv8系列中最轻量级、最快速的,专为计算资源有限的环境而设计。通过利用优化的卷积层和减少的参数数量,YOLOv8n 实现了紧凑的尺寸,INT8 格式约为 2 MB,FP32 格式约为 3.8 MB。这使得它非常适合电源效率和速度至关重要的边缘部署、物联网设备和移动应用。与 ONNX Runtime 和 TensorRT 的集成进一步增强了其跨各种平台的部署灵活性。
-
YOLOv8s:作为YOLOv8系列的基线模型,YOLOv8s包含约900万个参数。该模型在速度和精度之间取得了平衡,使其适用于 CPU 和 GPU 上的推理任务。它引入了增强的空间金字塔池化和改进的路径聚合网络(PANet),从而实现更好的特征融合和更高的检测精度,特别是对于小物体。
-
YOLOv8m:YOLOv8m 拥有约 2500 万个参数,定位为中层模型,提供计算效率和精度之间的最佳权衡。它配备了更广泛的网络架构,包括更深的主干和颈部,这使其能够在跨各种数据集的更广泛的对象检测任务中表现出色。该模型特别适合精度至关重要的实时应用,但计算资源仍然是一个问题。
-
YOLOv8l:YOLOv8l 拥有大约 5500 万个参数,专为需要更高精度的应用而设计。它采用了更复杂的特征提取过程,具有附加层和精细的注意力机制,改进了高分辨率图像中更小、更复杂的物体的检测。该模型非常适合需要细致目标检测的场景,例如医学成像或自动驾驶 。
-
YOLOv8x:YOLOv8 系列中最大、最强大的模型 YOLOv8x 包含约 9000 万个参数。它在同类产品中实现了最高的 mAP(平均平均精度),使其成为精度不能受到影响的应用的首选,例如监控系统或详细的工业检查。然而,这种性能伴随着计算需求的增加,需要使用高端 GPU 进行实时推理 。
-

-
图 4:YOLOv8 中 FPN 架构的变化
-
-
该表2说明了 YOLOv8 系列每个模型固有的权衡。最小的模型 YOLOv8n 虽然提供最快的推理时间,但与较大的模型相比,其准确性较低。这使得 YOLOv8n 特别适合速度至关重要且计算资源有限的边缘计算应用。另一方面,YOLOv8x 提供最高的精度,非常适合精度至关重要的用例,例如医学成像或安全应用,但需要更强大的硬件才能高效运行。这些结果强调了 YOLOv8 架构的灵活性,允许开发人员选择最适合其应用程序特定要求的模型,无论是速度、准确性还是两者的平衡。
-

-
表 2:YOLOv8 模型的性能指标。
-
YOLOv8 Annotation Format
-
YOLOv8 使用基于 YOLOv5 PyTorch TXT 格式构建的注释格式。注释存储在文本文件中,其中每一行对应于图像中的一个对象。每行包含类标签,后跟边界框相对于图像尺寸的标准化坐标(center_x、center_y、宽度、高度)。格式如下:
yaml<class> <center_x> <center_y> <width> <height> -
此格式附带一个 YAML 配置文件,该文件指定模型的架构和类标签。该文件确保YOLOv8可以轻松适应不同的数据集和任务。为了兼容性,来自 Roboflow、VOTT、LabelImg 和 CVAT 等工具的注释可能需要转换以匹配 YOLOv8 格式。这些工具通常提供直接导出选项或转换实用程序来简化此过程。
YOLOv8 Labelling Tools
- 为了高效的数据管理和注释,YOLOv8 的开发者 Ultralytics 建议使用 Roboflow 作为兼容的标记工具。 YOLOv8 旨在与各种第三方平台无缝集成,以增强模型训练和部署。表3 概述了与 YOLOv8 兼容的第三方集成平台。每个平台都概述了与 YOLOv8 集成时的主要功能。
-

-
表 3:YOLOv8 集成
-
Discussion
- YOLOv8 代表了目标检测领域的重大进步,建立在包括 YOLOv5 在内的前代产品奠定的基础上,同时引入了以下概述的新颖改进:
- 架构进步:YOLOv8 在目标检测架构中引入了进一步的改进,提高了模型的效率和准确性。改进的 CSPDarknet 主干和 PANet++ 颈部架构的集成可以实现更好的特征提取和聚合。这些修改解决了梯度冗余问题并优化了特征金字塔网络,有助于形成更加精简和有效的模型。
- 模型多功能性:与YOLOv5类似,YOLOv8提供了一系列模型尺寸(nano, small, medium, large, extra-large),以适应各种硬件功能和应用需求。最小的变体 YOLOv8n 特别适合部署在边缘设备和物联网平台上,以最小的计算开销提供强大的对象检测功能。
- 训练方法创新:YOLOv8 通过引入先进的数据增强技术(例如增强型马赛克增强和自适应锚框)来增强训练方法,从而改善小目标检测并减少对大型数据集的依赖。该模型还采用16位浮点精度的混合精度训练,从而缩短训练时间并减少内存消耗。
- 性能和影响:YOLOv8 实现了更高的 mAP 分数并保持较低的推理时间,使其成为实时对象检测任务的更强有力的竞争者。 PyTorch 的持续使用确保了广泛的研究和开发社区的可访问性,促进了人工智能和计算机视觉领域的创新和协作。
Conclusion
-
在本文中,我们对 YOLOv8 进行了全面分析,重点介绍了其架构创新、增强的训练方法以及相对于 YOLOv5 等之前版本的显着性能改进。 YOLOv8 集成了 CSPNet 主干和增强型 FPN+PAN 颈部,显着改进了特征提取和多尺度目标检测,使其成为实时应用的强大模型。向无锚方法的转变以及先进数据增强技术(例如马赛克和混合)的结合进一步提高了其在不同数据集上的准确性和鲁棒性。此外,引入以开发人员为中心的工具(包括统一的 Python 包和 CLI)简化了模型的可用性,扩大了其在各种硬件平台上的适用性。
-
对 Microsoft COCO 和 Roboflow 100 等数据集的基准评估证明了 YOLOv8 卓越的准确性和效率,将其定位为快速发展的目标检测领域中最先进的解决方案。随着实时、高精度目标检测需求的增长,YOLOv8 作为一种多功能且强大的模型脱颖而出,非常适合研究和工业应用。未来的发展预计将建立在这些进步的基础上,进一步完善 YOLOv8 的功能并扩大其在整个计算机视觉领域的影响。
YOLOv8 延续 YOLO 系列端到端 CNN 框架,由骨干、颈部、头部 三大核心模块组成,核心创新为无锚框检测,各模块设计如下:
- 骨干 (Backbone):采用 CSPNet/CSPDarknet 进阶版本,结合深度可分离卷积,提取低层次纹理与高层次语义的多尺度特征,兼顾计算效率与特征表达能力;
- 颈部 (Neck):优化 FPN+PAN/PANet 架构,提升不同特征层级的信息流动,实现高效多尺度特征融合,解决小目标、密集目标检测难题;
- 头部 (Head) :摒弃前代锚框检测方案,采用无锚框边界框预测,减少超参数数量,提升对不同宽高比、尺度目标的适配性,简化预测流程。
YOLOv8 的推理过程与 YOLOv5 高度兼容 ,仅在边界框解码阶段新增了 DFL 积分转换步骤 ,其余后处理(维度变换、阈值过滤、NMS)完全一致,以COCO 80 类、640×640 输入为例,拆解了 5 步推理流程:
- DFL 解码:积分形式→4D 边界框 :将回归分支输出的4×reg_max 维积分特征,通过Softmax + 卷积 转换为常规的4 维边界框(x,y,w,h);
- 维度变换与拼接 :将 80×80、40×40、20×20 三个尺度的分类 / 回归特征拼接,转换为 (b,8400,80)(分类)和**(b,8400,4)**(回归)的形状(8400=80×80+40×40+20×20);
- 原图尺度解码 :分类特征经Sigmoid 激活 得到类别置信度,回归特征解码为xyxy 格式的边界框,并还原到原图尺度;
- 阈值过滤 :用score_thr 过滤低置信度预测框,同时通过nms_pre限制预测框数量,提升推理效率;
- NMS 非极大值抑制:对过滤后的预测框做 NMS,去除重叠框,最终输出每张图的检测结果(数量≤max_per_img)。
核心性能指标对比(mAP@0.5 / 参数量 / FLOPs)
| 模型 | YOLOv5 mAP@0.5 | YOLOv5 参数量 (M) | YOLOv5 FLOPs@640(B) | YOLOv8 mAP@0.5 | YOLOv8 参数量 (M) | YOLOv8 FLOPs@640(B) | 精度提升 |
|---|---|---|---|---|---|---|---|
| n | 28.0 | 1.9 | 4.5 | 37.3 | 3.2 | 8.7 | +9.3% |
| s | 37.4 | 7.2 | 16.5 | 44.9 | 11.2 | 28.6 | +7.5% |
| m | 45.4 | 21.2 | 49.0 | 50.2 | 25.9 | 78.9 | +4.8% |
| l | 49.0 | 46.5 | 109.1 | 52.9 | 43.7 | 165.2 | +3.9% |
| x | 50.7 | 86.7 | 205.7 | 53.9 | 68.2 | 257.8 | +3.2% |
以YOLOv8-s(基准模型) 为基础,设计合理简化的例题,像做数学题一样拆解核心算法的步骤、输入输出维度和计算逻辑,所有例题保持基础配置一致,确保逻辑连贯。为简化计算且不改变核心逻辑,设定以下合理配置:
| 配置项 | 取值 / 说明 |
|---|---|
| 模型版本 | YOLOv8-s(P5 结构,640×640 输入,无锚框 + 解耦头) |
| 输入图像 | 640×640×3(RGB 图像,像素值 0~255) |
| 核心参数 | reg_max=16(DFL 默认值)、类别数 C=2(猫 / 狗)、topK=10(正负样本分配阈值) |
| 输出尺度 | 3 个特征层:80×80(640/8)、40×40(640/16)、20×20(640/32) |
| 简化设定 | 忽略 Batch 维度(单张图像)、忽略 BN / 激活函数对维度的影响 |
模块构建与输入输出维度变化(C2f/Neck/Head)
解析 YOLOv8-s 从 640×640×3 输入到检测头输出的全流程维度变化,重点关注 C2f 模块、Neck、解耦头的输入输出维度。已知条件
- 骨干网络结构:Conv→C2f×3→Conv→C2f×6→Conv→C2f×6→Conv→C2f×3→SPPF
- 卷积层默认参数:步长 s=2(下采样)/1(不采样),填充 p=1,核尺寸 k=3
- 宽度因子 w=0.5 → 初始输出通道 = 64×0.5=32
步骤 1:输入层 → 第一个卷积层(Conv1)
- 输入维度:640×640×3
- 计算逻辑:空间尺寸 =(输入尺寸 - 核尺寸 + 2× 填充)/ 步长 + 1。空间尺寸 =(640-3+2×1)/2 +1 = 320。输出通道 = 32(宽度因子决定)
- 输出维度:320×320×32
步骤 2:Conv1 → C2f-1 模块(n=3 个 Bottleneck)
- C2f 核心逻辑:输入→1×1Conv 降维→Split 为 2 分支→分支 1 保留,分支 2 过 n 个 Bottleneck→Concat 融合→1×1Conv 升维(输入输出通道不变)
- 输入维度:320×320×32
- 输出维度:320×320×32(空间 + 通道均不变)
步骤 3:多次下采样 + C2f → 骨干网络最终输出
经过多轮 Conv(步长 2)+ C2f 后,骨干输出 3 个特征层(对应 Head 的 3 个尺度):
| 尺度层级 | 空间尺寸 | 通道数 | 计算逻辑(640 / 下采样倍数) |
|---|---|---|---|
| 尺度 1 | 80×80 | 128 | 640/8=80 |
| 尺度 2 | 40×40 | 256 | 640/16=40 |
| 尺度 3 | 20×20 | 512 | 640/32=20 |
步骤 4:Neck(PPAFPN)→ 特征融合
- 核心逻辑:双向特征融合(自上而下 + 自下而上),仅融合特征,维度不变
- 输入:80×80×128、40×40×256、20×20×512
- 输出:80×80×128、40×40×256、20×20×512
步骤 5:Head(解耦头)→ 分类 / 回归分支
解耦头将分类、回归任务分离,各分支维度计算如下:
| 分支 | 卷积逻辑 | 单尺度输出维度 | 拼接后总输出维度 |
|---|---|---|---|
| 分类分支 | 2 层 3×3Conv + 1×1Conv(输出通道 = 类别数 2) | 80×80×2、40×40×2、20×20×2 | (80²+40²+20²)×2 = 8400×2 |
| 回归分支 | 2 层 3×3Conv + 1×1Conv(输出通道 = 4×reg_max=64) | 80×80×64、40×40×64、20×20×64 | 8400×64 |
最终结果
| 模块 | 输入维度 | 输出维度 |
|---|---|---|
| 骨干网络 | 640×640×3 | 80×80×128 + 40×40×256 + 20×20×512 |
| Neck | 骨干输出 | 同骨干输出 |
| 分类分支 | Neck 输出 | (1, 8400, 2)(batch=1) |
| 回归分支 | Neck 输出 | (1, 8400, 64) |
DFL(分布焦点损失)计算步骤与维度转换
- 以回归分支中 1 个预测框的输出为例,解析 DFL 如何将 4×16 维的分布特征转换为 4 维的边界框坐标(x,y,w,h)。
- 已知条件:单个预测框的回归特征:4×16 维(x/y/w/h 各 16 维分布),示例取 x 方向特征:F_x = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,0.9,0.8,0.7,0.6,0.5,0.4]。reg_max=16 → 分布区间索引 0~15
该预测框位于 80×80 尺度的 (10,20) 网格(网格尺寸 = 640/80=8 像素)
步骤 1:Softmax 激活(分布值→概率)
- DFL 核心是将离散分布值转换为概率,公式:Si=eFx,i∑j=015eFx,jS_i=\frac{e^{Fx,i}}{∑_{j=0}^{15}e^{Fx,j}}Si=∑j=015eFx,jeFx,i。
- 计算分子:e0.1≈1.105,e0.2≈1.221,...,e1.0≈2.718e^{0.1}≈1.105,e^{0.2}≈1.221,...,e^{1.0}≈2.718e0.1≈1.105,e0.2≈1.221,...,e1.0≈2.718(完整 16 个值求和≈14.68)。示例计算前 5 个概率:S₀=1.105/14.68≈0.075,S₁=1.221/14.68≈0.083,S₂=1.350/14.68≈0.092,S₃=1.492/14.68≈0.102,S₄=1.649/14.68≈0.112。所有概率和 = 1(Softmax 特性)
步骤 2:DFL 积分(概率→偏移值)
- 将离散概率转换为连续偏移值,公式:xoffset=∑i=015i×Six_{offset}=∑_{i=0}^{15}i×S_ixoffset=∑i=015i×Si
- 代入示例值计算:x_offset = 0×0.075 + 1×0.083 + 2×0.092 + ... + 15×0.025 ≈ 6.5(示例值)
步骤 3:偏移值→原图尺度坐标
- YOLOv8 Anchor-Free 回归是 "网格中心 + 偏移值":网格中心坐标:(10×8+4, 20×8+4) = (84, 164)(网格左上角 + 半网格尺寸)。
- 最终 x 坐标:84 + 6.5 = 90.5(像素)
步骤 4:重复计算 y/w/h
- 对 y/w/h 的 16 维分布特征重复步骤 1-3,得到完整边界框:最终该预测框坐标:(90.5, 180.2, 50.8, 70.3)(x,y 为中心坐标,w,h 为宽高)
- 最终结果输入:4×16 维分布特征 → 输出:4 维边界框坐标(x,y,w,h)。核心价值:将离散分布转换为连续坐标,提升边界框回归精度
TaskAlignedAssigner 正负样本分配策略
以单张图像含 1 个 GT 框为例,解析 TaskAlignedAssigner 如何计算对齐分数、选择正样本。已知条件
- GT 框(狗):原图坐标 x1=100,y1=200,x2=300,y2=400 → 中心 (200,300),宽 200,高 200
- 某预测框:分类分数 s=0.8(狗),与 GT 的 IoU=u=0.85
- 超参数:α=1,β=1,topK=10
步骤 1:GT 框归一化(适配模型输入)
- GT 框坐标除以 640(输入尺寸):中心 x=200/640≈0.3125,中心 y=300/640≈0.4688,宽 = 200/640≈0.3125,高 = 200/640≈0.3125
步骤 2:计算对齐分数 t(核心)
- 对齐分数综合 "分类精度 + 回归精度",公式: t=sα×uβt=s^α×u^βt=sα×uβ 。代入值:t = 0.8¹ × 0.85¹ = 0.68
步骤 3:排序选正样本
- 对 8400 个预测框的 t 值降序排序,前 10 个 t 值:0.68、0.65、0.62、0.58、0.55、0.52、0.48、0.45、0.42、0.38
- 这 10 个预测框标记为正样本(参与损失计算)
- 剩余 8390 个预测框标记为负样本(不参与损失计算)
步骤 4:验证正样本合理性
- 正样本 t 值≥0.38,分类分数 / IoU 均较高,与 GT 匹配度高;
- 负样本 t 值 < 0.38,要么分类不准,要么回归偏差大,无训练价值。
最终结果
- 正样本数量:10 个(topK=10)
- 负样本数量:8390 个
- 核心价值:动态分配正样本,避免静态分配 "一刀切" 的问题