YOLOX——YOLO系列2021(中文翻译)

源码资源:https://github.com/Megvii-BaseDetection/YOLOX
论文:https://arxiv.org/abs/2107.08430

在这里插入图片描述

摘要

在本论文中,我们介绍了YOLO系列的一些经验改进,形成了一个新的高性能检测器——YOLOX。我们将YOLO检测器切换为无锚方式并进行其他高级检测技术。即Decoupled head和先进的标签分配策略SimOTA,可以从大规模模型中实现得到最先进的结果。对于仅有0。91M参数的YOLO-Nano和1。08G的FLOPs。我们在COCO数据集上得到25.3%的平均准确率(AP)。超过了NanoDet 1.8%的AP。对于业界使用最广泛的检测器YOLOV3,在COCO数据集上提到了47.3%的AP,输出性能比当前最好的腰高3%个AP。对于和YOLOV4-CSP有相同数量的YOLOX-L,我们使用COCO数据集在Tesla v100上以68.9 FPS的速度得到50%的AP。比YOLOV5-L高1.8%AP。我们使用单个YOLOX-L模型赢得了第一名在Streaming Perception Challenge(Workshop on Autonomous Driving at CVPR 2021)。我们希望这个论文能够为检测研究学者们在实际应用中提供有用的经验,并且我们也提供了支持 ONNX、TensorRT、NCNN 和 Openvino 的部署版本,源代码在YOLOX

引言

随着目标检测的发展,YOLO系列[23,24,25,1,7]始终追求权衡实时检测的速度和最佳准确度。他们使用最先进的识别技术在提升效率和优化最佳检测性能。最近,YOLOV5已经阐释了最好的性能在权衡检测时间和检测效率上,在COCO数据集上达到了48.2%的AP,13.7ms的检测时间。
过去的两年多时间里,目标识别的主要优势在于聚焦在无锚方式检测器,高级标签分配策略,和端到端(NMS-free)的检测器.这些尚未集成到 YOLO 系列中,因为 YOLOv4 和 YOLOv5 仍然是基于锚点的检测器,使用手工制作的训练分配规则。
考虑到YOLOV4和YOLOV5可能存在对基于锚的基础准则上过优化,我们选择YOLOV3作为我们的开始点(设置YOLOV3-SPP作为默认的YOLOV3)。确实,由于计算资源有限,以及各种实际应用中的软件支持不足,YOLOv3仍然是业界应用最广泛的检测器之一。
图一所示,随着上述技术的经验更新,我们提升YOLOV3在图像分辨率为640x640的COCO数据下的AP到47.3%(YOLOX-DarkNet53),很大程度上超越了现有的YOLOV3版本的准确率(44.3%的AP,ultralytics版本)。此外,切换到采用先进的CSPNet骨干网络和PAN head的YOLOV5结构,YOLOX-L能够在640x640分辨率下的COCO数据集上得到50%的AP,比YOLOV5-L高出1.8%的AP。我们还在小尺寸模型上测试我们的设计策略。 YOLOX-Tiny 和 YOLOX-Nano(仅 0.91M 参数和 1.08G FLOPs)分别比对应的 YOLOv4-Tiny 和 NanoDet 3 高 10% AP 和 1.8% AP。

2 YOLOX

2.1 YOLOX-DarkNet53

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

实现细节:

训练参数设置,一共训练了300个epochs在COCO trian2017数据集上,使用SGD训练。使用学习率为 lr*BatchSize/64 ,lr = 0.01。权重衰减系数为0.0005并且SGD动量系数为0.9。使用8个GPU并行训练,并设置batch size为128。也可以选择单个GPU和其他的batch size进行训练。图像输入尺寸从448到832,即32为步长。FPS和latency在沦为中也有测量结果,通过FP16-precision和batch=1在单个Tesla v100得到。

YOLOV3 baseline:

