YOLOX: Exceeding YOLO Series in 2021

摘要
在本报告中,我们介绍了YOLO系列的一些经验改进,形成了一种新的高性能检测器- YOLOX。我们将YOLO检测器切换到无锚的方式,并进行其他先进的检测技术,例如,去耦头和领先的标签分配策略SimOTA,以在大范围的模型中实现最先进的结果:对于YOLONano只有0.91M参数和1.08G FLOPs,我们在COCO上得到25.3% AP,超过NanoDet 1.8% AP;对于工业上应用最广泛的探测器YOLOv3,我们将其在COCO上的AP提高到47.3%,比目前的最佳实践提高了3.0% AP;对于与YOLOv4CSP、YOLOv5-L的参数量大致相同的YOLOX-L,我们在68的速度下实现了50.0%的AP。特斯拉V100上的FPS比YOLOv5-L高出1.8%。此外,我们使用一个YOLOX-L模型赢得了流感知挑战(2021年CVPR自动驾驶研讨会)的第一名。我们希望这份报告能够为开发人员和客户在实际场景中提供有用的经验,我们也提供部署版本ONNX, tensort, NCNN和Openvino支持。
1.介绍
随着目标检测的发展,YOLO系列[23,24,25,1,7]始终追求实时应用的最佳速度和精度权衡。他们提取当时可用的最先进的检测技术(例如,针对YOLOv2[24]的anchor[26],针对YOLOv3[25]的残差网络[9]),并优化实现以实现最佳实践。目前,YOLOv5[7]在13.7 ms时对COCO具有48.2% AP的最佳权衡性能。
然而,在过去两年中,目标检测学术界的主要进展集中在无锚检测器[29,40,14]、高级标签分配策略[37,36,12,41,22,4]和端到端(没有极大值抑制)检测器[2,32,39]。这些还没有集成到YOLO家族中,如YOLOv4和YOLOv5仍然时有基础anchor的检测器,运用手动分配训练分配规则。
这就是为什么我们来到这里,将这些最新的进展与经验丰富的优化交付到YOLO系列。考虑到YOLOv4和YOLOv5对于基于锚的管道可能有些过度优化,我们选择YOLOv3[25]作为我们的起点(我们将YOLOv3- spp设置为默认的YOLOv3)。的确,由于计算资源有限,在各种实际应用中软件支持不足,YOLOv3仍然是业界应用最广泛的探测器之一。
在这里插入图片描述
如图1所示,经过上述技术的经验更新,我们在640 × 640分辨率的COCO上将YOLOv3的AP提高到47.3% (YOLOX-DarkNet53),大大超过了目前YOLOv3的最佳实践(44.3% AP, ultralytics version2)。此外,当切换到先进的YOLOv5架构(采用先进的CSPNet[31]骨干和额外的PAN[19]头)时,YOLOX-L在640 × 640分辨率的COCO上获得了50.0%的AP,比对应的YOLOv5- l高出1.8%的AP。我们还在小型模型上测试了我们的设计策略。YOLOX-Tiny和YOLOX-Nano(只有0.91M参数和1.08G FLOPs)分别比相应的YOLOv4-Tiny和NanoDet高出10% AP和1.8% AP。
我们已经在发布了我们的代码。支持ONNX, TensorRT, NCNN和Openvino。另外值得一提的是,我们使用一款YOLOX-L模型获得了流感知挑战(2021年CVPR自动驾驶研讨会)的第一名。
2.YOLOX
2.1.YOLOX-DarkNet53
我们选择YOLOv3[25]和Darknet53作为基线。在接下来的部分中,我们将逐步介绍YOLOX中整个系统的设计。
实现细节
从基线到最终模型,我们的训练设置基本一致。我们在COCO train2017[17]上训练模型共300 epoch,5个epoch的warmup。我们使用随机梯度下降(SGD)进行训练。我们使用学习速率lr×BatchSize/64(线性缩放[8]),初始lr = 0.01,余弦lr调度。权重衰减为0.0005,SGD动量为0.9。对于典型的8-GPU设备,批处理大小默认为128。其他批处理大小包括单一GPU训练也很有效。输入大小从448均匀绘制到832,步幅32。FPS和latency都是用FP16精度和batch=1在单张特斯拉V100中测试的。
YOLOv3 baseline
在这里插入图片描述

