YOLOX: Exceeding YOLO Series in 2021

YOLOX: Exceeding YOLO Series in 2021

Abstract

在这份报告中,我们对YOLO系列进行了一些有经验的改进,形成了一个新的高性能检测器–YOLOX。我们将YOLO检测器转换为无锚方式,并进行其他先进的检测技术,即解耦头和领先的标签分配策略SimOTA,在大规模的模型范围内获得最先进的结果。对于只有0.91M参数和1.08G FLOPs的YOLONano,我们在COCO上得到25.3%的AP,超过NanoDet 1.8%的AP;对于YOLOv3,工业界最广泛使用的检测器之一,我们在COCO上将其提高到47.3%AP,比当前的最佳做法高出3.0%AP;对于YOLOX-L,其参数数量与YOLOv4CSP、YOLOv5-L大致相同,我们在Tesla V100上以68.9 FPS的速度在COCO上实现了50.0%的AP,比YOLOv5-L超出1.8%的AP。此外,我们使用一个YOLOX-L模型赢得了流感知挑战赛(CVPR 2021的自动驾驶研讨会)的第一名。我们希望这份报告能够为实际场景中的开发者和研究者提供有用的经验,我们还提供了支持ONNX、TensorRT、NCNN和Openvino的部署版本。源代码在https://github.com/ Megvii-BaseDetection/YOLOX。

1 Introduction

随着物体检测的发展,YOLO系列[23, 24, 25, 1, 7]始终追求实时应用的最佳速度和精度折衷。他们提取了当时最先进的检测技术(例如,YOLOv2[24]的锚点[26],YOLOv3[25]的残余网[9]),并优化了最佳实践的实施。目前,YOLOv5[7]拥有最佳的权衡性能,在13.7毫秒的COCO上拥有48.2%的AP。

然而,在过去两年中,物体检测学术界的主要进展集中在无锚检测器[29, 40, 14]、高级标签分配策略[37, 36, 12, 41, 22, 4]和端到端(无NMS)检测器[2, 32, 39]。这些还没有被整合到YOLO系列中,因为YOLOv4和YOLOv5仍然是基于锚的检测器,使用手工制作的分配规则进行训练。

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

如图1所示,通过上述技术的经验更新,我们将YOLOv3在640×640分辨率的COCO上的AP提高到47.3%(YOLOX-DarkNet53),大大超过了YOLOv3目前的最佳实践(44.3% AP ,Ultralytics version2)。此外,当切换到采用先进的CSPNet[31]骨干网和额外的PAN[19]头的先进YOLOv5架构时,YOLOX-L在640×640分辨率的COCO上实现了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://github.com/Megvii-BaseDetection/YOLOX 上发布了我们的代码,支持 ONNX、TensorRT、NCNN 和 Openvino。值得一提的是,我们使用单个 YOLOX-L 模型赢得了流媒体感知挑战赛(CVPR 2021 自动驾驶研讨会)的第一名。

2 YOLOX

2.1. YOLOX-DarkNet53

Implementation details
我们选择YOLOv3[25]与Darknet53作为我们的基线。在下面的部分,我们将一步一步地走过YOLOX的整个系统设计。实施细节 我们的训练设置从基线到我们的最终模型基本一致。我们在COCO train2017[17]上总共训练了300个epochs的模型,其中有5个epochs的预热。我们使用随机梯度下降法(SGD)进行训练。我们使用lr×BatchSize/64的学习率(线性缩放[8]),初始lr=0.01,余弦lr计划。权重衰减为0.0005,SGD动量为0.9。批量大小为128,默认为典型的8-GPU设备。其他批次大小包括单GPU训练也很好。输入大小从448到832均匀地抽取32个步长。本报告中的FPS和延迟都是在单个Tesla V100上用FP16精度和batch=1测量的。

YOLOv3 baseline 我们的基线采用了 DarkNet53 主干和一个 SPP 层的架构,在一些论文中提到了 YOLOv3-SPP [1, 7]。与原始实现 [25] 相比,我们略微更改了一些训练策略,添加了 EMA 权重更新、余弦 lr 调度、IoU 损失和 IoU 感知分支。我们使用 BCE 损失来训练 cls 和 obj 分支,使用 IoU 损失来训练 reg 分支。这些通用训练技巧与 YOLOX 的关键改进正交,因此我们将它们放在基线上。此外,我们只对数据增强进行了 RandomHorizo​​ntalFlip、ColorJitter 和多尺度,并丢弃了 RandomResizedCrop 策略,因为我们发现 RandomResizedCrop 与计划的马赛克增强有点重叠。通过这些增强,我们的基线在 COCO val 上实现了 38.5% 的 AP,如表中所示。 2.

Decoupled head 在目标检测中,分类和回归任务之间的冲突是一个众所周知的问题[27, 34]。因此,用于分类和定位的解耦头广泛用于大多数单级和两级检测器[16,29,35,34]。然而,随着 YOLO 系列的主干和特征金字塔(例如 FPN [13]、PAN [20])不断发展,它们的检测头保持耦合,如图 2 所示。我们的两个分析实验表明,耦合检测头可能损害性能。 1)。用解耦的头部替换 YOLO 的头部大大提高了收敛速度,如图 3 所示。2)。解耦头对于 YOLO 的端到端版本是必不可少的(将在下面进行描述)。从Tab可以看出。在图 1 中,耦合头的端到端属性降低了 4.2% AP,而解耦头的降低到 0.8% AP。因此,我们将 YOLO 检测头替换为 lite 解耦头,如图 2 所示。具体来说,它包含一个 1×1 的卷积层以减少通道维度,然后是两个平行的分支,分别具有两个 3×3 的卷积层。我们在选项卡的 V100 上报告了 batch=1 的推理时间。 2 和 lite 解耦头带来额外的 1.1 毫秒(11.6 毫秒对 10.5 毫秒)。

