0.摘要
在论文中,我们介绍了YOLO系列的一些经验改进,以此提出了一种新的高性能检测器YOLOX。我们将YOLO切换为anchor-free的方式,并采用其他先进的检测技术,如解耦头和高级标签分配策略SimOTA,从而在众多模型中实现了SOTA。
相较于只有0.91M参数和1.08G FLOPs的YOLONano,我们在COCO数据集上得到25.3%的AP,比NanoDet 高了1.8%的AP
对工业上使用最广泛的探测器之一YOLOv3而言,我们在COCO上将AP提高到47.3% ,比目前最先进的检测器高出3.0% AP;
对于与YOLOX-L参数数量大致相同的 YOLOv4-CSP,YOLOv5-L,我们在Tesla V100上以68.9 FPS的速度实现了在COCO上50.0%的AP,比YOLOv5-L高出1.8%AP。
此外,我们单独使用YOLOX-L模型获得了`流媒体感知挑战比赛的第一名(2021年CVPR自动驾驶研讨会)。
我们希望这份报告可以为开发人员和实际场景中的研究人员提供有用的经验,我们还提供支持ONNX、TensorRT、NCNN和Openvino的部署版本。源代码在https://github.com/Megvii-BaseDetection / YOLOX。
1.介绍
随着目标检测的发展,YOLO系列在实时应用中始终追求速度和精度的权衡。他们选取当时可用的最先进的检测技术(例如把anchor用于YOLOv2,把Residual Net用于YOLOv3),并优化最佳实践的实现。目前,YOLOv5保持了最佳的权衡性能,在COCO上有48.2%的AP并且推理时间为13.7ms。
然而,在过去的两年中,目标检测学术界的主要进展集中在Anchor-free检测器、高级标签分配策略和端到端(NMS-free)检测器。这些还没有被纳入YOLO系列,如YOLOv4和YOLOv5仍然是基于anchor的检测器,为训练手工分配规则。
这就是我们提出YOLOX的原因,将这些最新的改进与比较成熟的优化移植到YOLO系列。考虑到YOLOv4和YOLOv5对基于anchor的策略可能有一点过度优化,我们选择YOLOv3作为起始点(我们将YOLOv3- spp设置为默认的YOLOv3)。事实上,由于计算资源有限,在各种实际应用中软件支持不足,YOLOv3仍然是行业中应用最广泛的检测器之一。
如图1所示,通过以上技术。在COCO数据集上的640分辨率条件下,我们将YOLOv3提高到47.3%AP(YOLOX-DarkNet53),大幅度超过了目前的YOLOv3最佳实践(44.3% AP, ultralytics version2)。此外,当使用最先进的YOLOv5架构(采用先进的CSPNet backbone和额外的PAN头)时,在COCO数据集上的640分辨率条件下,YOLOX-L实现了50.0%的AP,比对应的YOLOv5- l高出1.8%的AP。我们也在小尺寸的模型上测试我们的设计策略,YOLOX-Tiny和YOLOX-Nano(仅0.91M参数和1.08G FLOPs)比相应的YOLOv4-Tiny和NanoDet3分别高出10% AP和1.8% AP。
我们在https://githubcom/Megvii-BaseDetection/YOLOX发布了我们的代码。支持 ONNX,TensorRT, NCNN和Openvino。值得一提的是,我们使用单独的YOLOX-L模型获得了流媒体感知挑战赛第一名(2021年CVPR自动驾驶研讨会)。
2.YOLOX
2.1 YOLOX-DarkNet53
我们选择 YOLOv3 和 Darknet53 作为我们的基线。 在接下来的部分中,我们将逐步介绍 YOLOX 中的整个系统设计。
实现细节:
训练参数设置,从基线模型到最终模型保持。
- 数据集:COCO trian2017
- epochs:300
- 优化器:SGD
- 学习率: lr*BatchSize/64 ,lr = 0.01
- 权重衰减系数:为0.0005
- SGD动量系数:0.9
- GPU数量:8个Tesla v100
- batchsize:128
也可以选择单个GPU和其他的batch size进行训练。图像输入尺寸从448到832,即32为步长。FPS和latency
在沦为中也有测量结果,通过FP16-precision
和batch=1
在单个Tesla v100得到。
YOLOV3 baseline:
采用DarkNet53结构和SPP层作为基础网络,即YOLOV3-SPP。与原始实现相比,我们略微更改了一些训练策略,添加了 EMA 权重更新、CosineLRScheduler 、IoU 损失和 IoU-aware分支。 我们使用 BCE 损失来训练 cls 和 obj 分支,使用 IoU 损失来训练 reg 分支。这些通用训练技巧与 YOLOX 的关键改进是正相关的,因此我们将它们放在基线上。此外,我们仅使用RandomHorizontalFlip, ColorJitter和多尺度数据增强和放弃RandomResizedCrop策略,因为我们发现RandomResizedCrop与计划的马赛克增强有重叠。如表2所示,使用这些增强方法,我们的基础网络在COCO验证集上得到了38.5%的AP。
目标检测中的解耦头:
分类任务与回归任务之间的冲突是一个众所周知的问题。因此,用于分类和定位的解耦头被广泛应用于大多数一阶段和两阶段检测器中。然而,如图2所示,虽然YOLO系列的骨干和特征金字塔(如FPN,PAN)不断发展,但是它们的检测头保持耦合。
我们的两个分析实验表明,耦合检测头可能会损害性能。
如图三所示,使用解耦头取代YOLO的头部可以极大地提高收敛速度。
解耦头对于YOLO的端到端版本至关重要。
从表1可以看出,端到端版本在使用耦合头时降低4.2% 的AP,而在使用解耦头时降低0.8% AP。
因此如图二所示,我们将YOLO检测头替换为轻量解耦头。具体来说,它包含一个1x1卷积层以降低通道维数,然后分别经过有两个3x3卷积层的两个并行分支。
我们在表2中报告了V100上batch=1的推理时间,轻量解耦头带来了额外的1.1 ms (11.6 ms vs 10.5 ms)。
强数据增强:
我们将Mosaic和MixUp添加到我们的增强策略中,以提高YOLOX的性能。Mosaic是ultralytics-YOLOv3提出的一个有效的数据增强策略,然后它被广泛的应用于YOLO v4、YOLO v5和其他检测器中。MixUp最初设计用于图像分类任务,后来在BoF中进行了修改,用于目标检测训练。
我们在我们的模型中采用MixUp和Mosaic,并且在最后15个epoch关闭,如图2所示,达到了42.0% AP。在使用强数据增强后,我们发现基于ImageNet的预训练模型并没有更好的效果,因此我们所有的模型都是从头开始训练的。
Anchor-free:
YOLOv4和YOLOv5都遵循YOLOv3原来的基于anchor-based。然而,anchor机制存在许多已知的问题。
首先,为了达到最优的检测性能,需要在训练前进行聚类分析,确定一组最优的anchors,那些聚集的anchor是特定领域的,不具有通用性。其次,anchor机制增加了检测头部的复杂性,以及对每幅图像的预测数量。在一些边缘AI系统中,在设备之间移动如此大量的预测(例如,从NPU到CPU)可能成为整体延迟方面的潜在瓶颈。
anchor-free检测器在过去的两年中发展迅速,这些工作表明,anchor-free检测器的性能可以与anchor-based的检测器相当。anchor-free机制显著减少了设计参数的数量,这些参数需要手动调参和许多涉及的技巧(如anchor聚类,Grid Sensitive)以达到更好的性能,特别是训练和解码阶段anchor-free机制大大简化了检测器性能。
Grid Sensitive是YOLOv4模型引入的一种优化方法,即在计算预测框中心点在网格内的坐标时,对输出logit取sigmoid激活后,再加上一个缩放和偏移,可以保证预测框中心点能够有效的拟合真实框刚好落在网格边线上的情况。
将YOLO切换为anchor-free方式非常简单。我们将每个位置的预测从3个减少到1个,并使它们直接预测4个值,即网格左上角的两个偏移量,以及预测框的高度和宽度。我们分配每个目标的中心作为正样本并预先定义一个刻度范围,正如所做的那样,为每个目标指定一个FPN级别。这样的修改降低了探测器的参数和GFLOPs,使其速度更快,但获得了更好的性能- 42.9% AP,如表2所示。
Multi positives:
为了与YOLOv3的分配规则一致,上面的anchor-free版本为每个目标只选择一个正样本(中心位置),同时忽略其他高质量的预测。
优化这些高质量的预测也可能带来有益的梯度,这可能会缓解训练中正/负抽样的极端不平衡。我们简单地将中心3*3区域指定为正样本,在FCOS中也称为中心取样。如表2所示,该检测器的AP性能提高到45.0%,已经超过了目前的ultralytic - yolov3最佳实践(44.3% AP2)。
SimOTA
先进的标签分配是近年来目标检测另一种重要进展。基于我们自己的研究OTA,我们总结了先进的标签分配的四个关键点:
损失/质量 感知
中心先验
每个GT的正锚框的动态数量(缩写为dynamic top-k)
全局视图。
OTA满足了以上所有四个条件,因此我们选择它作为一种候选标签分配策略。
具体地,OTA从全局角度分析了标签分配,并将分配过程表示为优化传输问题,在当前分配策略中达到了SOTA性能。但是,实际上我们发现用Sinkhorn-Knopp算法解决OT问题带来25%的额外训练时间,对于训练30epochs来说有些费时。因此,我们将其简化为动态top-k策略,命名为SimOTA,以获得接近的结论。
我们这里简要介绍了SimOTA。SimOTA首先计算了成对匹配程度,每个GT和预测值由损失或质量表示。例如,在SimOTA,GT (gi) 和预测值(pj) 的损失计算如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
其中 λ 是平衡系数。 L i j^cls 和 L i j^reg 是GT (gi)和预测值(pj)之间的分类损失和定位回归损失。
对于GT( gi),我们选择损失最低的前k个预测值作为它的正样本。最后,这些正样本的对应网格被分配为正样本,其他为负样本。值得注意的是不同GT的 k 值不同。更多详情请参考OTA动态k估计策略。
SimOTA不仅减少了训练时间,也避免了Sinkhorn-Knopp算法中额外的需要计算的超参数。如表2所示,SimOTA将AP从45.0%提高至47.3%,比SOTA ultralytics-YOLOv3高3%,表示先进分配策略的有效性。
端到端YOLO
我们按照( PSS head的思想)添加两个卷积层、一对一标签分配、和梯度停止操作。使得检测器能够以端到端的方式进行,但稍微降低了性能以及推理速度。如下表所示NMS free选项。因此,将其作为一个可选模块,并不包含在最终模型中。
(用新的模块PSS(Positive Samples Selector)替代对传统NMS的调用,真正实现End2End的目标检测训练。)
2.2 其他骨干网
除了DarkNet53外,我们也测试了YOLOX不同尺寸的backbone,YOLOX相比于其它对应的网络取得了一致的改进效果。
修改YOLOv5的CSPNet
为了有一个公平比较,我们采用精确的YOLOv5的主干包括修改的CSPNet,SiLU激活函数,和PAN头。我们也遵循它的缩放规则来产生YOLOX-S,YOLOX-M,YOLOX-L,和YOLOX-X模型。与YOLOv5比较,如下表所示,我们的模型一致提升了1.0%到3.0%AP,只有稍微的时间增加(增加部分来自于解耦头)。
Tiny和Nano检测器
我们进一步缩小了模型成为YOLOX-Tiny来与YOLOv4-Tiny比较。对于移动设备,我们采用深度方向卷积来构建YOLOX-Nano,仅0.91M参数和1.08FLOPs。如下表所示,YOLOX在更小模型尺寸下比对应模型表现更好。
模型尺寸和数据增强
我们的实验中,所有模型保证几乎相同的学习策略和优化参数,如2.1所描述。但是,我们发现合适的增强策略在不同尺寸模型上也不同。如表5,当应用MixUp在YOLOX-L上可以提高0.9%AP,但对于像YOLOX-Nano的小模型,AP反而降低了。
具体地,当训练小模型即YOLOX-S,YOLOX-Tiny,YOLOX-Nano时,我们移除mix up增强并减弱mosaic(减少缩放范围从[0.1, 2.0]到[0.5, 1.5])。这样的修改将YOLOX-Nano的AP从24.0%提升到25.3%。
对于大模型,我们同样发现更强的增强方式更有帮助。确实,我们的MixUp措施比原始版本有一部分更强。受Copypaste启发,在将两幅图像混合之前,我们通过随机采样的比例因子对它们进行了抖动。为了理解带有缩放抖动的MixUp,我们在YOLOX-L上比较其与Copypaste。值得注意的是Copypaste需要额外实例掩膜标注但MixUp不用。但如表5显示,这两个方法达到了几乎相同的性能,表明当没有实例掩膜标注可用时,带有缩放抖动的MixUp是Copypaste的替换。
3 与SOTA比较
下表为和传统SOTA的比较。但是,记住表中的模型推理速度通常不可控,不同的软件与硬件的速度不同。因此,我们对图1中的所有YOLO系列使用相同的硬件和代码库,绘制了稍微受控的速度/精度曲线。
我们注意到有些高性能YOLO系列具有更大模型尺寸比如Scale-YOLOv4和YOLOv5-P6。当前基于Transformer的检测器将SOTA的准确度提升至60AP。由于时间和资源限制,本文中我们没有探讨这些重要特征。但它们已经在考虑中。
4 流媒体感知挑战第一名
WAD 2021的流媒体感知挑战是一个联合项目
通过最近提出的度量标准(流媒体精度)来评估准确性和延迟。
该指标背后的意义是联合评估每时刻整个感知栈的输出,强制堆栈考虑计算时被忽略的流数据量。我们发现在30 FPS数据流上度量的最佳平衡点是推理时间≤ 33ms的强大模型。所以我们采用TensorRT对YOLOX-L模型进行量化,生成最终模型,赢得第一名。
详情请见挑战网页。
5 结论
本汇报中,我们介绍了YOLO系列的一些经验改进,构成了高性能anchor-free检测器叫YOLOX。配备一些最近先进检测技术,即解耦头,anchor-free,先进标签分配策略。YOLOX在所有模型尺寸比其他产品达到了一个更好的速度和准确率的平衡点。由于广泛的兼容性,YOLOv3是工业上最广泛使用的检测器之一,令人惊讶的是提升了其架构使在COCO上达到了47.3%AP,超出当前最佳实践3.0%AP。希望本汇报可以帮助开发者和研究者们在实际场景中得到更好的经验。