我们的基线采用了DarkNet53骨干网和一个SPP层的架构,在一些论文中参考YOLOv3-SPP[17]。与最初的实现[25]相比,我们稍微改变了一些训练策略,增加了EMA权重更新、余弦lr调度、IoU损失和IoU-aware branch(提高定位精度)。我们使用BCE Loss来训练cls和obj分支,使用IoU Loss来训练reg分支。这些一般的训练技巧与YOLOX的关键改进是正交的,因此我们把它们放在基线上。此外,我们只进行RandomHorizontalFlip, ColorJitter和multi-scale进行数据增强,而丢弃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版本的关键(将在下面描述)。从表1可以看出,端到端特性在耦合头下降低4.2% AP,而在解耦头下下降到0.8% AP。因此,我们将YOLO探测头替换为图2所示的轻解耦头。具体来说,它包含一个1 × 1的卷积层,以降低信道的尺寸,然后是两个并行分支,分别有两个3 × 3的卷积层。我们报告了表2中V100上batch=1的推断时间,并且lite解耦头带来了额外的1.1 ms (11.6 ms vs . 10.5 ms)。
在这里插入图片描述
在这里插入图片描述
强数据增强
我们将Mosaic和MixUp添加到增强策略中,以提高YOLOX的性能。镶嵌是YOLOv3提出的一种有效的增强策略。然后广泛应用于YOLOv4[1]、YOLOv5[7]等探测器[3]中。MixUp[10]最初设计用于图像分类任务,后来在BoF[38]中进行了修改,用于目标检测训练。我们在模型中采用了MixUp和Mosaic实现,并在最后15个阶段关闭它,在表2中实现了42.0%的AP。在使用强数据增强后,我们发现ImageNet预训练没有更多的好处,因此,我们开始从零训练以下所有的模型
无Anchor
YOLOv4[1]和YOLOv5[7]都遵循YOLOv3[25]原有的基于anchor。
然而,anchor机制存在许多已知的问题。首先,为了达到最优的检测性能,需要在训练前进行聚类分析,确定一组最优的锚点。这些群集锚是特定于领域的,不太一般化。其次,锚定机制增加了检测头的复杂性,增加了每幅图像的预测次数。在一些边缘AI系统上,在设备之间移动如此大量的预测(例如,从NPU到CPU)可能会成为整体延迟的潜在瓶颈。
无anchor检测器[29,40,14]在过去两年中发展迅速。这些工作表明,无anchor检测器的性能可以与基于anchor检测器相当。无anchor机制显著减少了需要启发式调优的设计参数的数量和涉及到的许多技巧(如锚聚类[24],网格敏感[11].),以获得良好的性能,使探测器,特别是其训练和解码阶段大大简化[29]。将YOLO切换为无锚方式非常简单。***我们将每个位置的预测从3个减少到1个,使其直接预测4个值,即网格左上角的两个偏移量,预测框的高度和宽度。***我们设计每个目标中心位置作为正样本和预定义一个尺度范围。这样的修改降低了检测器的参数和GFLOPs,使其速度更快,但获得了更好的性能- 42.9%的AP,如表2。
在这里插入图片描述
Multi positives
为了与YOLOv3的赋值规则一致,上述无anchor版本对每个对象只选择一个正样本(中心位置),同时忽略其他高质量的预测。然而,优化这些高质量的预测也可能带来有益的梯度,这可能缓解训练中正/负采样的极端不平衡。我们简单地将中心3×3区域指定为阳性,在FCOS[29]中也称为“中心采样”。检测器的性能提高到45.0% AP,如表2所示,已经超过了目前的最佳实践- yolov3 (44.3% AP2)。
SimOTA
高级标签分配是近年来目标检测的又一重要进展。基于我们自己的研究OTA[4],我们总结出高级标签分配的四个关键见解:1).损耗/质量意识,2).中心优先,3).每个ground-truth的正锚的动态数量s4(缩写为动态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之间的代价计算为:
在这里插入图片描述
其中λ是一个平衡系数。Lclsij和Lreg ij是gt gi与预测pj之间的分类损失和回归损失。然后,对于gt gi,在一个固定的中心区域内选择代价最小的前k个预测作为正样本。最后,将这些正预测的对应网格指定为正网格,其余网格指定为负网格。注意,k值对于不同的地面真相是不同的。详情请参考OTA[4]中的动态k估计策略。
SimOTA不仅减少了SinkhornKnopp算法的训练时间,而且避免了附加的求解器超参数。如Tab所示。SimOTA将探测器的AP从45.0%提高到47.3%,比SOTA分析- yolov3高出3.0% AP,显示了先进分配策略的威力。
End-to-end YOLO
我们按照[39]添加两个额外的转换层,一对一的标签分配和停止渐变。这使得检测器能够执行端到端方式,但会略微降低性能和推断速度,如表2所示。因此,我们将它作为一个可选模块,不涉及到我们的最终模型。
5.结论
在本报告中,我们介绍了YOLO系列的一些经验更新,形成了高性能的无锚检测器YOLOX。YOLOX配备了一些最新的先进检测技术,例如,去耦头部、无锚和先进的标签分配策略,在所有型号中,YOLOX比其他同类产品在速度和准确性之间实现了更好的平衡。值得注意的是,我们将YOLOv3(由于其广泛的兼容性,仍然是工业中使用最广泛的探测器之一)的体系结构提高到COCO上的47.3% AP,比目前的最佳实践高出3.0% AP。我们希望这份报告能够帮助开发人员和研究人员在实际场景中获得更好的经验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值