A COMPREHENSIVE REVIEW OF YOLO: FROM YOLOV1 TO YOLOV8 AND BEYOND
- 摘要
- 1 介绍
- 2 Yolo应用跨越不同领域
- 3 对象检测指标和非极大值抑制( NMS )
- 4 YOLO:You Only Look Once
- 5 YOLOv2:Better,Faster,and Stronger
- 6 YOLOv3
- 7 Backbone,Neck,and Head
- 8 YOLOv4
- 9 YOLOv5
- 10 Scaled-YOLOv4
- 11 YOLOR
- 12 YOLOX
- 13 YOLOv6
- 14 YOLOv7
- 15 DAMO-YOLO
- 16 YOLOv8
- 17 PP-YOLO,PP-YOLOv2,and PP-YOLOE
- 18 Discussion
- 19 The future of YOLO
- 20 Acknowledgments
- 参考文献
yolo的全面回顾:从yolov1到yolov8及以后
摘要
YOLO已经成为机器人、无人驾驶汽车和视频监控应用的中央实时目标检测系统。我们对YOLO的演化进行了全面的分析,考察了从原始YOLO到YOLOv8的每一次迭代中的创新和贡献。我们首先介绍了标准度量和后处理;然后,我们讨论了每个模型在网络架构和训练技巧方面的主要变化。最后,我们总结了YOLO发展中的重要教训并对其未来进行了展望,突出了增强实时目标检测系统的潜在研究方向
1 介绍
实时目标检测已经成为许多应用中的关键组成部分,涵盖了自动驾驶、机器人、视频监控和增强现实等各个领域。在各种目标检测算法中,YOLO(你只看一次)框架以其出色的速度和精度平衡脱颖而出,实现了图像中目标的快速可靠识别。自问世以来,YOLO家族经历了多次迭代,每个版本都建立在以前的版本上,以解决限制和提高性能。本文旨在全面回顾YOLO框架的发展,从最初的YOLOv1到最新的YOLOv8,阐明每个版本的关键创新、差异和改进。
论文首先探讨了原始YOLO模型的基本概念和体系结构,为后续YOLO家族的发展奠定了基础。接下来,我们深入探究每个版本中引入的改进和增强,从YOLOv2到YOLOv8。这些改进包括网络设计、损失函数修改、锚点框调整和输入分辨率调整等各个方面。通过考察这些发展,我们旨在对YOLO框架的演变及其对目标检测的影响提供一个整体的理解。
除了讨论每个YOLO版本的具体进步之外,本文还强调了在整个框架开发过程中出现的速度和准确性之间的权衡。这突出了在选择最合适的YOLO模型时考虑具体应用的上下文和需求的重要性。最后,我们对YOLO框架的未来发展方向进行了展望,探讨了进一步研究和开发的潜在途径,这将塑造实时目标检测系统的进展。
2 Yolo应用跨越不同领域
YOLO的实时目标检测能力在无人驾驶系统中发挥了不可估量的作用,能够快速识别和跟踪各种物体,如车辆、行人[ 1 , 2]、自行车和其他障碍物[ 3、4、5、6]。这些能力已经被应用多个领域,包括监控视频序列中的动作识别[ 7 ] [ 8 ]、运动分析[ 9 ]、人机交互[ 10 ]等。
YOLO模型已经在农业中用于检测和分类作物[ 11、12]、害虫和疾病[ 13 ],辅助精准农业技术和自动化耕作过程。它们也被用于生物识别、安全和人脸识别系统[ 14、15]中的人脸检测任务。
在医学领域,YOLO已被用于癌症检测[ 16、17]、皮肤分割[ 18 ]和药丸识别[ 19 ],提高了诊断精度和更有效的治疗过程。在遥感领域,[ 20、21、22、23]已被用于卫星和航空影像的目标检测和分类,辅助土地利用制图、城市规划和环境监测等。
安全系统已经集成了YOLO模型用于实时监控和分析视频馈送,允许快速检测可疑活动[ 24 ]、社交距离和口罩检测[ 25 ]。该模型还被应用于表面检测,以检测缺陷和异常,加强制造和生产过程中的质量控制。
在交通应用中,YOLO模型已被用于车牌检测[ 29 ]、交通标志识别[ 30 ]等任务,为智能交通系统和交通管理解决方案的发展做出了贡献。它们已被用于野生动物检测和监测,以识别濒危物种,用于生物多样性保护和生态系统管理[ 31 ]。最后,YOLO在机器人应用[ 32、33]和无人机目标检测[ 34、35]中得到了广泛的应用。
3 对象检测指标和非极大值抑制( NMS )
平均精度( Average Precision,AP ),传统上称为平均精度( Mean Average Precision,mAP ),是评价目标检测模型性能的常用指标。它衡量了所有类别的平均精度,提供了一个单一的值来比较不同的模型。COCO数据集没有区分AP和AP。在本文的其余部分,我们将这个度量称为AP。
在YOLOv1和YOLOv2中,用于训练和基准测试的数据集是PASCAL VOC 2007和VOC 2012 [ 36 ]。然而,从YOLOv3开始,使用的数据集是Microsoft COCO(语境中的常见对象) [ 37 ]。对于这些数据集,AP的计算方法不同。以下部分将讨论AP背后的原理并解释它是如何计算的。
3.1 AP是如何工作的?
AP度量基于精确召回度量,处理多个对象类别,并使用交并比( Intersection over Union,IoU )定义一个正预测。
精确率( Precision )和召回率( Recall ):精确率衡量模型阳性预测的准确性,而召回率衡量模型正确识别的实际阳性病例的比例。在准确率和召回率之间往往存在权衡;例如,增加检测对象的数量(更高的召回率)会导致更多的假阳性(更低的准确率)。为了考虑这种权衡,AP度量包含了不同置信度阈值下的精确率-召回率曲线。该度量通过考虑精确率-召回率曲线下的面积,提供了精确率和召回率的平衡评估。
处理多个目标类别:目标检测模型必须识别和定位图像中的多个目标类别。AP度量通过分别计算每个类别的平均精度( AP ),然后取这些AP在所有类别中的平均值(这就是为什么它也被称为平均精度)来解决这个问题。这种方法保证了模型的性能是针对每个类别单独进行评估的,提供了更全面的模型整体性能的评估。
交并比:目标检测旨在通过预测边界框来准确定位图像中的目标。AP度量结合了交并比( Intersection over Union,IoU )度量来评估预测边界框的质量。IoU为预测边界框与真实边界框(见图2)的交集面积与并集面积的比值。它度量了地面真值和预测边界框之间的重叠度。COCO基准考虑多个IoU阈值来评估模型在不同定位精度水平下的性能。
图2:交并比( Intersection over Union,IoU )。a )用两个盒子的交集除以盒子的并集计算IoU;B )不同箱体位置的3种不同IoU值示例。
3.2 计算AP
AP在VOC和COCO数据集中的计算方式不同。在本节中,我们描述了如何在每个数据集上计算它。
VOC数据集
该数据集包括20个对象类别。为了计算VOC中的AP,我们遵循以下步骤:
- 对于每个类别,通过改变模型预测的置信度阈值,计算准确率-召回率曲线。
- 使用精度-召回率曲线的插值11点采样计算每个类别的平均精度( AP )。
- 取所有20个类别的平均精度( AP )计算最终的平均精度( AP )
Microsoft COCO 数据集
该数据集包括80个对象类别,使用了更为复杂的AP计算方法。它不使用11点插值,而是使用101点插值,即以0.01为增量计算从0到1的101个召回阈值的精确率。此外,AP是通过对多个IoU值进行平均得到的,而不仅仅是一个,除了一个常见的AP度量AP50,它是单个IoU阈值为0.5的AP。在COCO中计算AP的步骤如下:
- 对于每个类别,通过改变模型预测的置信度阈值来计算精确率-召回率曲线
- 使用101个回溯阈值计算每个类别的平均精度( AP )。
- 计算不同交并比( Intersection over Union,IoU )阈值下的AP,通常取0.5 ~ 0.95,步长为0.05。较高的IoU阈值需要更准确的预测才能被认为是真正的阳性。
- 对于每个IoU阈值,取所有80个类别的AP的平均值
- 最后,通过平均每个IoU阈值下计算的AP值来计算整体AP。
由于AP计算的差异,很难直接比较两个数据集中目标检测模型的性能。目前的标准使用COCO AP,因为它更细粒度地评估了模型在不同IoU阈值下的表现
3.3 非最大抑制 ( NMS )
非极大值抑制( NMS )是目标检测算法中使用的后处理技术,用于减少重叠包围框的数量,提高整体检测质量。目标检测算法通常在同一目标周围生成多个具有不同置信度的边界框。NMS过滤掉冗余和不相关的边界框,只保留最准确的边界框。算法1描述了该过程。图3展示了包含多个重叠边界框的目标检测模型的典型输出和NMS后的输出。
我们准备开始描述不同的YOLO模型。
4 YOLO:You Only Look Once
Joseph Redmon等人的YOLO发表于CVPR 2016 [ 38 ]。它首次提出了一种实时的端到端目标检测方法。YOLO的名字是" You Only Look Once ",指的是它可以通过一个网络完成检测任务完成检测任务,而不是像以前的方法那样,使用滑动窗口后面跟着一个每张图像需要运行数百或数千次的分类器,或者更先进的方法,将任务分为两步,第一步用对象或区域建议来检测可能的区域,第二步在建议上运行一个分类器。与Fast R- CNN [ 39 ]使用两个单独的输出,概率分类和盒子坐标回归相比,YOLO使用了更直接的仅基于回归的输出来预测检测输出。
4.1 Yolov1是如何发挥作用的?
YOLOv1通过同时检测所有的边界框来统一目标检测步骤。为此,YOLO将输入图像划分为一个S × S的网格,并预测同一个类的B个边界框,以及每个网格元素对C个不同类的置信度。每个包围盒预测由五个值组成:Pc,bx,by,bh,bw,其中Pc是对包围盒的置信度评分,反映了模型对包围盒包含度以及框的准确性。bx和by坐标为方框相对于格网单元的中心,bh和bw为方框相对于全图的高度和宽度。YOLO的输出为S × S × ( B × 5 + C )的张量,可选择性地使用非极大值抑制( NMS )去除重复检测。
在原始的YOLO论文中,作者使用了包含20类( C = 20 )的PASCAL VOC数据集[ 36 ];一个7 × 7的网格( S = 7 )和每个网格单元最多2个类( B = 2 ),给出一个7 × 7 × 30的输出预测。
图4显示了一个简化的输出向量,它考虑了一个3 × 3的网格,3个类,每个网格有8个值。在这种简化的情况下,YOLO的输出为3 × 3 × 8。
YOLOv1在PASCAL VOC2007数据集上取得了63.4的平均精度( AP )。
4.2 YOLOv1 框架
YOLOv1架构包括24个卷积层和两个预测边界框坐标和概率的全连接层。除了最后一层使用线性激活函数外,所有的层都使用了整流线性单元激活[ 40 ]。受谷歌公司[ 41 ]和Network in Network [ 42 ]的启发,YOLO使用1 × 1的卷积层来减少特征图的数量并保持较低的参数数量。作为激活层,表1描述了YOLOv1架构。作者还介绍了一种较轻的模型FastYOLO,由9个卷积层组成。
4.3 YOLOv1 训练
作者使用ImageNet数据集以224 × 224的分辨率预训练YOLO的前20层[ 43 ]。然后,他们使用PASCAL VOC 2007和VOC 2012数据集[ 36 ],以448 × 448的分辨率增加后4层随机初始化权重并微调模型,以增加细节,从而实现更精确的目标检测。
对于增强,作者使用了不超过输入图像大小20 %的随机缩放和平移,以及HSV颜色空间中上端因子为1.5的随机曝光和饱和。
YOLOv1使用了由多个误差平方和组成的损失函数,如图5所示。在损失函数中,λcoord = 5是一个比例因子,赋予包围盒预测更重要的属性,λnoobj = 0.5是一个比例因子,降低不包含对象的盒子的重要性。
损失的前两项表示定位损失;它计算预测的边界框位置( x , y)和大小( w , h)中的误差。注意,这些误差只在包含object(用1objij表示)的方框中计算,只惩罚该网格单元中是否存在对象。第三项和第四项损失项表示信心损失;第三项度量了当目标在框( 1objij )中被检测到时的置信误差,第四项度量了当目标在框( 1noobjij )中未被检测到时的置信误差。由于大多数盒子是空的,这个损失由λ noobj项加权。最终的损失分量是分类损失,它衡量的是仅当对象出现在单元格( 1obji )时,每个类的类条件概率的平方误差。
图4:YOLO输出预测。该图描述了一个简化的YOLO模型,每个网格元素有一个3 × 3的网格,3个类和一个单类预测,产生一个8值的向量。
4.4 YOLOv1 优势与局限
YOLO的简单架构,加上其新颖的全图像单样本回归,使其比现有的目标检测器具有更高的实时性。
然而,虽然YOLO比任何目标检测器都要快,但与Fast R - CNN等先进方法相比,定位误差更大[ 39 ]。造成这种局限性的原因主要有三方面:
- 它最多只能检测到网格单元中的两个同类物体,限制了它对附近物体的预测能力。
- 它努力预测在训练数据中看不到纵横比的物体
- 由于下采样层的存在,它从粗糙的物体特征中学习。
表1:Yolo架构。该架构包含24个卷积层,将3 × 3卷积和1 × 1卷积相结合用于通道缩减。输出是一个全连接层,为每个网格单元生成一个7 × 7的网格,每个网格单元有30个值,以容纳20个类别的10个包围盒坐标( 2个盒子)。
5 YOLOv2:Better,Faster,and Stronger
YOLOv2由Joseph Redmon和Ali法尔哈迪发表在CVPR 2017 [ 44 ]中。在原有YOLO的基础上做了几处改进,使其更加完善,保持相同的速度,检测9000个类别的能力更强! 。改进之处有以下几点:
- 批归一化-----所有卷积层上的批归一化改善了收敛性,并充当正则化器以减少过拟合。
- 高分辨率分类器 ------ 与YOLOv1一样,他们使用ImageNet在224 × 224上预训练模型。然而,这次他们在分辨率为448 × 448的ImageNet上微调了10个历元的模型,提高了网络在更高分辨率输入上的性能。
- 全卷积--------他们去除了密集层,使用了全卷积架构。
- 使用锚框来预测边界框------ 它们使用一组先验框或锚框,这些具有预定义形状的框用于匹配对象的原型形状,如图6所示。为每个网格单元定义多个锚点框,系统预测每个锚点框的坐标和所属类别。网络输出的大小与每个网格单元的锚框数量成正比。
- 维度聚类--------选择好的先验框有助于网络学习预测更准确的边界框。作者对训练的边界框进行k - means聚类以找到好的先验。他们选择了五个先验框,在召回率和模型复杂度之间提供了良好的折衷。
- 直接位置预测------ 与其他预测偏移量的方法不同[ 45 ],YOLOv2遵循相同的原理,预测相对于网格单元的位置坐标。网络为每个单元格预测5个包围盒,每个包围盒有5个值tx,ty,tw,th,to,其中to等价于YOLOv1中的P c,得到最终的包围盒坐标如图7所示。
- 细粒度特征------与YOLOv1相比,YOLOv2去除了一个池化层,对于416 × 416的输入图像,可以得到一个13 × 13的输出特征图或网格。YOLOv2还使用了一个直通层,该层采用26 × 26 × 512的特征图,并通过将相邻的特征叠加到不同的通道中进行重组,而不是通过空间下采样来丢失它们。这样生成的13 × 13 × 2048个特征图在通道维度上与分辨率较低的13 × 13 × 1024个图进行拼接,得到13 × 13 × 3072个特征图。建筑详图见表2。
- 多尺度训练----------由于YOLOv2没有使用全连接层,因此输入可以是不同大小的。为了使YOLOv2对不同的输入大小具有鲁棒性,作者随机训练模型,将输入大小从320 × 320增加到608 × 608 每10个批次。
通过这些改进,YOLOv2在PASCAL VOC2007数据集上取得了78.6 %的平均精度( AP ),而YOLOv1的平均精度为63.4 %。
图5:YOLO代价函数:包括包围盒坐标的定位损失、物体有无的置信度损失、类别预测精度的分类损失。
5.1 YOLOv2 Architecture
YOLOv2采用的主干架构称为 Darknet- 19,包含19个卷积层和5个最大池化层。与YOLOv1的架构类似,在Network in Network [ 42 ]中受到启发,使用3 × 3之间的1 × 1卷积来减少参数数量。此外,如前所述,他们使用批归一化来正则化和帮助收敛。
表2展示了带有目标检测头的整个Darknet-- 19主干。使用PASCAL VOC数据集时,YOLOv2预测5个边界框,每个边界框有5个值,20个类。
目标分类头将后四个卷积层替换为一个具有1000个滤波器的单个卷积层,之后是一个全局平均池化层和一个Softmax。
图6:锚箱. YOLOv2为每个网格单元定义了多个锚框。
图7:包围盒预测. 预测的tx,ty值通过sigmoid函数,并与网格单元cx,cy的位置相抵,得到盒子的中心坐标。最终箱体的宽度和高度分别采用etw和eth标定的先验宽度pw和高度ph,其中tw和th由YOLOv2预测。
表2:Yolov2架构。Darknet- 19主干(第1 ~ 23层)加上最后四个卷积层和直通层组成的检测头,将第17个输出26 × 26 × 512的特征重组为13 × 13 × 2048,并与第25层级联。最后的卷积生成一个13 × 13的网格,包含125个通道以容纳5个边界框的25个预测( 5个坐标+ 20个类)。
5.2 YOLO9000是较强的YOLOv2
作者在同一篇论文中介绍了一种训练联合分类和检测的方法。它使用COCO [ 37 ]中的检测标记数据来学习边界框坐标和ImageNet中的分类数据,以增加其能够检测的类别数。在训练过程中,他们将两个数据集结合起来,当使用检测训练图像时,它反向传播检测网络,当使用分类训练图像时,它反向传播架构的分类部分。结果是一个YOLO模型能够检测出超过9000个类别,因此命名为YOLO9000。
6 YOLOv3
YOLOv3 [ 46 ]由Joseph Redmon和Ali法尔哈迪于2018年发表在ArXiv上。它包括重大的变化和一个更大的架构,以达到与最先进的同时保持实时性能。接下来,我们描述了YOLOv3的变化。
- 包围盒预测。与YOLOv2一样,网络为每个边界框tx、ty、tw和th预测四个坐标;然而,这一次,YOLOv3使用逻辑回归预测每个边界框的客观性得分。该评分对于与地面真值重合度最高的锚框为1,其余锚框为0。与Faster R- CNN [ 45 ]不同,YOLOv3只为每个真值对象分配一个锚框。此外,如果没有为对象分配锚框,则只会导致分类损失,而不会导致定位损失或置信度损失。
- 类预测。他们不使用softmax进行分类,而是使用二进制交叉熵训练独立的逻辑分类器,并将问题建模为多标签分类。这种变化允许将多个标签分配到同一个框中,这可能发生在一些具有重叠标签的复杂数据集上[ 47 ]。例如,同一个对象可以是一个人和一个人。
- 新骨干。YOLOv3具有一个较大的特征提取器,由53个具有残差连接的卷积层组成。6.1节更详细地描述了体系结构。
- 空间金字塔池化( SPP )虽然没有在论文中提及,但作者也添加了骨干修改的SPP块[ 48 ],它在不进行子采样( step = 1 )的情况下串联多个最大池化输出,每个核大小为k × k,其中k = 1,5,9,13,允许更大的感受野。该版本被称为YOLOv3 - spp,是将AP50提高2.7 %的最佳版本。
- 多尺度预测。与特征金字塔网络[ 49 ]类似,YOLOv3在三个不同的尺度上预测三个框。6.2节详细介绍了多尺度预测机制。
- 包围盒先验。与YOLOv2一样,作者也使用k - means来确定锚框的边界框先验。不同的是,在YOLOv2中,他们每个单元格一共使用了5个先验框,而在YOLOv3中,他们使用了3个先验框用于3种不同的尺度。
6.1 Yolov3架构
YOLOv3中提出的架构主干称为Darknet- 53。它将所有的最大池化层替换成了纹状卷积,并增加了残差连接。总共包含53个卷积层。图8展示了架构细节。
Darknet- 53主干获得了与ResNet - 152相当的Top - 1和Top - 5精度,但速度快了近2倍。
图8:Yolov3 Darknet- 53骨架。YOLOv3的架构由53个卷积层组成,每个卷积层都有批量归一化和Leaky Relu激活函数激活。此外,残差连接将整个网络中1 × 1卷积的输入与3 × 3卷积的输出连接起来。这里展示的架构仅由主干构成;它不包括由多尺度预测组成的检测头.
6.2 YOLOv3 Multi-Scale Predictions
除了更大的结构,YOLOv3的一个重要特征是多尺度预测,即在多个网格尺寸下进行预测。这有助于获得更精细的细节框,并显著提高对小对象的预测,这是YOLO早期版本的主要弱点之一。
图9所示的多尺度检测架构工作如下:第一个输出标记为y1等价于YOLOv2输出,其中13 × 13的网格定义输出。第二个输出y2由暗网- 53的( Res × 4 )后输出和( Res × 8 )后输出串联而成。特征图具有不同的尺寸,即13 × 13和26 × 26,因此在级联之前有一个上采样操作。最后,第三个输出y3使用上采样操作将26 × 26的特征图与52 × 52的特征图级联
对于包含80个类别的COCO数据集,每个尺度提供一个形状为N × N × [ 3 × ( 4 + 1 + 80 ) ]的输出张量,其中N × N为特征图(或网格单元)的大小,3表示每个单元格的盒子,4 + 1包括4个坐标和客观性得分。
6.3 YOLOv3 Results
YOLOv3发布后,目标检测的基准从PASCAL VOC变为Microsoft COCO [ 37 ]。因此,从这里开始,所有的YOLO都在MS COCO数据集中进行评估。在20 FPS时,YOLOv3 - spp的平均精度AP为36.2 %,AP50为60.6 %,达到了目前的最好水平,速度提高了2倍。
图9:YOLOv3多尺度检测架构。Darknet- 53的输出分支为三个不同的输出,分别标记为y1、y2和y3,每个输出都增加了分辨率。最后的预测框使用非极大值抑制进行过滤。CBL( Convolution-BatchNorm-Leaky Relu激活函数)块包含一个具有批归一化和泄漏ReLU的卷积层。Res模块由1个CBL和2个CBL结构组成,采用等距连接,如图8所示。
7 Backbone,Neck,and Head
此时,物体探测器的架构开始由主干、颈部和头部三部分描述。图10所示为高层骨架、颈部和头部示意图。
主干负责从输入图像中提取有用的特征。它通常是在大规模图像分类任务上训练的卷积神经网络( CNN ),如ImageNet。主干捕获不同尺度下的层级特征,下层特征(例如,边缘和纹理)提取在较早的层,高层特征(例如,物体部分和语义信息)提取在较深的层。
颈部是连接骨干与头部的中间部件。它对主干提取的特征进行聚合和细化,往往侧重于增强跨不同尺度的空间和语义信息。颈部可以包括额外的卷积层,特征金字塔网络( FPN ) [ 49 ],或其他机制来改善特征的表示。
头部是目标探测器的最终组成部分;它负责根据骨架和颈部提供的特征进行预测。它通常由一个或多个任务特定的子网络组成,这些子网络执行分类、定位以及最近的实例分割和姿态估计。头部处理颈部提供的特征,为每个候选对象生成预测。最后,一个后处理步骤,如非极大值抑制( NMS ),过滤掉重叠的预测,只保留最有信心的检测。
在其余的YOLO模型中,我们将使用主干、颈部和头部来描述架构。
8 YOLOv4
图10:现代物体探测器的架构可以描述为主干、颈部和头部。
两年过去了,YOLO没有新的版本。直到2020年4月,Alexey博奇科夫斯基、Chien -药王和Hong - Yuan Mark Liao在ArXiv上发布了针对YOLOv4的论文[ 50 ]。起初,不同的作者提出了一个新的"官方"版本的YOLO感到奇怪;然而,YOLOv4保持了YOLO的理念- -实时、开源、单镜头和Darknet框架- -改进的效果非常理想,以至于社区迅速接受了这个版本作为官方的YOLOv4。
YOLOv4尝试了许多变化,包括赠品袋和特种配件袋,试图找到最佳平衡。自由组合( Bag-of-freebies )是一种只改变训练策略、增加训练成本而不增加推理时间的方法,最常见的是数据增强。另一方面,bag - of -特种配件是一种略微增加推理代价但显著提高准确率的方法。这些方法的例子包括扩大感受野的[ 48、51、52],结合特征的[ 53、49、54、55],以及后处理的[ 56、40、57、58]等。
我们将YOLOv4的主要变化总结为以下几点:
- 采用Bag - Of -特种配件( Bos )集成的增强型架构。作者尝试了ResNeXt50 [ 59 ]、EfficientNet-B3 [ 60 ]、darknet- 53等多种架构作为骨干。性能最好的架构是对YOLOv3 - spp中的darknet- 53进行跨阶段部分连接( CSPNet ) [ 61 ]和Mish activation函数[ 57 ]作为主干(见图11。对于颈部,他们使用了改进版的空间金字塔池化( SPP)) [ 48 ]的修改,以及YOLOv3中的多尺度预测,但使用了改进版的路径聚合网络( PANet ) [ 62 ]代替FPN和修改的空间注意力模块( SAM ) [ 63]。最后,对于检测头,他们使用了YOLOv3中的锚点。因此,将该模型命名为CSP暗网53 - PANet -SPP。在保持精度不变的情况下,暗网- 53增加的跨级部分连接( Cross-stage Partial Connection,CSP )有助于减少模型的计算量。YOLOv3 - spp中的SPP模块在不影响推理速度的情况下增加了感受野。PANet改进版
- 集成袋自由( Bag-Of-Freebies,Bof )的高级培训方法。除了随机亮度、对比度、缩放、裁剪、翻转和旋转等常规增强外,作者还实现了拼接增强,将四幅图像合并为一幅图像,从而可以检测出其上下文之外的物体,同时也减少了批量归一化所需的大量小批量尺寸。对于正则化,他们使用DropBlock [ 64 ]代替Dropout [ 65 ],但对于卷积神经网络和类标签平滑[ 66,67]。对于检测器,他们加入了CIoU损失[ 68 ]和交叉小批量归一化( Cross mini-bathnormalization,Cm BN ),用于从整个批次收集统计量,而不是从单个小批量收集统计量,作为非规则批次归一化[ 69 ]
- 自我对抗训练( SAT )。为了使模型对扰动更加鲁棒,对输入图像进行对抗攻击,产生一个欺骗,即真实物体不在图像中,而是保持原来的标签来检测正确的物体。
- 基于遗传算法的超参数优化。为了找到用于训练的最优超参数,他们在前10 %的周期上使用遗传算法,并在训练过程中使用余弦退火调度器[ 70 ]来改变学习率。它开始缓慢地降低学习速率,然后在训练过程中迅速减少一半,以轻微的减少结束。
表3列出了主链和探测器最终选择的BoFs和BoS。
表3:YOLOv4最终选择的自由袋( BoF )和特制袋( BoS )。BoF是一种在不增加推理代价的情况下提高性能但训练时间较长的方法。另一方面,BoS是一种略微增加推断成本但显著提高准确率的方法。
8.1 YOLOv4 Results
在MS COCO数据集test - dev 2017上评估,YOLOv4在NVIDIA V100上超过50FPS的AP为43.5 %,AP50为65.7 %。
图11:用于目标检测的YOLOv4架构。图中的模块分别CMB:卷积+批归一化+ Mish激活,CBL:卷积+批归一化+漏ReLU,UP:上采样,SPP:空间金字塔池化,PANet:路径聚合网络。图受[ 71 ]启发。
9 YOLOv5
YOLOv5 [ 72 ]于2020年由Glenn Jocher在YOLOv4之后的几个月发布。在本文撰写之时,还没有关于YOLOv5的科学论文,但是从代码中我们知道它使用了YOLOv4部分描述的许多改进,主要区别在于它是在Pytorch中开发的,而不是Darknet。YOLOv5是开源的,由Ultralytics积极维护,有超过250个贡献者,并且经常有新的改进。YOLOv5易于使用、训练和部署。Ultralytics为iOS和Android提供了一个移动版本,并提供了许多用于标记、训练和部署的集成。
YOLOv5提供了5个缩放版本:YOLOv5n ( nano )、YOLOv5s ( small )、YOLOv5m ( medium )、YOLOv5l ( large )和YOLOv5x ( extra large )。
本文写作时发布的YOLOv5版本为v7.0,包括能够进行分类和实例分割的YOLOv5版本。
9.1 YOLOv5 Results
在MS COCO数据集test - dev 2017上评估,YOLOv5x获得了50.7 %的AP,图像大小为640像素。使用32的批量大小,在NVIDIA V100上可以实现200 FPS的速度。使用更大的输入尺寸1536pixels,YOLOv5实现了55.8 %的AP。
10 Scaled-YOLOv4
YOLOv4发表1年后,同一作者在CVPR 2021上发表了Scaled - YOLOv4 [ 73 ]。与YOLOv4不同,Scaled YOLOv4是在Pytorch而不是Darknet中开发的。主要的新颖之处在于引入了放大和缩小技术。放大意味着产生一个以较低的速度为代价来提高精度的模型;另一方面,缩小意味着产生一个以牺牲精度为代价来提高速度的模型。此外,缩放模型需要较少的计算能力,并且可以在嵌入式系统上运行。
缩小后的架构称为YOLOv4 - minor;它专为低端GPU设计,在a Jetson TX2上可运行46帧/ s,在RTX2080Ti上可运行440帧/ s,在MS COCO上可实现22 %的AP。
放大后的模型架构称为YOLOv4 - large,包括三种不同尺寸的P5、P6和P7。该架构专为云端GPU设计,并取得了最先进的性能,在MS COCO上以56 %的AP超越了之前的所有型号[ 74、75、76]。
11 YOLOR
YOLOR [ 77 ]由YOLOv4的同一研究团队于2021年5月发表在ArXiv上。它代表"只有一个代表"。在本文中,作者遵循了不同的方法;他们开发了一种多任务学习方法,旨在通过学习一个通用的表示,并使用子网络创建任务特定的表示,为各种任务创建一个单一的模型。鉴于传统的联合学习方法往往会导致次优的特征生成,YOLOR旨在通过编码神经网络的隐含知识来克服这一问题,以适用于多个任务,类似于人类如何利用过去的经验来处理新问题。结果表明,在神经网络中引入隐性知识对所有任务都有好处
在MS COCO数据集test - dev 2017上评估,YOLOR在NVIDIA V100上30 FPS的AP为55.4 %,AP50为73.3 %。
12 YOLOX
YOLOX [ 78 ]由Megvii Technology的研究团队于2021年7月发表在ArXiv上。它以Ultralytics公司的YOLOV3为起点,在Pytorch上开发,它有五个主要的变化:无锚架构、多重正例、解耦头、高级标签分配和强增强。在Tesla V100上,以50.1 %的AP和68.9 %的FPS在速度和精度之间取得了最佳平衡,在2021年取得了最先进的结果。下面描述YOLOX相对于YOLOv3的5个主要变化:
- 无锚。自YOLOv2以来,所有后续的YOLO版本都是基于锚点的检测器。YOLOX在分组角点检测网络[ 79 ]、CenterNet [80 ]、FCOS [ 81 ]等无锚点目标检测器的启发下,回归到简化训练和解码过程的无锚点架构。与YOLOv3基线相比,无锚点使AP增加了0.9分。
- 多正例。为了弥补锚点缺失产生的较大不平衡,作者采用中心抽样[ 81 ],将中心3 × 3区域赋为正数。该方法使AP提高了2.1分。
- 解耦头。在[ 82,83]中,表明分类置信度和定位精度之间可能存在错位。正因如此,YOLOX将二者分离为两个head(如图12所示),一个用于分类任务an
- 高级标签分配。文献[ 84 ]指出,当多个对象的框重叠时,真值标签分配可能存在歧义,并将分配过程建模为最优传输( OptimalTransport,OT )问题。受此启发,YOLOX提出了一个简化版本simOTA。这种变化使AP增加了2.3个点。
- 强增强。YOLOX使用MixUP [ 85 ]和Mosaic增强。作者发现使用这些增强后ImageNet预训练不再有益。强增强使AP提高了2.4分。
图12为YOLOv3头与YOLOX解耦头的差值。对于FPN的每个层次,他们使用一个1×1卷积层将特征通道减少到256,然后添加两个并行分支,每个分支具有两个3 × 3卷积层,分别用于类置信(分类)和定位(回归)任务。在回归头中加入IoU分支。
13 YOLOv6
YOLOv6 [ 86 ]于2022年9月由美团视觉AI部门在ArXiv上发布。与YOLOv4和YOLOv5类似,它为工业应用提供了各种不同尺寸的模型。遵循基于锚点的方法[ 78,81]的趋势,YOLOv6采用了无锚点检测器。该模型的主要创新点总结如下:
- 基于Rep VGG [ 87 ]的一种新的主干网称为Efficient Rep,它使用比以前的YOLO主干网更高的并行度。对于颈部,他们使用了PAN [ 62 ]增强的Rep Blocks [ 87 ]或CSPStackRep [ 61 ] Blocks用于较大的模型。受YOLOX的启发,他们开发了一种高效的解耦头。
- 标签分配使用TOOD中引入的任务对齐学习方法[ 88 ]。
- 新的分类和回归损失。他们使用了分类变焦距的损失[ 89 ]和SIo U [ 90 ] / GIo U [ 91 ]回归损失。
- 面向回归和分类任务的自蒸馏策略。
- 使用RepOptimizer [ 92 ]和通道蒸馏[ 93 ]进行检测的量化方案有助于实现更快的检测器。
13.1 YOLOv6 Results
在MS COCO数据集test - dev 2017上评估,YOLOv6 - L在NVIDIA Tesla T4上约50FPS的AP为52.5 %,AP50为70 %。
14 YOLOv7
YOLOv7 [ 94 ]由YOLOv4和YOLOR的同一作者于2022年7月发表在ArXiv上。当时,它在5 ~ 160 FPS的速度和精度上超越了所有已知物体探测器。与YOLOv4一样,它只使用MS COCO数据集进行训练,不使用预训练的主干。YOLOv7提出了一对夫妇的架构变化和一系列免提包,在不影响推理速度的情况下提高了准确率,只增加了训练时间。
YOLOv7的架构变化:
- 扩展的高效层聚合网络( E-ELAN )。ELAN [ 95 ]是一种允许深度模型通过控制最短最长梯度路径来更有效地学习和收敛的策略。YOLOv7提出的E -ELAN适用于具有无限堆叠计算块的模型。E -ELAN通过对基数进行洗牌和合并,结合不同组的特征,在不破坏原有梯度路径的情况下,增强网络的学习。
- 基于级联模型的模型缩放。缩放通过调整一些模型属性生成不同大小的模型。YOLOv7的架构是一种基于级联的架构,其中标准的缩放技术,如深度缩放,会导致过渡层的输入通道和输出通道之间的比例变化,进而导致模型的硬件使用量减少。YOLOv7提出了一种新的基于级联模型的缩放策略,以相同的因子缩放块的深度和宽度,以保持模型的最优结构。
YOLOv7中使用的免提袋包括:
- 规划的重新参数化卷积。与YOLOv6一样,YOLOv7的架构也受到了Rep Conv [ 87 ]的启发。然而,他们发现RepConv中的身份连接破坏了ResNet [ 53 ]中的残差和DenseNet [ 96 ]中的级联。为此,他们去掉了身份连接,称之为RepConvN。
- 辅助头的粗标签分配和引线头的细标签分配。主导者负责最终输出,辅助者辅助训练。
- conv - bn - activation中的批标准化。这将批量归一化的均值和方差融入到推断阶段卷积层的偏置和权重中。
- 内隐知识启发于YOLOR [ 77 ]。
- •指数移动平均作为最终的推断模型。
14.1 Comparison with YOLOv4 and YOLOR
在本节中,我们重点介绍了YOLOv7相对于同作者之前开发的YOLO模型的增强。
与YOLOv4相比,YOLOv7的参数减少了75 %,计算量减少了36 %,同时平均精度( AP )提高了1.5 %。
与YOLOv4 - minor相比,YOLOv7 - minor在保持相同AP的情况下,参数和计算量分别减少了39 %和49 %。
最后,与YOLOR相比,YOLOv7的参数量和计算量分别减少了43 %和15 %,AP略有增加0.4 %。
14.2 YOLOv7 Results
在MS COCO数据集test - dev 2017上评估,YOLOv7 - E6在NVIDIA V100上实现了输入大小为1280像素,速度为50 FPS的AP为55.9 %,AP50为73.5 %。
15 DAMO-YOLO
DAMO-YOLO [ 97 ]由阿里巴巴集团于2022年11月在ArXiv上发布。受当前技术的启发,DAMO - YOLO包括以下内容:
- 神经架构搜索( NAS )。他们使用阿里巴巴开发的MAE - NAS [ 98 ]方法自动寻找高效的架构。
- 一个大颈部。受GiraffeDet [ 99 ]、CSPNet [ 61 ]和ELAN [ 95 ]的启发,作者设计了一种可实时工作的颈部,称为Efficient - RepGFPN。
- 小头部。作者发现大颈部和小颈部有更好的性能,他们只留下一个线性层用于分类和一个用于回归。他们把这种做法称为"零头"。
- AlignedOTA标签赋值。动态标签分配方法,如OTA [ 84 ]和TOOD [ 88 ],由于其对静态方法的显著改进而备受青睐。然而,分类和回归之间的错位仍然是一个问题,部分原因是分类和回归损失之间的不平衡。为了解决这个问题,他们的AlignOTA方法在分类代价中引入了焦点损失[ 75 ],使用预测和真实框的IoU作为软标签,为每个目标选择对齐样本,从全局角度解决问题。
- 知识蒸馏。他们提出的策略包括两个阶段:第一阶段教师指导学生,第二阶段学生自主微调。此外,他们在蒸馏方法中纳入了两个增强:Align模块,它将学生特征与教师的分辨率相同;以及Channel - wise动态温度,它将教师和学生特征标准化,以减少真实值差异的影响。
作者生成了缩比模型DAMO - YOLO - Tiny / Small / Medium,其中最好的模型在NVIDIA V100上的233 FPS达到了50.0 %的AP。
16 YOLOv8
YOLOv8 [ 100 ]于2023年1月由开发YOLOv5的公司Ultralytics发布。由于在本文写作时,还没有关于YOLOv8的论文,我们需要深入了解与其他YOLO版本相比的架构决策。按照目前的趋势,YOLOv8是无锚的,减少了框预测的数量,加快了非最大值抑制( NMS )。此外,YOLOv8在训练时使用马赛克增强;然而,由于已经发现这种增强如果在整个训练过程中使用可能是有害的,所以在最后十个历元中禁用。
YOLOv8可以从命令行界面( CLI )运行,也可以作为PIP包安装。此外,它还具有用于标记、训练和部署的多个集成。
YOLOv8提供了5个缩放版本:YOLOv8n ( nano )、YOLOv8s ( small )、YOLOv8m ( medium )、YOLOv8l ( large )和YOLOv8x ( extra large )。
16.1 YOLOv8 Results
在MS COCO数据集test - dev 2017上评估,YOLOv8x在NVIDIA A100和TensorRT上获得了53.9 %的AP,图像大小为640pixel(在相同的输入量下, YOLOv5的识别率为50.7 %),速度为280FPS
17 PP-YOLO,PP-YOLOv2,and PP-YOLOE
PP - YOLO模型与我们描述的YOLO模型平行增长。然而,我们决定将themin单独分组,因为它们从YOLOv3开始,并在之前的PP - YOLO版本的基础上逐步完善。尽管如此,这些模型在YOLO的演化过程中一直具有影响力。PP-YOLO [ 76 ]以YOLOv3为基础,与YOLOv4和YOLOv5相似。由百度公司的研究人员于2020年7月在ArXiv上发布。作者使用了PaddlePaddle [ 101 ]深度学习平台,因此将其命名为PP。PP - YOLO沿袭了我们从YOLOv4开始的趋势,增加了10个现有的技巧来提高探测器的精度,保持速度不变。据作者所述,本文的目的不是介绍一种新的物体探测器,而是展示如何逐步构建一个更好的探测器。PP - YOLO使用的大部分技巧与YOLOv4中使用的不同,重叠的部分使用不同的实现。PP - YOLO关于YOLOv3的变化为:
- 在最后一个阶段使用可变形卷积[ 102 ]和蒸馏预训练模型的架构替换ResNet50网络- vd主干,在ImageNet上具有更高的分类精度。这种架构被称为ResNet5 - vd - dcn。
- 为了提高训练的稳定性,批次从64个增加到192个,同时更新了训练计划和学习率。
- 对训练好的参数保持移动平均值并使用它们代替最终的训练值。
- DropBlock仅适用于FPN。
- 在另一个分支中添加一个IoU损失L1损失用于边界框回归。
- 在IoU感知损失的同时,增加一个IoU预测分支来衡量定位精度。在推理过程中,YOLOv3乘以分类概率和客观评分来计算最终检测,PP - YOLO也乘以预测的IoU来考虑定位精度。
- 采用类似YOLOv4的网格敏感方法改进网格边界处的包围盒中心预测。
- 采用矩阵NMS [ 103 ],可以并行运行,比传统NMS速度快。
- Coord Conv [ 104 ]用于FPN的1 × 1卷积,位于检测头的第一个卷积层。CoordConv允许网络学习平移不变性,提高检测定位。
- 空间金字塔池化仅在顶层特征图上使用,以增加主干的感受野。
17.1 PP-YOLO augmentations and preprocessing
PP - YOLO使用了以下增强和预处理:
- Mixup Training [ 85 ]从Beta( α , β)分布中采样权重,其中α = 1.5和β = 1.5。
- 随机颜色失真。
- 随机剪切和随机翻转,概率为0.5。
- RGB通道z - score标准化,均值为[ 0.485、0.456、0.406],标准差为[ 0.229、0.224、0.225]。
- 从[ 320、352、384、416、448、480、512、544、576、608]中均匀绘制多个图像尺寸。
17.2 PP - YOLO结果
在MS COCO数据集test - dev 2017上评估,PP - YOLO在NVIDIA V100上73 FPS的AP为45.9 %,AP50为65.2 %。
17.3 PP-YOLOv2
PP-YOLOv2 [ 105 ]于2021年4月发表在ArXiv上,并在NVIDIA V100上对PP - YOLO进行了四次改进,在69 FPS时性能从45.9 % AP提高到49.5 % AP。PP - YOLOv2关于PP - YOLO的变化如下:
- Backbone changed from ResNet50 to ResNet101.
- 路径聚合网络( Path Aggregation Network,PAN )代替类似YOLOv4的FPN。
- Mish激活函数。与YOLOv4和YOLOv5不同的是,它们只在检测颈部使用mish激活函数,以保持骨架与ReLU不变。
- 较大的输入尺寸有助于提高小对象上的性能。他们将最大输入尺寸从608个扩大到768个,将每个GPU的批处理尺寸从24个减少到12个。输入尺寸由[ 320、352、384、416、448、480、512、544、576、608、640、672、704、736、768]均匀绘制。
- 一个改进的IoU感知分支。他们使用软标签格式而不是软权重格式修改了IoU感知损失计算。
17.4 PP-YOLOE
PP-YOLOE [ 106 ]于2022年3月发表在ArXiv上。它在PP - YOLOv2的基础上进行了改进,在NVIDIA V100上达到了78.1 FPS的51.4 % AP性能。PP - YOLOv2中PP - YOLOE的主要变化为:
- 无锚。PP - YOLOE遵循[ 81、80、79、78]作品驱动的时代潮流,采用无锚架构。
- 新骨干和颈部。受TreeNet [ 107 ]的启发,作者使用RepResBlocks结合残差和密集连接对骨干和颈部的结构进行了修改。
- 任务对齐学习( Tal )。YOLOX最早提出了任务错位问题,其中分类置信度和位置精度在所有情况下并不一致。为了减少这个问题,PP - YOLOE实现了TOOD [ 88 ]中提出的TAL,包括一个动态标签分配和一个任务对齐损失。
- 高效任务对齐头( Et-Head )。与YOLOX将分类和定位头解耦不同,PP - YOLOE在TOOD的基础上改用单个头来提高速度和精度。
- VFL和DFL。VFL [ 89 ]利用目标得分对正样本进行加权损失,赋予高Io U样本更高的权重。这在训练时优先考虑高质量的样本。类似地,两者都以IoU感知分类评分( IACS )为目标,允许对分类和定位质量进行联合学习,从而实现训练和推断的一致性。另一方面,DFL [ 108 ]将Focal Loss从离散标签扩展到连续标签,成功优化了结合质量估计和类别预测的改进表示。这允许在真实数据中灵活分布的准确描述,消除不一致的风险。
与之前的YOLO版本一样,作者通过改变骨架和颈部的宽度和深度来生成多个缩比模型。模型分别称为PP - YOLOE - s (小)、PP - YOLOE - m (中)、PP - YOLOE - l (大)、PP - YOLOE - x (特大)。
18 Discussion
本文研究了15个YOLO版本,从最初的YOLO模型到最近的YOLOv8。表4提供了所讨论的YOLO版本的概况。从这个表中,我们可以识别出几个关键模式:
- 锚点:原始的YOLO模型比较简单,没有使用锚点,而最先进的模型依赖于带有锚点的两级检测器。YOLOv2引入了锚点,提高了入框预测精度。这一趋势持续了五年,直到YOLOX引入了一种无锚点的方法,取得了最先进的结果。此后,后续的YOLO版本都放弃了锚的使用。
- 框架:最初,YOLO是使用Darknet框架开发的,后续的版本都是沿用。然而,当Ultralytics将YOLOv3移植到PyTorch时,其余的YOLO版本都是使用PyTorch开发的,导致增强效果激增。另一种使用的深度学习语言是PaddlePaddle,这是一个由百度开发的开源框架。
- 骨干:YOLO模型的骨干架构随着时间的推移发生了显著的变化。从包含简单卷积层和最大池化层的暗网架构开始,后来的模型在YOLOv4中引入了跨级部分连接( Cross-stage Partial Connection,CSP ),在YOLOv6和YOLOv7中引入了重新参数化,在DAMO - YOLO中引入了神经架构搜索。
- 性能:虽然YOLO模型的性能随着时间的推移有所提高,但值得注意的是,它们往往优先考虑平衡速度和精度,而不是只关注精度。这种折衷是YOLO框架的一个重要方面,允许跨各种应用程序的实时目标检测。
表4:Yolo架构概述。YOLO和YOLOv2在VOC2007上报道,其余在COCO2017上报道
18.1速度与精度的权衡
YOLO系列目标检测模型一直致力于平衡速度和精度,旨在在不牺牲检测结果质量的前提下提供实时性。随着YOLO框架在其各种迭代中的发展,这种权衡一直是一个反复出现的主题,每个版本都在寻求不同的优化目标。在原始的YOLO模型中,主要的关注点是实现高速的目标检测。该模型利用单个卷积神经网络( CNN )直接从输入图像中预测物体位置和类别,实现实时处理。然而,这种对速度的强调导致了妥协的不准确性,主要是在处理小物体或边界框重叠的物体时。
随后的YOLO版本引入了改进和增强,在保持框架实时能力的同时解决了这些限制。例如,YOLOv2 ( YOLO9000 )引入锚框和穿越层来提高物体的定位,从而获得更高的精度。此外,YOLOv3通过采用多尺度特征提取架构,提高了模型的性能,允许在不同尺度上进行更好的目标检测。
随着YOLO框架的发展,速度和精度之间的权衡变得更加微妙。YOLOv4和YOLOv5等模型引入了新的网络骨干、改进的数据增强技术和优化的训练策略等创新。这些发展在不显著影响模型实时性能的情况下显著提高了精度。
从Scaled YOLOv4开始,所有官方的YOLO模型都在速度和精度之间进行了微调,提供了不同的模型规模以适应特定的应用和硬件需求。例如,这些版本往往提供了针对边缘设备优化的轻量级模型、降低计算复杂度和加快处理时间的交易准确性。
19 The future of YOLO
随着YOLO框架的不断发展,我们预期以下趋势和可能性将塑造未来的发展:
- 最新技术的融入。研究人员和开发人员将继续利用深度学习、数据增强和训练技术中的最新方法来改进YOLO架构。这种持续的创新过程将可能提高模型的性能、鲁棒性和效率。
- 基准进化。目前用于评估目标检测模型的基准COCO 2017最终可能被更先进、更具挑战性的基准所取代。这反映了前两个YOLO版本中使用的VOC 2007基准的转变,反映了随着模型变得更加复杂和准确,对更苛刻的基准的需求。
- Yolo模型的推广与应用。随着YOLO框架的推进,我们预计每年发布的YOLO模型数量会增加,应用范围也会相应扩大。随着该框架变得更加通用和强大,它将有可能应用于更多的领域,从家用电器设备到自动驾驶汽车。
- 拓展到新的领域。YOLO模型有潜力将其功能扩展到目标检测和分割之外,如视频中的目标跟踪和3D关键点估计。随着这些模型的发展,它们可能成为解决更广泛的计算机视觉任务的新解决方案的基础。
- 对多样化硬件的适应性。YOLO模型将进一步跨越硬件平台,从物联网设备到高性能计算集群。这种适应性将使YOLO模型能够根据应用的需求和约束,在不同的环境中部署。此外,通过定制模型以适应不同的硬件规范,YOLO可以为更多的用户和行业提供可访问和有效的服务。
20 Acknowledgments
我们要感谢国家科学技术委员会(全国科学技术委员会(阿根) )通过国家研究系统( SNI )提供的支持。
参考文献