YOLOX: Exceeding YOLO Series in 2021

YOLOX: Exceeding YOLO Series in 2021_第1张图片

论文地址:https://arxiv.org/pdf/2107.08430.pdf

摘要:

在本报告中,我们对YOLO系列进行了一些经验丰富的改进,形成了一种新的高性能探测器——YOLOX。我们将YOLO检测器切换到无锚方式,并采用其他先进的检测技术,即解耦头和领先的标签分配策略SimOTA,以在大范围的模型中实现最先进的结果:YOLONano,只有0.91M参数和1.08G FLOP,我们在COCO上获得25.3%的AP,超过NanoDet 1.8%的AP;对于工业上使用最广泛的探测器之一YOLOv3,我们在COCO上将其提高到47.3%AP,比当前最佳实践的AP高3.0%;对于参数量与YOLOv4CSP、YOLOv5-L大致相同的YOLOX-L,我们在特斯拉V100上以68.9 FPS的速度在COCO上实现50.0%AP,超过YOLOv 5-L 1.8%AP。此外,我们使用一个YOLOX-L模型获得了流感知挑战赛(2021 CVPR自动驾驶研讨会)的第一名。我们希望本报告能够为开发人员和提供支持ONNX、TensorRT、NCNN和Openvino的部署版本。

 1. Introduction

随着目标检测的发展,YOLO系列始终追求实时应用的最佳速度和精度权衡。他们提取了当时最先进的检测技术(例如,YOLOv2的锚,YOLOv3的Residual网络[9]),并优化了最佳实践的实施。目前,YOLOv5[7]保持了最佳的折衷性能,COCO上48.2%的AP为13.7 ms。

然而,在过去两年中,目标检测学术界的主要进展集中在无锚检测器高级标签分配策略端到端(无NMS)检测器。这些尚未集成到YOLO系列中,如YOLOv4和YOLOv 5仍然是基于锚的检测器,具有手工制作的用于训练的分配规则。

这就是我们来到这里的原因,通过经验丰富的优化为YOLO系列提供了最新的改进。考虑到YOLOv4和YOLOv 5对于基于锚的管道可能有点过度优化,我们选择YOLOv3作为我们的起点(我们将YOLOV 3 SPP设置为默认YOLOV1)。事实上,由于计算资源有限以及各种实际应用中的软件支持不足,YOLOv3仍然是行业中使用最广泛的探测器之一。

如图1所示,通过对上述技术进行经验丰富的更新,我们在COCO上以640×640分辨率将YOLOv3提高到47.3%AP(YOLOX-DarkNet53),大大超过了YOLOv3的当前最佳实践(44.3%AP,ultralytics版本2)。此外,当切换到采用先进CSPNet主干和额外PAN头的先进YOLOv5架构时,YOLOX-L在COCO上以640×640分辨率实现50.0%的AP,比对应的YOLOv5-L高1.8%的AP。我们还测试了我们在小尺寸模型上的设计策略。YOLOX Tiny和YOLOX Nano(仅0.91M参数和1.08G FLOP)分别以10%的AP和1.8%的AP优于对应的YOLOv4 Tiny和NanoDet3。

我们发布代码https://github.com/Megvii-BaseDetection/YOLOX支持ONNX、TensorRT、NCNN和Openvino。值得一提的是,我们使用一个YOLOX-L模型在流感知挑战赛(2021 CVPR自动驾驶研讨会)上获得了第一名。

2. YOLOX

2.1. YOLOX-DarkNet53

我们选择YOLOv3,以Darknet53为基线。在接下来的部分中,我们将逐步介绍YOLOX中的整个系统设计。

Implementation details:从基线到最终模型,我们的训练设置基本一致。我们在COCO train 2017上对总共300个时期的模型进行了训练,其中5个时期进行了预热。我们使用随机梯度下降(SGD)进行训练。我们使用lr×BatchSize/64(线性缩放)的学习速率,初始lr=0.01,余弦lr调度。重量衰减为0.0005,SGD动量为0.9。对于典型的8-GPU设备,批量大小默认为128。其他批量大小包括单个GPU训练也很好。输入大小以32步幅从448均匀绘制到832。FPS和本报告中的延迟都是在单个特斯拉V100上以FP16精度和批次=1测量的。

YOLOv3 baseline:我们的基线采用了DarkNet53主干和SPP层的架构,在一些论文中称为YOLOv3 SPP。与最初的实现相比,我们稍微改变了一些训练策略,增加了EMA权重更新余弦lr调度IoU损失IoU感知分支。我们将BCE损失用于培训cls和obj分支,IoU损失用于培训reg分支。这些一般的训练技巧与YOLOX的关键改进是正交的,因此我们将它们放在基线上。此外,我们只进行Random Horizontal Flip、Color Jitter和多尺度数据增强,并放弃RandomResizedCrop策略,因为我们发现RandomResisedCrop与计划的马赛克增强有点重叠。通过这些增强,我们的基线在COCO值上实现了38.5%的AP,如表2所示。

YOLOX: Exceeding YOLO Series in 2021_第2张图片

