YOLOX论文翻译

题目:《 YOLOX: 2021年超越YOLO系列》


在这里插入图片描述
图1:YOLOX和其他SOTA目标检测模型在“速度-精确度”的对比曲线和部署在移动设备的轻量模型 “参数量-精确度”的对比曲线。

摘要

  在本报告中,我们介绍了YOLO系列的一些经验改进,以此提出了一种新的高性能探测器yolox。我们将YOLO切换为anchor-free方式,并采用其他先进的检测技术,如解耦头和高级标签分配策略SimOTA,以在众多模型中实现了SOTA:对于只有0.91M参数和1.08G FLOPs的YOLONano,我们在COCO上得到25.3%的AP,超过了NanoDet 1.8%的AP;对工业上使用最广泛的探测器之一YOLOv3而言,我们在COCO上将其提高到47.3% AP,比目前的SOTA高出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。

一、介绍

  随着目标检测的发展,YOLO系列[23,24,25,1, 7]总是追求实时应用的最佳速度和精度权衡。他们选取当时可用的最先进的检测技术(例如把anchor[26]用于YOLOv2[24],把Residual Net[9]用于YOLOv3[25]),并优化最佳实践的实现。目前,YOLOv5[7]保持了最佳的权衡性能,在COCO上有48.2%的AP并且推理时间为13.7ms。

  然而,在过去的两年中,目标检测学术界的主要进展集中在Anchor-free检测器[29,40,14]、高级标签分配策略[37,36,12,41,22,4]和端到端(NMS-free)探测器[2,32,39]。这些还没有被纳入YOLO系列,如YOLOv4和YOLOv5仍然是基于anchor的检测器,为训练手工分配规则。

  这就是把我们带到这里的原因,将这些最新的改进与经验丰富的优化一起交付到YOLO系列。考虑到YOLOv4和YOLOv5对基于anchor的策略可能有一点过度优化,我们选择YOLOv3[25]作为起始点(我们将YOLOv3- spp设置为默认的YOLOv3)。事实上,由于计算资源有限,在各种实际应用中软件支持不足,YOLOv3仍然是行业中应用最广泛的探测器之一。

  如图1所示,通过对上述技术的有经验的更新,在COCO上的640640分辨率条件下,我们将YOLOv3提高到47.3%AP (YOLOX-DarkNet53),大幅度超过了目前的YOLOv3最佳实践(44.3% AP, ultralytics version2)。此外,当切换到先进的YOLOv5架构(采用先进的CSPNet[31] backbone和额外的PAN[19]头)时,在COCO上的640640分辨率条件下,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自动驾驶研讨会)。

二、YOLOX

2.1 YOLOX-DarkNet53

  我们选择YOLOv3[25]和Darknet53作为我们的baseline,在接下来的部分,我们将一步步地在YOLOX中介绍整个系统的设计。

  实现细节:从baseline到最终模型,我们的训练设置基本上是一致的。我们在COCO train2017[17]用300个epoch训练模型,其中5个epoch的warm-up。我们使用随机梯度下降(SGD)进行训练。我们使用学习率lr*BatchSize/64(线性缩放[8]),初始lr =0.01和余弦lr计划。重量衰减为0.0005,SGD动量为0.9。默认情况下,典型的8-GPU设备的batchsize大小为128。其他batchsize包括单个GPU训练也很好。输入大小以32为步幅均匀的在448到832之间。这个报告里的FPS和时延是在单个Tesla V100上测试的,所有测量均采用fp16精度和batchsize=1。
在这里插入图片描述

表1:COCO数据集上训练时,解耦头对端到端的YOLO的AP值影响

  YOLOv3 baseline:我们的baseline采用了DarkNet53 backbone的架构和SPP层,在一些论文中参考了YOLOv3-SPP [1,7]。与最初的[25]相比,我们稍微改变了一些训练策略,添加了EMA权重更新、余弦lr计划、IoU损失和IoU-aware分支。在训练的cls和obj分支我们使用BCE损失,在训练的reg分支使用IoU损失。这些一般的训练技巧与YOLOX的关键改进是正交的,因此我们把它们放在baseline上。此外,我们只执行RandomHorizontalFlip,ColorJitter和multi-scale用于数据增强,抛弃RandomResizedCrop策略,因为我们发现RandomResizedCrop与计划的mosaic增强重叠。通过这些增强,如表二所示,我们的baseline在COCO val上达到38.5% AP。

  解耦头:在目标检测中,分类任务与回归任务之间的冲突是一个众所周知的问题[34]。因此,用于分类和定位的解耦头部被广泛应用于大多数一阶段和两阶段探测器中[16,29,35,34]。然而,如图2所示,虽然YOLO系列的骨干和特征金字塔(如FPN [13],PAN[20].)不断进化,它们的探测头保持耦合。

  我们的两个分析实验表明,耦合检测头可能会损害性能。1)如图三所示,使用解耦取代YOLO的头部可以极大地提高收敛速度。2)解耦头对于YOLO的端到端版本(将在后面描述)至关重要。从表1可以看出,端对端特性在耦合头时降低4.2% AP,而在解耦头时降低0.8% AP。因此如图二所示,我们将YOLO检测头替换为轻量解耦头。具体来说,它包含一个11卷积层以降低通道维数,然后是分别有两个33卷积层的两个并行分支。我们在表2中报告了V100上batch=1的推理时间,lite解耦头带来了额外的1.1 ms (11.6 ms vs 10.5 ms)。

