本研究对YOLOv8目标检测模型进行了详细的分析,重点关注其架构、训练技术和相对于以前的迭代(如YOLOv5)的性能改进。
主要创新点,包括用于增强特征提取的CSPNetbackbone,用于实现高级多尺度目标检测的FPN+PAN脖子,以及转向 Anchor-Free 定方法,进行了全面的检查。
论文回顾了YOLOv8在Microsoft COCO和Roboflow 100等基准上的性能,着重强调了其在各种硬件平台上的高准确性和实时能力。
此外,该研究还探索了YOLOv8对开发行人友好的改进,例如其统一的Python包和CLI,这些可以简化模型训练和部署。总的来说,此项研究将YOLOv8定位为目标检测领域的最新解决方案。
1 Introduction
计算机视觉一直是一个充满活力且快速发展的领域,它使机器能够解释和理解视觉数据[1]。这个领域中的核心任务是目标检测,这是一个关键任务,涉及在图像或视频序列中准确识别和定位物体[2]。多年来,已经开发出各种复杂的算法来应对这个挑战,每次迭代都带来新的进步和改进[3]。
2015年,Redmon等人推出了目标检测算法You Only Look Once (YOLO)[4]。YOLO系列通过对目标检测作为一个单一回归问题进行描述,使卷积神经网络在一次过拟合整个图像的过程中来预测边界框和分类概率,从而彻底改变了这个领域。这种方法与传统的多阶段检测方法形成了鲜明对比,在速度和效率上都取得了显著的改进。
在其前驱者基础上,YOLOv8引入了先进的架构和方法创新,显著提高了其在实时目标检测中的精确度、效率和可用性。
Survey Objective
本研究的主要目标是全面评估YOLOv8目标检测模型的性能,与其它的最先进的检测算法进行比较。本研究将在YOLOv8的不同版本(微型,小型,中型,大型)之间评估精度与推理速度的权衡,以确定最适合各种应用场景的模型大小。
关注的关键领域包括:
- CSPNet Backbone 网和FPN+PAN颈对于特征提取和多尺度目标检测的影响。
- Anchor-Free 点方法在简化训练和提高检测精度方面的优势。
- YOLOv8的统一Python包和CLI在简化模型开发、训练和部署中的作用。
- 模型在诸如Microsoft COCO和Roboflow 100等基准上的性能,包括与前几个YOLO迭代相比的比较。
此外,该研究还将探索YOLOv8中面向开发者的改进,例如与Darknet和PyTorch框架的兼容性,以及其Python API和命令行界面提供的增强用户体验。通过深入探索YOLOv8的创新和性能,本研究旨在为计算机视觉领域先进目标检测模型的开发和应用提供宝贵 insights。
2 Evolution of YOLOv8
YOLOv8[9] 是YOLO系列的最新演变,由Ultralytics于2023年开发。它建立在YOLOv5[10]的基础上,融合了重大的架构和方法创新。YOLOv8是YOLOv5中所引入理念的完善和扩展,重点关注提升模型准确性和实时目标检测任务的可用性[11,12]。
YOLOv8的发展时间表如下:
- 2023年1月10日: YOLOv8 正式发布,具有新的 Anchor-Free 架构,旨在简化模型训练并提高各种任务上的检测准确性。
- 2023年2月15日: 发布YOLOv8 Python包和命令行接口(CLI),简化了模型训练、验证和部署过程。
- 2023年3月5日: 实现高级增强技术,如mosaic和mixup augmentation,提高模型在多样化数据集上的泛化能力。
- 2023年4月20日: 集成CSPNet Backbone 以改进特征提取和混合FPN+PAN Neck ,优化模型在多尺度目标检测上的性能。
- 2023年6月1日: 增加支持ONNX和TensorRT格式,便于在范围更广的硬件平台上部署,包括边缘设备。
YOLOv8的发布及后续更新对目标检测领域产生了显著影响。它被认为是一个充满活力和不断演进的模型,正在进行的研究和开发工作旨在进一步提高其能力。本研究详细阐述了YOLOv8中引入的全新技术和性能指标,具体内容见于官方Ultralytics文档和GitHub仓库。
3 Architectural Footprint of YOLOv8
YOLOv8在YOLO家族的前辈基础上,构建了一个坚实的基础,将神经网络设计和训练方法论的尖端技术融合在一起。与YOLO的前几个版本类似,YOLOv8在一个单端到端的可微分神经网络框架中,将目标定位和分类任务统一在一起,实现了速度和准确性的平衡。YOLOv8的结构包括三个核心组件:backbone;neck;head。
backbone YOLOv8使用了一个复杂的卷积神经网络(CNN)backbone,用于从输入图像中提取多尺度特征。这个backbone可能是一个高级的CSPDarknet或另一个高效的架构,它捕获了层次化的特征图,代表了低级的纹理和高级的语义信息,这对于精确的目标检测至关重要。backbone被优化为既快又准确,采用了深度可分卷积或其他高效的层,在最小化计算开销的同时保留表示能力。
neck YOLOv8的neck模块对backbone提取的多尺度特征进行精炼和融合。它利用了一个优化的Path Aggregation Network(PANet),用于在不同的特征 Level 上改善信息流动。这种多尺度特征集成对于检测各种大小和尺度的物体至关重要,YOLOv8中的增强PANet设计可能包括对原始PANet的修改,以进一步优化内存使用和计算效率。
head YOLOv8的head模块负责从细化的特征中生成最终预测,包括边界框坐标、目标置信度分数和类别标签。YOLOv8引入了 Anchor-Free 框边界框预测的方法,远离了YOLO的前几个版本中使用的 Anchor 框方法。这种 Anchor-Free 框预测方法简化了预测过程,减少了超参数的数量,并提高了模型对具有不同长宽比和尺度的物体的适应性。
通过整合这些结构创新,YOLOv8在目标检测任务上提升了性能,提供了更高的精确度、速度和灵活性。
YOLOv8 Training Methodologies
YOLOv8在目标检测方面的出色性能不仅仅归功于其架构的改进,还与其复杂的训练方法论密切相关:
3.1.1 Advanced Data Augmentation
YOLOv8引入了一组新的数据增强策略,以提高模型的泛化能力。在改进的mosaic增强和mixup技术中运用,即将多个图像合并为一个单独的训练示例。这一过程使模型暴露在更广泛的物体尺度、方向和空间配置中,从而提高了其鲁棒性和在不同数据集上的泛化能力。
3.1.2 Focal Loss Function
YOLOv8在分类任务中使用了Focal Loss函数,该函数给难以分类的实例分配更高的权重。这种方法解决了目标检测数据集中常见的类别不平衡问题,并增强了模型检测小或受掩盖物体的能力,这些物体往往被低估。
3.1.3 Transition to PyTorch with Optimization
作为迈向PyTorch的持续转型的一部分,YOLOv8在优化其架构和训练过程方面,充分利用了现代GPU架构的有效性。通过采用混合精度训练和其他计算优化,YOLOv8在保持或甚至提高准确性的同时,实现了更快的训练和推理时间。这种优化确保了该模型在资源受限环境中非常适合部署。
Data Augmentation Techniques
除了核心的训练方法论外,YOLOv8还在数据增强方面引入了进一步的改进:
3.2.1 Mosaic and Mixup Augmentation
图1:目标检测过程 [13]
这种技术将四个或多个图像合并为一个单一的训练示例。通过这样做,模型暴露于更为丰富的目标尺寸、位置和空间布局,显著提高了检测小物体的能力,并增强了处理未见数据的泛化能力。
Anchor-Free 框边界框预测
YOLOv8 摒弃了早期 YOLO 版本中使用的基于 Anchor 框的方法,采用 Anchor-Free 框预测边界框的方法。这一创新通过消除对预定义 Anchor 框的需求,降低了计算复杂度,同时在检测具有不同长宽比和尺寸的目标时提高了模型效率。
Loss Calculation
YOLOv8 的损失函数经过精心设计,由三个主要组成部分构成:
- 边界框回归(Bounding Box Regression)损失:这个部分用于度量预测的边界框与真实边界框之间的偏差。具体来说,这个损失考虑了预测边界框和真实边界框在水平、垂直和中心偏移方面的误差。
- 目标置信度(Target Confidence)损失:这个部分用于度量预测的边界框置信度和真实边界框置信度之间的偏差。具体来说,这个损失考虑了预测置信度和真实置信度之间的差异。
- 分类(Classification)损失:这个部分用于度量预测的类别与真实类别之间的偏差。具体来说,这个损失考虑了预测类别和真实类别之间的差异。
这些损失函数被仔细设计为协调整个模型,同时评估模型的性能。同时,YOLOv8 的损失函数还考虑了平衡分类和回归误差的重要性,并针对不同的数据集进行调整,从而提高模型的鲁棒性和性能。
Focal Loss for Classification
图2:Yolov8模型结构[14]
该组件通过赋予难以分类的实例更大的重要性,改进了所有类别的分类精度。
交点与面积损失(IoU Loss)用于定位
交点与面积(IoU)损失组件提高了边界框预测的准确性,优化了模型在图像中精确定位物体的能力。
Objectness Loss
这段损失确保模型集中在图像中可能包含物体的区域,从而提高其整体检测能力。
Mixed Precision Training
YOLOv8使用了混合精度训练技术,这种技术允许模型在训练和推理过程中利用16位浮点数精度。这种方法在兼容的GPU上如NVIDIA的A100和T4模型上显著加速了训练过程,同时保持了模型的准确性。混合精度训练还降低了内存消耗,使得可以实现更大的批量大小和更高效的使用GPU。
CSP Backbone and Efficient Layer Aggregation
YOLOv8将先进版本的CSP(跨阶段部分)瓶 Neck 集成在一起,这可以减少计算冗余并提高特征利用率。这一架构选择得到了改进的特征金字塔网络(FPN)的补充,它更有效地聚合多尺度特征,从而实现更快的推理速度和更好的总体性能,这在目标检测任务中尤为重要。
Enhanced PANet Neck
构建在YOLOv5所使用的PANet架构之上,YOLOv8拥有一个增强版的PANet颈。这一增强优化了从 Backbone 到头的特征信息流动,提高了模型在不同尺度和情境下检测目标的能力。这个优化的PANet颈在复杂的目标检测任务中保证了最新的性能,特别是在涉及小尺寸或密集堆叠的目标的场景中。
4 Performance Metrics
为了证实YOLOv8中引入的建筑和方法上的改进,作者有必要使用关键指标对其性能进行评估。这些指标为比较YOLOv8与其前身提供了定量的基础,使作者能够了解其在实际应用中的效率和有效性。
Key Metrics
以下性能指标通常在评估像YOLOv8这样的目标检测模型时考虑:
图3:混合精度训练 [17]推理时间(Inference Time): 衡量模型处理图像的速度,这对于实时应用至关重要。
- 训练时间(Training Time): 评估训练过程的效率,强调模型如何快速达到最佳性能。
- 模型大小(Model Size): 表示部署所需的计算资源,较小的模型尺寸对于在有限内存和处理能力的设备上部署具有优势。
平均平均精确率(mAP): 此指标衡量不同类别目标检测的准确度,更高的值表示更好的性能。### 性能对比(实际数据)
以下表格提供了YOLOv5和YOLOv8之间这些指标的对比。这些值基于最新的实验结果:
Importance of Metrics
这些指标对评估YOLOv8相对于早期版本如YOLOv5的实际优势至关重要。较高的mAP值和较低的推理时间直接转化为更准确和更快的目标检测,使YOLOv8特别适合实时处理和精确度至关重要的应用场景。此外,减少的训练时间和模型大小表明YOLOv8在部署和维护方面更加高效,这对研究和产业应用都有益处。
5 YOLOv8 Models
YOLOv8架构引入了五种不同的模型,每个模型都针对不同的计算环境进行了定制,从高效率的YOLOv8n到最先进的YOLOv8x。这些模型在以前版本的基础上进行了改进,并融入了增强的特征提取和更复杂的架构,以实现卓越的性能[18,19]。
YOLOv8系列包括以下模型:
- YOLOv8n:这是YOLOv8系列中最轻量和最快的模型,针对计算资源有限的场景设计。YOLOv8n通过优化卷积层和减少参数数实现了大约2MB的INT8格式和约3.8MB的FP32格式的紧凑大小。这使其非常适合边缘部署、物联网设备和移动应用等场景,其中电源效率和速度至关重要。与ONNX Runtime和TensorRT的集成进一步增强了它在各种平台上的部署灵活性[20,21]。
- YOLOv8s:作为YOLOv8系列的基准模型,YOLOv8s包含约900万个参数。该模型在速度和准确性之间达到平衡,适合CPU和GPU上的推理任务。它引入了增强的空间金字塔池化和改进的路径聚合网络(PANet),从而实现更好的特征融合和更高的检测精度,特别是在处理小型物体时[18,22]。
- YOLOv8m:约2500万个参数,YOLOv8m位于中端,在计算效率和精度之间实现最佳折中。它配备了一个更广泛的网络架构,包括更深的基础结构和颈,使其可以在各种数据集上脱颖而出。这种模型非常适合实时应用,精度是其首要关注点,但计算资源仍然是一个问题[19,22]。
- YOLOv8l:YOLOv8l约有5500万个参数,专为需要更高精度的应用而设计。它采用额外的层和优化的关注机制,进一步提高了在高分辨率图像中对小型和复杂物体的检测,这种模型非常适合需要仔细目标检测的场景,如医疗成像或自动驾驶[21,22]。
- YOLOv8x:YOLOv8家族中最大和最强大的模型,YOLOv8x约有90个参数。它在各种对比模型中实现了最高的mAP(平均精确率)。但是,这种性能伴随着更高的计算需求,需要在运行时使用高级GPU[20,22]。
YOLOv8模型的性能直接归因于架构的改进和与之前的版本的优化。下表对YOLOv8模型变体的参数数量、平均平均精度(mAP@0.5)、在CPU和GPU平台上的推理时间(在640像素图像大小上)进行了详细了解。
表说明了YOLOv8系列的每个模型固有的权衡。最小的模型,YOLOv8n,虽然提供了最快的推理时间,但与其他大模型相比,准确性较低。这使得YOLOv8n非常适合边缘计算应用,其中速度是最重要的,而计算资源有限。在另一方面,YOLOv8x在准确性上提供了最高水平,使其非常适合需要精度关键的应用,例如医学影像或安全应用,但需要在能够高效运行的硬件上运行。
这些结果强调了YOLOv8架构的灵活性,允许开发行人根据特定应用的最佳要求选择最合适的模型。
6 YOLOv8 Annotation Format
YOLOv8采用了一个基于YOLOv5 PyTorch TXT格式的标注格式。标注存储在一个文本文件中,其中每行对应于图像中的一个物体。每行包含类标签以及相对于图像尺寸的边界框(center_x, center_y, width, height)的归一化坐标。
7 Discussion
YOLOv8在目标检测领域取得了重大进步,在YOLOv5等先驱的基础上,实现了一系列创新性的改进。
- 架构改进: YOLOv8在目标检测架构上进行了进一步的优化,提高了模型的效率和准确性。YOLOv8采用了改进的CSPDarknet背心和PANet++ Neck 架构,这些改进在特征提取和特征汇聚方面带来了更好的效果。这些修改解决了梯度重复问题并优化了特征金字塔网络,使其更加简洁和高效。
- 模型灵活性: 类似于YOLOv5,YOLOv8提供了一系列模型大小(纳米、小、中、大、超大)以满足不同的硬件能力和应用需求。最小版本YOLOv8n特别适合在边缘设备和服务器物联网平台上部署,提供了强大的目标检测能力,且计算开销最小。
- 训练方法创新: YOLOv8通过引入先进的数据增强技术(例如增强的拼图 augmentation 和自适应 Anchor 框)改进了训练方法,这些技术提高了小目标检测和减少了依赖大型数据集。此外,模型采用了混合精度训练,具有16位浮点精度,从而实现了更快的训练速度和减少内存消耗。
- 性能和影响: YOLOv8在mAP得分上取得了更高的成绩,同时保持了较低的推理时间,成为实时目标检测任务的更强劲竞争者。采用PyTorch确保了广泛的研发社区的可用性,激发了AI和计算机视觉领域的创新和合作。
8 结论
在本论文中,作者对YOLOv8进行了全面的分析,突出显示了其架构创新、增强训练方法和相对于YOLOv5等先驱的重大性能改进。YOLOv8使用CSPNet背心和增强的FPN+PAN颈显著提高了特征提取和多尺度目标检测,使其成为实时应用的 formidable 模型。切换到 Anchor-Free 框方法以及集成先进的像拼图和mixup等数据增强技术,进一步提升了它在各种数据集上的准确性和鲁棒性。此外,引入了以开发者为中心的工具,包括一个统一的Python包和CLI,简化了模型的可用性,使其适用于各种硬件平台。
在Microsoft COCO 和 Roboflow 100等数据集上的基准测试结果表明,YOLOv8具有出色的准确性和效率,将其定位为当前的目标检测解决方案的state-of-the-art。随着对实时、高精度目标检测的需求的增长,YOLOv8作为一种多才多艺的功能强大的模型,非常适用于研究和工业应用[28, 29, 30]。未来的发展预计将在这些改进的基础上进行,进一步 fine-tune YOLOv8 的能力,并将其影响扩展到计算机视觉领域的 landscape。
作者:小书童
来源:集智书童
推荐阅读
- SGLang:LLM推理引擎发展新方向
- CUDA-MODE课程笔记 第7课: Quantization Cuda vs Triton
- CUDA-MODE 第一课课后实战(上)
- 一文弄懂 LLM 结构化数据生成原理
欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区嵌入式AI专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。