Decoupled head:在对象检测中,分类和回归任务之间的冲突是一个众所周知的问题。因此,用于分类和定位的去耦头广泛用于大多数一级和二级检测器。然而,随着YOLO系列的主干和特征金字塔(例如,FPN、PAN)的不断发展,它们的检测头保持耦合,如图2所示。

YOLOX: Exceeding YOLO Series in 2021_第3张图片

我们的两个分析实验表明,耦合检测头可能会损害性能。1). 如图3所示,用解耦的YOLO头替换YOLO头大大提高了收敛速度。2).解耦的头部对于YOLO的端到端版本至关重要(将在下面描述)。从表1中可以看出,耦合头的端到端的yolo性能降低4.2%AP,而解耦头的端到端的Yolo降低0.8%AP。因此,我们将YOLO检测头替换为如图2所示的轻度去耦头。具体而言,它包含一个1×1凸面层以减少通道尺寸,然后是两个平行分支,分别具有两个3×3凸面层。我们在表2中报告了V100上批次=1的推断时间,并且精简解耦头带来了额外的1.1毫秒(11.6毫秒vs.10.5毫秒)。

YOLOX: Exceeding YOLO Series in 2021_第4张图片

YOLOX: Exceeding YOLO Series in 2021_第5张图片

 Strong data augmentation:我们将MosaicMixUp添加到我们的增强策略中,以提高YOLOX的性能。Mosaic是由ultralytics-YOLOv3提出的一种有效增强策略。它随后被广泛用于YOLOv4、YOLOv5和其他检测器。MixUp最初设计用于图像分类任务,但随后在BoF中进行了修改,用于对象检测训练。我们在我们的模型中采用了MixUp和Mosaic实现,并在过去15个时期关闭了它,在表2中实现了42.0%的AP。在使用了强大的数据增强后,我们发现ImageNet预训练不再有用,从而从头开始训练以下所有模型。

Anchor-free:YOLOv4和YOLOv5都遵循YOLOv3的原始基于锚的管道。然而,锚机制有许多已知的问题。首先,为了实现最佳检测性能,需要在训练之前进行聚类分析以确定一组最佳锚点。这些集群锚点是特定于域的,不太通用。第二,锚机制增加了检测头的复杂性,以及每个图像的预测数量。在一些边缘AI系统上,在设备之间移动如此大量的预测(例如,从NPU到CPU)可能会成为整体延迟方面的潜在瓶颈。

无锚探测器在过去两年中发展迅速。这些工作表明,无锚探测器的性能可以与基于锚的探测器相当。无锚机制显著减少了需要启发式调整的设计参数的数量,以及为获得良好性能所涉及的许多技巧(例如,锚聚类,网格敏感)使得检测器,尤其是其训练和解码阶段,非常简单。

将YOLO切换到无锚方式非常简单。我们将每个位置的预测值从3减少到1,并使其直接预测四个值,即网格左上角的两个偏移量以及预测框的高度和宽度。我们将中心分配给每个物体的位置作为阳性样本,并预先定义一个标度范围,如文献[29]所述,以指定每个物体的FPN水平。这种修改减少了探测器的参数和GFLOP,使其更快,但获得了更好的性能42.9%的AP,如表2所示。

Multi positives:为了与YOLOv3的分配规则一致,上述无锚版本仅为每个对象选择一个正样本(中心位置),同时忽略其他高质量预测。然而,优化这些高质量预测也可能带来有益的梯度,这可能缓解训练期间正/负采样的极端失衡。我们简单地将中心3×3区域指定为阳性,在FCOS中也称为“中心采样”。如表2所示,检测器的性能提高到45.0%的AP,已经超过了当前的最佳做法ultralytics-YOLOv3(44.3%的AP)。

SimOTA:高级标签分配是近年来物体检测的另一个重要进展。基于我们自己的OTA研究,我们总结了高级标签分配的四个关键见解:1)损失/质量意识2)中心优先3)每个地面真相的正主播的动态数量(缩写为动态top-k)4)全局视图。OTA满足上述所有四个规则,因此我们选择它作为候选标签分配策略。

具体而言,OTA从全局角度分析标签分配,并将分配过程表述为最优传输(OT)问题,在当前分配策略中产生SOTA性能。然而,在实践中,我们发现通过Sinkhorn Knopp算法解决OT问题会带来25%的额外训练时间,这对于训练300个时期来说相当昂贵。因此,我们将其简化为名为SimOTA的动态top-k策略,以获得近似解。

我们在此简要介绍SimOTA。SimOTA首先计算成对匹配度,由每个预测gt对的成本或质量表示。例如,在SimOTA中,gt g_{i}和预测p_{j}之间的成本计算为:

c_{ij} = L^{_{ij}^{cls}} + \lambda L^{_{ij}^{reg}}

其中λ是平衡系数。L^{_{ij}^{cls}}L^{_{ij}^{reg}}是gtg_{i}和预测p_{j}之间的分类损失和回归损失。然后,对于gt g_{i},我们选择固定中心区域内成本最小的前k个预测作为其正样本。最后,这些正预测的对应网格被指定为正,而其余网格为负。注意到,k值随不同的地面真相而变化。有关详细信息,请参阅OTA[4]中的动态k估计策略。