采用DarkNet53结构和SPP层作为基础网络,即一些文章中的YOLOV3-SPP。与原始实现 [25] 相比,我们略微更改了一些训练策略,添加了 EMA 权重更新、余弦 lr 计划、IoU 损失和 IoU 感知分支。 我们使用 BCE 损失来训练 cls 和 obj 分支,使用 IoU 损失来训练 reg 分支。这些通用训练技巧与 YOLOX 的关键改进是正交的,因此我们将它们放在基线上。此外,我们仅使用RandomHorizontalFlip, ColorJitter和多尺度数据增强和放弃RandomResizedCrop策略,因为我们发现RandomResizedCrop与计划的马赛克增强有重叠。如表2所示,使用这些增强方法,我们的基础网络在COCO验证集上得到了38.5%的AP。

Decoupled head:

分类和回归任务冲突是一个非常常见的问题,因此分类的Decoupled head和localization被广泛应用与one-stage和two-stage检测器上。然而,作为YOLO系列的骨干及特征金字塔的不断发展,他们的检测heads保持耦合,如图2所示。
我们的两个分析实验表明coupled detection head可能降低性能。 1)将YOLO的head换成decoupled,能大大提升收敛速度,如图3.2所示。decoupled head是YOLO端到端版本不可缺少的(下面会进行描述)。从表1中可以看出,使用coupled head的端到端任务减少了4.2%的AP,而使用decoupled head的减少了0.8%的AP。因此,我们使用了如图2所示的lite decoupled head给YOLO。它包含一个1x1的卷积层,目的减少通道维数,然后是两个平行的分支,分别带有两个 3 × 3 的卷积层。我们在表2中记录了batch=1的在V100的inference time,并且lite decoupled head带来了额外的1.1ms(11.6ms v.s. 10.5ms)。

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

Strong data augmentation:

我们添加了Mosaic和MixUp在增强策略中,目的是提升YOLOX的性能。Mosaic是ultralytics-YOLOV3中提出的有效的增强策略。被广泛应用于OLOV4,YOLOV5和其他检测器中。MixUp通常应用于图像分类任务中,但是在BoF中也被应用于目标检测训练中。我们采用MixUp和Mosaic方法在我们的模型中,并且在最后15epochs将其关闭。得到表2中的42%的AP。在使用strong data augmentation后,我们发现ImageNet预训练不再是有利的,我们因此从头开始训练以下所有的模型。

Anchor-free

YOLOV4和YOLOV5遵循最初YOLOV3的anchor基本准则。然而,anchor机制存在一些问题。首先,为了得到较优的检测性能,训练前需要进行聚类分析,确定一组最优的anchors。那些聚集的anchor是特定于领域的并且不太普遍。其次,anchor机制增加了检测头的复杂性,以及每个图像的预测数量。 在某些边缘 AI 系统上,在设备之间(例如,从 NPU 到 CPU)移动如此大量的预测可能会成为整体延迟方面的潜在瓶颈。
在过去的两年里,Anchor-free检测器已经迅速发展了。实验证明基于anchor-free的检测器比基于anchor的检测器性能好。Anchor-free机制显着减少了需要启发式调整和许多技巧的设计参数的数量(例如,Anchor Clustering、Grid Sensitive),为了获得良好的性能,使检测器,尤其是其训练和解码阶段变得更加简单。
将 YOLO 切换为anchor-free方式非常简单。 我们将每个位置的预测从 3 减少到 1,并使它们直接预测四个值,即网格左上角的两个偏移量,以及预测框的高度和宽度。我们将每个对象的中心位置指定为正样本并预先定义一个尺度范围,如 [29] 中所做的那样,为每个对象指定 FPN 级别。这种修改降低了检测器的参数和 GFLOPs 并使其更快,但获得了更好的性能 42.9% AP,如表 2所示。

Multi positives

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

SimOTA

