相关系列:
目标检测 | yolov1 原理和介绍
目标检测 | yolov2/yolo9000 原理和介绍
目标检测 | yolov3 原理和介绍
目标检测 | yolov4 原理和介绍
目标检测 | yolov5 原理和介绍
目标检测 | yolov6 原理和介绍
目标检测 | yolov7 原理和介绍
目标检测 | yolov8 原理和介绍
目标检测 | yolov9 原理和介绍
目标检测 | yolov10 原理和介绍
IEEE链接:https://ieeexplore.ieee.org/document/10533619
YOLOv8相较于YOLOv7引入了一系列改进,这些改进主要集中在以下几个方面:
- 1.注意力机制:YOLOv8采用了多种注意力机制来增强模型的特征提取能力,如ECA(Efficient Channel Attention)、GAM(Global Attention Mechanism)等,这些注意力机制有助于模型更好地关注图像中的关键信息,提高检测精度。
- 2.卷积层优化:YOLOv8在卷积层上进行了创新,例如使用可变形卷积(Deformable Convolution)和动态卷积(Dynamic Convolution)等技术,这些技术可以提高模型对不同形状和大小目标的适应性。
- 3.主干网络改进:YOLOv8的主干网络也进行了优化,如使用MobileNetV4等轻量化网络结构,以减少模型的计算量并提高检测速度。
- 4.特征融合模块:YOLOv8引入了新的或改进的特征融合模块,例如BiFPN(Bidirectional Feature Pyramid Network)和AFPN(Asynchronous Feature Pyramid Network),这些模块有助于提高模型对多尺度目标的检测能力。
- 5.检测头改进:YOLOv8在检测头也进行了创新,例如使用RT-DETR(Routing Transformer for Detection)等技术,这些技术可以改善模型在不同尺寸目标上的检测效果。
- 6.损失函数和IoU优化:YOLOv8对损失函数和IoU(Intersection over Union)计算方法进行了改进,以提高模型的回归精度和检测性能。
- 7.NMS和其他模块的改进:YOLOv8还对非极大值抑制(Non-Maximum Suppression, NMS)等其他模块进行了优化,以提高检测的准确性和效率。
- 8.轻量化设计:YOLOv8注重模型的轻量化设计,使其更适合在资源受限的设备上运行,例如使用VanillaNet等极简主义网络架构。
- 9.多尺度检测能力:YOLOv8通过改进,如使用SPD-Conv(Spatial Pyramid Depthwise Convolution)等技术,增强了对小目标和多尺度目标的检测能力。
- 10.优化器改进:YOLOv8还可能采用了新的优化器,如Lion等,以进一步提高训练效率和模型性能。
近年来,You Only Look Once (YOLO)系列目标检测算法因其在实时应用中的速度和准确性而受到广泛关注。本文提出了一种新的目标检测算法YOLOv8,它建立在以前迭代的基础上,旨在进一步提高性能和鲁棒性。受到从YOLOv1到YOLOv7的YOLO架构演变的启发,以及从YOLOv5和YOLOv6等模型的比较分析中获得的见解,YOLOv8结合了关键创新,以实现最佳的速度和准确性。利用注意力机制和动态卷积,YOLOv8引入了专门为小物体检测量身定制的改进,解决了YOLOv7中突出的挑战。此外,语音识别技术的集成增强了算法对基于视频的对象检测的能力,如YOLOv7所示。所提出的算法经过严格的评估,以最先进的基准,显示出卓越的性能,在检测精度和计算效率方面。在不同数据集上的实验结果证实了YOLOv8在不同场景下的有效性,进一步验证了其在实际应用中的适用性。本文通过介绍YOLOv8作为一种通用的高性能算法,为目标检测研究的持续进步做出了贡献,该算法有望满足计算机视觉系统不断发展的需求。
在计算机视觉领域,识别物体可能是一项重要而复杂的任务,其应用遍及安全、观察、自动驾驶汽车、机器人和医学成像等领域。物体定位的目标是在图片或录音中找到并分类物体,给出它们的边界框和名称。有两种主要的抗议定位方法:两阶段方法和一阶段方法。两阶段方法,如R-CNN、Fast R-CNN和Faster R-CNN,首先生成一组区域推荐,然后使用分类器和回归器对其进行细化。另一方面,像SSD、RetinaNet和YOLO这样的单阶段策略特别预见了输入图片中的边界框和名称,从而省去了对区域设置建议的需求。尽管单阶段方法通常比两阶段策略更快、更简单,但它们通常在准确性和稳健性上有所妥协。
YOLO (You only Look Once)是一种关键的单阶段抗议发现计算,由Redmon和Farhadi于2017年提出[1]。YOLO将输入图片分割成一个单元格网络,并预测固定数量的边界框和每个单元格的确定性分数。它也预测每个边界框的教训概率,并将它们与确定性分数结合起来,以提供最终的检测结果。YOLO以其在大型和中型对象上的速度和令人信服的执行而闻名,但它也有一定的障碍,例如moo审查、粗略的定位和对小型对象的执行差等。
自YOLO开始以来,已经提出了各种变化和改进,以解决其障碍并提高其执行力。重要案例包括YOLOv2、YOLOv3、YOLOv4、YOLOv5、YOLOv6和YOLOv7[11]。这些形式整合了不同的程序和发展,如停留盒、多尺度预测、特征金字塔系统、剩余连接(residual connections)、考虑工具(consideration instruments)、能量卷积(energetic convolutions)和语音识别。这些策略提高了YOLO的精度、强度和有效性,使其更适用于不同的环境和应用。考虑到所有因素,仍然存在鼓励进步和优化的空间,特别是对于具有挑战性的场景,包括小对象,阻塞对象和复杂的基础。
在本文中,我们介绍了YOLOv8,这是一种现代的目标检测算法,它建立在过去的YOLO形式的基础上,并整合了现代的亮点和改进。YOLOv8致力于实现物体定位的最高速度和精度,同时保证强度和稳健性。
YOLO (You Only Look Once)是一种单阶段目标检测算法,最初由Redmon和Farhadi于2017年提出[1]。YOLO算法将输入图像划分为网格单元,并为每个单元预测预定数量的边界框和置信度分数。此外,YOLO预测每个边界框的类概率,并将它们与置信度分数合并,以产生最终的检测结果。YOLO以其令人印象深刻的速度和在大中型物体上的有效性能而闻名。然而,它确实有一些缺点,比如召回率低、定位不精确以及在小对象上的次优性能。
YOLOv2[1]是对YOLO的进一步改进,提出了一些提高算法精度和效率的步骤。最常用的几种方法有:
YOLOv3[2]是YOLO的另一个改进版本,它提高了算法的执行力和活力。一些最重要的升级是:
YOLOv4[3]是YOLO的最新版本,它应用了不同的前沿策略和进步来提升目标检测的速度和准确性。一些最重要的技术和进步是:
基于PyTorch框架,YOLOv5[4]可能是YOLO的后续改编,它为对象检测提供了一个直接且适应性强的解决方案。它是一个独立的项目,结合了过去的YOLO变化的一些概念和策略,而不是YOLO系列的正式延续。YOLOv5有一些后继特性和升级:
YOLOv6[5]可能是YOLO的后续改编,它基于TensorFlow框架,旨在提高复杂环境下目标检测的执行和强度。此外,YOLOv6也不是YOLO系列的正式延续,而可能是一个独立的项目,它提供了一些新的特性和对YOLO算法的升级。YOLOv6的一些最重要的功能和改进是:
YOLOv7[6][9]是YOLO的最新版本,它基于PyTorch框架,旨在达到最佳的目标检测速度和精度。此外,YOLOv7也不是YOLO系列的正式延续,而可能是一个独立的项目,它结合了不同的最先进的策略和进步来优化YOLO算法。YOLOv7的一些最常用的方法和发展是:
提出的算法YOLOv8是YOLO (You only Look Once)系列目标检测模型中的最新进展。它建立在YOLO9000的基础工作上,YOLO9000以其卓越的速度和强度而闻名。随后的调整,YOLOv3和YOLOv4,鼓励了模型的执行取得了长足的进步,特别是在复杂的环境中,并实现了目标检测的最佳速度和准确性。
YOLOv8的结构基本上分为两个关键部分:骨干网络和检测头。骨干网的部分任务是从大量尺度的输入图像中提取各种丰富的特征。另一方面,检测头的任务是合并这些特征,并为边界框创建不同的高质量预测。
YOLOv8的骨干网基于高效率网络(EfficientNet)[12],这可能是一种最先进的神经网络架构,可以在各种计算机视觉任务上实现高熟练度和高性能。effentnet基于复合扩展的思想,它可以是一种以平衡的方式扩展网络宽度、深度和确定度的策略。effentnet使用了一个名为effentnet - b0的基础网络,它可能是一个有29层的卷积神经网络,并使用了带有挤压和激励模块的修改剩余块。此时,effentnet通过使用复合缩放系数将基础网络扩展为各种变体,例如effentnet - b1、effentnet - b2、effentnet - b7。复合标度系数由网格搜索决定,优化了精度和效率之间的权衡。
YOLOv8采用了高效网b4作为主干网络,它可能是高效网b0的扩展版,有71层和1900万个参数。之所以选择EfficientNet-B4,是因为它在速度和精度之间提供了很好的平衡,而且它可以从输入图像中提取丰富的多尺度特征。输入图片被调整为512 × 512像素,之后被鼓励进入骨干网络。骨干网相对于网络的不同层次,输出5个不同分辨率和维度的特征图。特征图分别表示为P3、P4、P5、P6、P7,其中P3分辨率最高,P7分辨率最低。此时,包含映射被传递到位置头以进行进一步处理。
采用CSPDarknet主干网络的增强版[15],将跨阶段部分(CSP)网络融入Darknet架构中。主干网络将每个阶段的特征图分成两部分。一部分经过密集卷积块处理,另一部分直接与密集块的输出进行拼接。这种设计在保持准确性的同时降低了计算复杂性。主干网络由多个CSP块组成,每个块包含分割操作、密集块、过渡层和拼接操作。
采用路径聚合网络(PANet)[16, 17] Neck 网络,以改善网络不同层次间的信息流和特征融合。主要方面包括:
PANet在特征金字塔网络(FPN)设计的基础上,增加了额外的自底向上的路径到传统的自顶向下路径。
它包括用于特征提取的自底向上的路径、用于语义特征传播的自顶向下的路径以及用于进一步特征层次增强的额外自底向上的路径。
Anchor-Free 点检测Head:与依赖预定义 Anchor 点框的传统YOLO模型不同,YOLOv8使用 Anchor-Free 点检测Head[19]。这简化了模型架构并减少了计算开销,从而加快了推理速度。 Anchor-Free 点方法还提高了模型检测小型和密集物体能力,这对边缘应用很有利。
YOLOv8的检测头基于NAS-FPN[13],是一种自动生成特征金字塔网络进行目标检测的神经架构搜索方法。特征金字塔网络是结合骨干网不同层次的特征来产生多尺度预测的网络。NAS-FPN采用强化学习算法寻找最优的特征融合技术,该技术由一组组合操作和连接组成。NAS-FPN输出一个特征金字塔网络,称为NAS-FPN- cell,它可能是一个子网络,可以重新散列和堆叠以形成一个更大的网络。
YOLOv8使用NAS-FPN-Cell作为检测头,它可以是一个六层256通道的子网。NAS-FPN-Cell将主干网的5个特征图作为输入,并对其进行一系列融合操作和连接。组合操作包括元素智能扩展、元素智能乘法、全局平均池化、最大池化和连接。这些连接以自顶向下和自底向上的方式将骨干网中不同层次的特征连接起来。NAS-FPN-Cell输出5个具有相同确定度和维度的特征图,与不同比例的输入图片进行比较。特征图记为P3 ', P4 ', P5 ', P6 ', P7 ',其中P3 '的比例尺最小,P7 '的比例尺最大。然后利用特征映射生成边界框预测。
YOLOv8使用了与YOLOv3[2]类似的预测图,它为每个特征映射预测固定数量的边界框和置信度分数。YOLOv8预测每个特征图的三个边界框和置信度分数,每个输入图片的边界框和置信度分数加起来多达15个。YOLOv8还预测了每个边界框的类概率,并将它们与置信度分数结合得到最终的检测结果。YOLOv8使用锚盒来提高检测精度,锚盒是预定义的边界盒形状,用于预测边界盒的尺寸。YOLOv8使用9个锚盒,这些锚盒是通过对准备信息使用k-means聚类来确定的。锚盒被分配到与其尺度一致的不同特征图上,这样较小的锚盒被分配到较小的特征图上,反之亦然。
YOLOv8使用高级激活函数如SiLU(Swish),代替Leaky ReLU,改进梯度流动和特征表现力。这种设计降低了计算复杂性,增强了梯度流动,提高了特征复用,同时减少了模型大小,保持了高准确性,这些特性对于边缘部署特别有利,因为在边缘部署中计算资源通常有限。
YOLOv8对以前的YOLO变体提供了一些现代特性和改进,例如新的损失函数,现代信息增强方法和现代评估度量。这些特性和升级计划是为了提高算法的执行和鲁棒性,并解决现有YOLO变体的一些限制和挑战。
YOLOv8在提高预测准确性和效率的后处理技术方面进行了改进:* 改进的非最大值抑制(NMS):YOLOv8采用了一种增强的NMS算法[18],减少了假阳性数量并提高了目标检测的精确度。这是通过对重叠边界框的更好处理和最相关检测的选择优化来实现的。
混合精度训练:YOLOv8利用混合精度训练,结合16位和32位浮点运算。这种技术加快了训练过程,减少了内存使用,同时不牺牲模型精度。混合精度训练对于计算能力和内存有限的边缘设备特别有利。
超参数优化:YOLOv8包括自动超参数优化,调整模型的超参数以达到最佳性能。这个过程涉及运行多个具有不同超参数设置的训练实验,并选择最佳配置。自动超参数优化节省了时间,并确保模型在各种任务和数据集上表现良好。
YOLOv8采用了一种称为Focal loss的现代损失函数[7],这是一种以困难的插图为中心的损失工作,降低了简单案例的影响。焦损使用一个调节因子来降低对分类良好的插图的贡献,以及一个缩放因子来调整阳性和阴性样本。焦点损失对于提高检测结果的召回率和精度具有重要意义,特别是对于不平衡和有噪声的数据集,其中大部分情况是简单的或不相关的。Focal Loss最初由Lin等人[7]针对RetinaNet算法提出,该算法可能是一种利用锚盒和特征金字塔网络的单阶段目标检测算法。YOLOv8接收Focal Loss以提高算法的执行力和强度,并减少假阳性和假阴性。
YOLOv8使用了一种新的数据增强方法Mixup[14],它可以是一种信息增强方法,将两张图像及其标签混合在一起,生成新的图像和标签。混合可以扩展准备数据的不同质量和复杂性,提高模型的泛化和强度。混合也可以减少模型的过拟合和记忆,并推进对隐藏信息的执行。Mixup最初由Zhang等人[14]提出,作为一种通用的图像分类数据增强策略。YOLOv8将Mixup应用于对象检测,并将其扩展到处理边界框和许多类。
YOLOv8采用了一种新的评估指标,称为跨尺度平均精度(APAS)[15],它可以衡量物体在不同尺度上的检测精度。APAS是标准平均精度(AP)度量的扩展,它测量单个尺度的对象检测的准确性。APAS考虑了目标尺度的变化,计算了小、中、大等不同尺度范围的AP。然后,APAS对不同等级范围的ap进行平均,得到最终的APAS分数。APAS可能是一个更全面合理的目标检测指标,因为它反映了算法在不同物体大小和形状下的性能。APAS最初由Huang等人[15]提出,作为COCO数据集的度量,COCO数据集可能是一个具有挑战性的数据集,包含80个类和不同的对象大小和形状。
在本文中,将我们的策略与过去的YOLO变化和其他最先进的目标检测策略进行比较,并利用一些基准数据集(如COCO, PASCAL VOC和WIDER FACE)在不同的度量和场景下评估我们策略的执行和生产力。
以下数据集用于训练和测试我们的YOLOv8模型:
以下指标衡量我们的YOLOv8模型的性能和效率:
我们在COCO数据集上训练和测试YOLOv8模型,使用官方的train2017、val2017和test-dev2017分割。我们使用APAS指标在COCO数据集上评估我们的方法,遵循官方评估协议。我们还报告了FPS指标来衡量我们的方法在COCO数据集上的速度,使用单个NVIDIA RTX 3090 GPU。
从表中可以看出,我们的YOLOv8模型在所有方法中表现最好,APAS得分为52.7,比之前的最佳方法YOLOv7提高了2.4分。我们的YOLOv8模型在所有方法中也达到了最好的速度,FPS得分为150,比之前的最佳方法YOLOv5快了10帧。这些结果表明,我们的YOLOv8模型在COCO数据集上实现了最佳的目标检测速度和精度,并且在这两个指标上都优于现有方法。
本文介绍了YOLOv8,这是一种创新的目标检测算法,通过纳入新的特性和改进,扩展了以前的YOLO版本的功能。YOLOv8的目标是优化目标检测的速度和精度,同时确保鲁棒性和稳定性。我们在多个基准数据集上进行了全面的实验,包括COCO、PASCAL VOC和WIDER FACE,并将我们的方法与以前的YOLO版本和其他领先的目标检测方法进行了基准测试。结果表明,YOLOv8在各种度量和场景的性能和效率方面超越了现有的方法。展望未来,我们计划针对不同的硬件平台(如边缘设备、移动电话和云api)量身定制我们的方法,为一系列应用程序和领域提供通用且可扩展的解决方案。我们还旨在通过整合来自目标检测和计算机视觉领域的最新技术和创新来增强我们的方法,以跟上该领域的最新进展。