SimOTA不仅减少了训练时间,而且避免了SinkhornKnopp算法中额外的求解器超参数。如表2所示,SimOTA将检测器从45.0%AP提高到47.3%AP,比SOTA ultralytics-YOLOv3高3.0%AP,显示了高级分配策略的威力。

End-to-end YOLO:我们遵循[39]添加两个额外的对流层、一对一的标签分配和停止梯度。这些使检测器能够以端到端的方式执行,但稍微降低了性能和推理速度,如表2所示。因此,我们将其作为一个可选模块,而不涉及最终模型。

2.2. Other Backbones

除了DarkNet53,我们还在其他不同大小的主干上测试YOLOX,其中YOLOX与所有相应的主干相比实现了一致的改进。

Modified CSPNet in YOLOv5:为了进行公平的比较,我们采用了精确的YOLOv5主干,包括修改的CSPNet[31]、SiLU激活和PAN[19]头部。我们还遵循其缩放规则来生产YOLOXS、YOLOX-M、YOLOX-L和YOLOX-X型号。与表3中的YOLOv5相比,我们的模型通过∼3.0%至∼1.0%AP,仅边际时间增加(来自去耦头)。

YOLOX: Exceeding YOLO Series in 2021_第6张图片

 

Tiny and Nano detectors:我们进一步将我们的模型缩小为YOLOX Tiny,以与YOLOv4 Tiny进行比较。对于移动设备,我们采用深度卷积来构建YOLOX Nano模型,该模型只有0.91M参数和1.08G FLOP。如表4所示,YOLOX在型号比同类产品更小的情况下表现良好。

YOLOX: Exceeding YOLO Series in 2021_第7张图片

 Model size and data augmentation:在我们的实验中,所有模型保持几乎相同的学习计划和优化参数,如2.1所示。然而,我们发现,适当的增强策略在不同大小的模型中有所不同。如表5所示,虽然YOLOX-L应用MixUp可以将AP提高0.9%,但最好是削弱小型号的增强,如YOLOX-Nano。具体来说,我们在训练小模型(即YOLOX-S、YOLOX-Tiny和YOLOX-Nano)时,去除了混合增强并削弱了马赛克(将比例范围从[0.1,2.0]减小到[0.5,1.5])。这种改性将YOLOX Nano的AP从24.0%提高到25.3%。

对于大型模型,我们还发现更强的增强更有帮助。事实上,我们的MixUp实现比[38]中的原始版本更重。受Copypaste[6]的启发,我们在混合之前通过随机采样比例因子抖动了两幅图像。为了了解Mixup与缩放抖动的威力,我们将其与YOLOX-L上的Copypaste进行了比较。注意到Copypaste需要额外的实例掩码注释,而MixUp不需要。但如表5所示,这两种方法实现了具有竞争力的性能,表明当没有实例掩码注释可用时,具有缩放抖动的MixUp是Copypaste的合格替代品。

YOLOX: Exceeding YOLO Series in 2021_第8张图片

 3. Comparison with the SOTA

传统上,SOTA比较表如表6所示。但是,请记住,该表中模型的推理速度通常不受控制,因为速度随软件和硬件的不同而不同。因此,我们为图1中的所有YOLO系列使用了相同的硬件和代码库,绘制了稍微受控的速度/精度曲线。

YOLOX: Exceeding YOLO Series in 2021_第9张图片

 我们注意到,有一些型号更大的高性能YOLO系列,如Scale-YOLOv4[30]和YOLOv5-P6[7]。基于电流互感器的检测器[21]将SOTA的精度提高到∼60美联社。由于时间和资源的限制,我们没有在本报告中探讨这些重要特征。然而,它们已经在我们的范围内。

4. 1st Place on Streaming Perception Challenge(W AD at CVPR 2021)

2021 W AD上的流媒体感知挑战是通过最近提出的度量标准:流媒体准确性对准确性和延迟进行的联合评估。关键的洞察力是之后,该度量将在每个时间点联合评估整个感知堆栈的输出,迫使堆栈考虑在计算过程中应忽略的流数据量[15]。我们发现,30 FPS数据流上的度量的最佳权衡点是一个具有推断时间的强大模型≤ 33毫秒。因此,我们采用了YOLOX-L模型和TensorRT来制作我们的最终模型,以迎接赢得第一名的挑战。有关详细信息,请参阅挑战网站5。

5. Conclusion

在本报告中,我们介绍了YOLO系列的一些经验丰富的更新,该系列形成了一种称为YOLOX的高性能无锚探测器。YOLOX配备了一些最新的先进检测技术,即去耦头、无锚定和先进的标签分配策略,与所有型号的其他同类产品相比,YOLOX在速度和精度之间实现了更好的权衡。值得注意的是,我们将YOLOv3的架构提升到了47.3%的AP,超过了当前的最佳实践3.0%的AP。YOLOv3由于其广泛的兼容性,仍然是行业中使用最广泛的检测器之一。我们希望这份报告能够帮助开发人员和研究人员在实际场景中获得更好的体验。

你可能感兴趣的:(深度学习,目标检测)