Strong data augmentation 我们将 Mosaic 和 MixUp 添加到我们的增强策略中,以提高 YOLOX 的性能。 Mosaic 是由 ultralytics-YOLOv32 提出的一种有效的增强策略。然后它被广泛用于 YOLOv4 [1]、YOLOv5 [7] 和其他检测器 [3]。 MixUp [10] 最初是为图像分类任务而设计的,但后来在 BoF [38] 中进行了修改以进行目标检测训练。我们在模型中采用了 MixUp 和 Mosaic 实现,并在最后 15 个 epoch 中关闭它,在 Tab 中实现了 42.0% 的 AP。 2. 使用强数据增强后,我们发现 ImageNet 预训练没有更多好处,因此我们从头开始训练以下所有模型。无锚 YOLOv4 [1] 和 YOLOv5 [7] 都遵循 YOLOv3 [25] 的原始基于锚的管道。然而,锚定机构具有许多已知问题。首先,为了达到最佳检测性能,需要在训练前进行聚类分析以确定一组最佳锚点。那些聚集的锚点是特定领域的,不太通用。其次,锚机制增加了检测头的复杂性,以及每张图像的预测数量。在某些边缘 AI 系统上,在设备之间移动如此大量的预测(例如,从 NPU 到 CPU)可能会成为整体延迟方面的潜在瓶颈。无锚探测器 [29, 40, 14] 在过去两年中发展迅速。这些工作表明,无锚检测器的性能可以与基于锚的检测器相提并论。 Anchor-free 机制显着减少了需要启发式调整的设计参数的数量和涉及的许多技巧(例如,Anchor Clustering [24]、Grid Sensitive [11]。)以获得良好的性能,使得检测器,尤其是它的训练和解码阶段,相当简单[29]。

将 YOLO 切换为无锚的方式非常简单。我们将每个位置的预测从 3 减少到 1,并使它们直接预测四个值,即网格左上角的两个偏移量,以及预测框的高度和宽度。我们将每个对象的中心位置指定为正样本并预先定义一个比例范围,如 [29] 中所做的那样,以指定每个对象的 FPN 级别。这样的修改减少了检测器的参数和 GFLOPs,使其更快,但获得了更好的性能——42.9% AP,如表2所示。

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

SimOTA:高级标签分配是近年来目标检测的又一重要进展。根据我们自己的 OTA 研究 [4],我们得出了高级标签分配的四个关键见解:1)。损失/质量意识,2)。先验中心,3)。每个ground-truth的正anchors的动态数量4(缩写为dynamic top-k),4)。全球视野。 OTA 满足上述所有四个规则,因此我们选择它作为候选标签分配策略。

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

我们在这里简单介绍一下 SimOTA。 SimOTA 首先计算成对匹配度,由每个预测-gt 对的成本 [4, 5, 12, 2] 或质量 [33] 表示。例如,在 SimOTA 中,gt gi 和预测 pj 之间的成本计算为: cij =Lclsij + λLreg ij , (1) 其中 λ 是平衡系数。 Lclsij 和 Lreg ij 是 gt gi 和预测 pj 之间的分类损失和回归损失。然后,对于 gt gi,我们选择在固定中心区域内成本最低的前 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 模型。与 Tab 中的 YOLOv5 相比。如图 3 所示,我们的模型得到了 ∼3.0% 到 ∼1.0% AP 的一致改进,只有边际时间增加(来自解耦头)。
Tiny and Nano detectors :我们将模型进一步缩小为 YOLOX-Tiny 以与 YOLOv4-Tiny [30] 进行比较。对于移动设备,我们采用深度卷积来构建 YOLOX-Nano 模型,该模型只有 0.91M 参数和 1.08G FLOPs。如表中所示。 4、YOLOX 在模型尺寸比同类产品更小的情况下表现良好。

Model size and data augmentation:在我们的实验中,所有模型都保持几乎相同的学习计划和优化参数,如 2.1 中所述。然而,我们发现合适的增强策略因模型大小而异。作为选项卡。如图 5 所示,虽然对 YOLOX-L 应用 MixUp 可以提高 0.9% 的 AP,但对于 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 不需要。但如 Tab 所示。如图 5 所示,这两种方法实现了有竞争力的性能,表明在没有可用的实例掩码注释时,具有比例抖动的 MixUp 是 Copypaste 的合格替代品。

3. Comparison with the SOTA

在 Tab 6. 中显示 SOTA 比较表是一种传统。但是,请记住,此表中模型的推理速度通常是不受控制的,因为速度因软件和硬件而异。因此,我们为图 1 中的所有 YOLO 系列使用相同的硬件和代码库,绘制了稍微受控的速度/精度曲线。
我们注意到有一些具有较大模型尺寸的高性能 YOLO 系列,如 Scale-YOLOv4 [30] 和 YOLOv5-P6 [7]。并且当前基于 Transformer 的检测器 [21] 将准确度-SOTA 推到 ∼60 AP。由于时间和资源的限制,我们没有在本报告中探讨这些重要特征。但是,它们已经在我们的范围内。

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

该指标背后的关键见解是在每个时刻联合评估整个感知堆栈的输出,迫使堆栈考虑在计算发生时应该忽略的流数据量 [15]。我们发现,在 30 FPS 数据流上衡量指标的最佳权衡点是推理时间 ≤ 33ms 的强大模型。因此,我们采用带有 TensorRT 的 YOLOX-L 模型来制作我们的最终模型,以赢得第一名的挑战。详情请参阅挑战网站5。

5. Conclusion

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值