高级标签分配是近年来物体检测的另一个重要进展。 基于我们自己的研究 OTA,我们总结了高级标签分配的四个关键见解:1) 损失/质量意识 2) 中心优先 3 每个ground-truth的动态正anchor数量为4(缩写为动态top-k),4) 全球视野。 OTA 满足上述所有四个规则,因此我们选择它作为候选标签分配策略。
具体来说,OTA从全局角度分析标签分配,并将分配过程制定为最优传输 (OT) 问题,在当前分配策略中产生 SOTA 性能 [12, 41, 36, 22, 37]。 然而,在实践中我们发现通过 Sinkhorn-Knopp 算法解决 OT 问题会带来 25% 的额外训练时间,这对于训练 300 个 epoch 来说是相当昂贵的。 因此,我们将其简化为动态 top-k 策略,命名为 SimOTA,以获得近似解。
我们在这里简单介绍一下 SimOTA。 SimOTA 首先计算成对匹配度,由每个预测 g t gt gt对的成本 [4, 5,12, 2] 或质量 [33] 表示。 例如,在 SimOTA 中, g t g_{t} gt g i g_{i} gi 和预测 p j p_{j} pj 之间的成本计算如下:
C i j C_{ij} Cij = L i j c l s L_{ij}^{cls} Lijcls + q L i j r e g qL_{ij}^{reg} qLijreg
其中q是平衡系数, L i j c l s L_{ij}^{cls} Lijcls q L i j r e g qL_{ij}^{reg} qLijreg g t g_{t} gt g i g_{i} gi 和预测 p j p_{j} pj 之间的分类损失和回归损失。然后,对于 g t g_{t} gt g i g_{i} gi ,我们选择固定中心区域内成本最低的前 k 个预测作为其正样本。 最后,这些正预测的相应网格被指定为正,而其余的网格是负。 请注意,k 值因不同的真实情况而异。 更多细节请参考 OTA [4] 中的动态 k 估计策略。
SimOTA 不仅减少了训练时间,而且避免了 Sinkhorn-Knopp 算法中额外的求解器超参数。 如表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 head。 我们也遵循其缩放规则来生产 YOLOX-S、YOLOX-M、YOLOX-L 和 YOLOX-X 模型。 与 Tab 中的 YOLOv5 相比。 在图 3 中,我们的模型持续改进了大约 3.0% 到大约 1.0% 的 AP,只有边际时间增加(来自decoupled head)。

Tiny and Nano detectors

我们将模型进一步缩小为 YOLOX-Tiny 以与 YOLOv4-Tiny 进行比较。 对于移动设备,我们采用深度卷积来构建 YOLOX-Nano 模型,该模型只有 0.91M 参数和 1.08G FLOP。 如表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 不需要。但如表5所示。这两种方法实现了有竞争力的性能,表明当没有实例掩码注释可用时,带有缩放抖动的 MixUp 是 Copypaste 的合格替代品。
在这里插入图片描述

3. Comparison with the SOTA

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

在这里插入图片描述

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

WAD 2021 上的流媒体感知挑战是通过最近提出的度量标准对准确性和延迟进行的联合评估:流媒体准确性 [15]。该指标背后的关键洞察力是共同评估整个每个时刻的感知堆栈,迫使堆栈考虑在计算发生时应该忽略的流数据量[15]。我们发现 30 FPS 数据流的度量的最佳折衷点是推理时间≤ 33ms 的强大模型。所以我们采用带有 TensorRT 的 YOLOX-L 模型来制作我们的最终模型,以赢得第一名的挑战。详情请参阅挑战网站5。

5 Conclusion

在本报告中,我们介绍了 YOLO 系列的一些经验更新,它形成了一个名为 YOLOX 的高性能anchor-free检测器。配备了一些最近的先进检测技术,即decoupled anchor、anchor-free和advanced label assigning strategy,YOLOX 在所有模型大小的速度和准确性之间实现了比其他同行更好的权衡。值得注意的是,我们将 YOLOv3 的架构提升到 COCO 上的 47.3% AP,超过当前最佳实践 3.0% AP,YOLOv3 由于其广泛的兼容性而仍然是业界使用最广泛的检测器之一。我们希望这份报告能够帮助开发者和研究人员在实际场景中获得更好的体验。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值