在这里插入图片描述

图2:说明YOLO v3头和提出的解耦头之间的区别。对于每一层FPN特征,我们首先采用11卷积层将channel减少到256,然后把带有两个33卷积层的两个平行分支分别用于分类和回归任务。IoU分支被添加到回归分支上。
在这里插入图片描述
图3:YOLOv3:头或解耦头的训练曲线。我们每隔10个epoch在COCO 验证集上评估AP。很明显,解耦的头部收敛速度比YOLOv3头部快得多,最终得到了更好的结果。

   强数据增强:我们将Mosaic和MixUp添加到我们的增强策略中,以提高YOLOX的性能。Mosaic是ultralytics-YOLOv3提出的一个有效的数据增强策略,然后它被广泛的应用于YOLO v4、YOLO v5和其他检测器中。MixUp[10]最初设计用于图像分类任务,后来在BoF[38]中进行了修改,用于目标检测训练。我们在我们的模型中采用MixUp和Mosaic,并且在最后15个epoch关闭,如图2所示,达到了42.0% AP。在使用强数据增强后,我们发现ImageNet的预训练并没有更好的效果,因此我们所有的模型都是从头训练的。

  Anchor-free:YOLOv4[1]和YOLOv5[7]都遵循YOLOv3[25]原来的基于anchor-based。然而,anchor机制存在许多已知的问题。

  首先,为了达到最优的检测性能,需要在训练前进行聚类分析,确定一组最优的anchors,那些聚集的anchor是特定领域的,不一般化。其次,anchor机制增加了检测头部的复杂性,以及对每幅图像的预测数量。在一些边缘AI系统中,在设备之间移动如此大量的预测(例如,从NPU到CPU)可能成为整体延迟方面的潜在瓶颈。

  anchor-free探测器[29,40,14]在过去的两年中发展迅速,这些工作表明,anchor-free检测器的性能可以与基于anchor的检测器相当。anchor-free机制显著减少了设计参数的数量,这些参数需要启发式调整和许多涉及的技巧(如anchor聚类[24],网格敏感[11]。)以达到更好的性能,特别是训练和解码阶段[29]anchor-free机制大大简化了检测器性能。

  将YOLO切换为anchor-free方式非常简单。我们将每个位置的预测从3个减少到1个,并使它们直接预测4个值,即网格左上角的两个偏移量,以及预测框的高度和宽度。我们分配每个目标的中心作为正样本并预先定义一个刻度范围,正如[29]所做的那样,为每个目标分配一个FPN级别。这样的修改降低了探测器的参数和GFLOPs,使其速度更快,但获得了更好的性能- 42.9% AP,如表2所示。

在这里插入图片描述
表2:根据COCO val上的AP (%), YOLOX-Darknet53的路线图。所有模型都在一个Tesla V100上测试,图片分辨率为640*640、采用了fp16精度,batch=1。该表中的时延和FPS是不包括后处理测量的。

  Multi positives:为了与YOLO v3的分配规则一致,上面的anchor-free版本为每个目标只选择一个正样本(中心位置),同时忽略其他高质量的预测。然而,优化这些高质量的预测也可能带来有益的梯度,这可能会缓解训练中正/负抽样的极端不平衡。我们简单地将中心3*3区域指定为正样本,在FCOS[29]中也称为“中心取样”。如表2所示,该检测器的AP性能提高到45.0%,已经超过了目前的ultralytic - yolov3最佳实践(44.3% AP2)。

  SimOTA:高级标签分配是近年来目标检测的又一重要进展。基于我们自己的OTA[4]研究,我们总结出关于高级标签分配的四个关键见解:1)损失/质量意识,2)中心prior,3)每个ground-truth的动态正anchor数量(缩写为dynamic top-k),4)全局视角。OTA满足上述四个规则,因此我们选择它作为候选标签分配策略。具体来说,OTA[4]从全局的角度分析标签分配,并将分配过程表述为最优运输(OT)问题,在现有的分配策略中产生了最好的表现[12, 41, 36, 22, 37]。然而,在实际应用中我们发现使用Sinkhorn-Knopp算法解决OT问题会带来25%额外的训练时间,训练300个epochs这些训练时间相当昂贵。因此我们将其简化为dynamic top-k策略,叫做SimOTA,以求近似解。

  我们在这里简单介绍一下SimOTA。SimOTA首先计算成对匹配度,表示为代价或每个预测gt对的质量。例如,在SimOTA中,gtgi与预测pj之间的代价计算如下:
在这里插入图片描述

  λ是平衡系数,Lcls和Lreg是在gt gi和预测 pj之间的分类损失和回归损失。然后,对于gt gi,选取固定中心区域内代价最小的前k个预测作为正样本。最后,将这些正预测对应的grid赋为正,其余grid赋为负。注意k值随ground-truth不同而变化。详见Dynamic k Estimation strategy in OTA[4]。SimOTA算法不仅减少了训练时间,也避免了Sinkhorn-Knopp中的额外超参数。如表2所示,SimOTA将检测器AP从45.0%提高到47.3%,比SOTA ultralytic - yolov3提高了3.0% AP,显示了高级分配策略的威力。

  端到端YOLO:我们跟随[39]添加两个额外的conv层,一对一标签分配和停止梯度。这使检测器能够以端到端方式执行,但会稍微降低性能和推断速度,如Tab2所示。因此,我们将它作为一个可选模块,它不涉及我们的最终模型。

2.2 其他backbones

  除了DarkNet53,我们还在其他不同尺寸的backbone上测试了YOLOX, YOLOX相对于所有对应的模型取得了一致的改进。
在这里插入图片描述
表3:YOLOX和YOLOv5在COCO上AP(%)的比较。所有模型都在Tesla V100上测试,分辨率为640*640,精度为fp16和batch=1。

在这里插入图片描述
表4:YOLOX-Tiny和YOLOX-Nano与对应的模型在COCO val上AP(%)的比较,所有的模型在416*416分辨率的图片上测试。

  修改YOLOv5中的CSPNet:为了公平比较,我们采用了YOLO v5的backbone,包括修改后的CSPNet [31], SiLU激活,PAN[19]头。我们也遵循它的比例规则产生yolox,YOLOX-M、YOLOX-L和YOLOX-X模型。和表3中的YOLO V5相比,我们的模型取得了一致的改进,改进的AP值在3.0%-1.0%之间。只有边际时间的增长(来自解耦头)。

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

  模型大小和数据增强:在我们的实验中,所有的模型保持几乎相同的学习率和优化参数,如2.1所示。然而,我们发现适当的增强策略在不同规模的模型中是不同的。如表5所示,当在YOLOX-L应用MixUp可以提高0.9%的AP,对于小模型如YOLOX-nano,增强效果更弱。具体来说,我们在训练小模型,即YOLOX-S、YOLOX-Tiny和YOLOX-Nano时,去除MixUp,减弱mosaic(将比例范围从[0.1,2.0]减小到[0.5,1.5])。这样的修改将YOLOX-Nano的AP从24.0%提高到25.3%。

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

在这里插入图片描述
表5:不同模型规模下的数据增强效果。“Scale Jit”表示马赛克图像的比例抖动范围。采用Copypaste时使用了来自COCO trainval的实例掩码注释。“Scale Jit”表示mosaic图像的比例抖动范围。采用Copypaste时使用了来自COCO trainval的实例掩码注释。

三、与SOTA比较

  有一个传统是显示如表6所示的SOTA比较表。然而,请记住,由于速度随软件和硬件的变化而变化,表中模型的推断速度通常是不受控制的。因此,我们对图1中的所有YOLO系列使用相同的硬件和代码库,绘制稍微受控的速度/精度曲线。

  我们注意到,有一些高性能的YOLO系列具有较大的模型尺寸,如Scale-YOLOv4[30]和YOLOv5-P6[7]。并且当前基于Transformer的检测器把SOTA的精度推到了60%AP。由于时间和资源的限制,我们没有在本报告中探讨这些重要的特性。然而,它们已经在我们的范围内了。
在这里插入图片描述
表6:不同目标探测器在COCO 2017测试开发集中的速度和精度比较。为了公平比较,我们选择了300个epoch训练的所有模型。

四、流媒体感知挑战第一名(2021年CVPR自动驾驶研讨会)

  2021年WAD的流媒体感知挑战赛通过最近提出的指标(流精度)对准确性和时延进行联合评估。在这个度量后的关键是联合评估整个感知堆栈在每个瞬间的输出,迫使堆栈考虑在计算发生时应该忽略的流数据量[15]。我们发现了度量的最佳权衡点在30FPS数据流是一个强大的模型(推理速度小于33ms)。所以我们采用了一个YOLOX-L模型和TensorRT来制作我们最终的挑战模型,以赢得第一名。详情请浏览该挑战的网站。

五、结论

  在这份报告中,我们对YOLO系列提出了一些有经验的更新,形成高性能anchor-free探测器,叫做YOLOX。YOLOX配备了一些最新的先进检测技术,例如解耦头、anchor-free和高级标签分配策略,比其他所有型号的对手更好地实现了在速度和准确性的权衡。值得注意的是,我们提高了YOLOv3的体系结构,使其在COCO上的AP达到47.3%,比目前的最佳实践高出3.0% AP。YOLOv3由于广泛的兼容性,仍然是工业上使用最广泛的探测器之一。我们希望这份报告能够帮助开发者和研究人员在实际场景中获得更好的体验。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值