YOLOX论文逐句翻译

YOLOX:在2021年超越所有yolo系列

摘要

这个报告中,我们将呈现一些在YOLO系列上改进的经验,提出一个全新的高性能检测器YOLOX。
我们将YOLO检测头转换为anchor-free的方式,并添加了其他的先进的检测技术。比如:解耦头,先进的标签分类策略SimOTA。并在大量的模型中实现了最先进的成果(SOTA)。
对于YOLO-NANO,我们只用0.91M的参数,且每秒浮点运算次数达到1.08G(1.08GFLOPS)。就可以在COCO数据集上达到25.3%的平均精度(AP),AP超过NanoDet模型1.8%。
对于工业界最广泛使用的检测器YOLOv3,我们提升它的精度,使之能在COCO数据集上达到47.3%AP,比目前的SOTA高出3.0% AP。
YOLOX-L与YOLOv4-CSP和YOLOv5-L拥有大致相同数量的参数。我们在Tesla V100显卡上,以68.9FPS,在COCO数据集上达到了50.0%AP。超过了YOLOv5-L1.8%AP。
值得一提的是,我们单单使用了YOLOX-L模型,就赢得了由CVPR2021年自动驾驶研讨会举办的流媒体感知挑战的第一名。
我们希望这篇报告能为在做实际场景研究方向的开发人员和研究人员提供一些有用的经验教训。
我们还提供了支持部署在ONNX,TensorRT,NCNN,Openvino上的版本
源代码在:https://github.com/Megvii-BaseDetection/YOLOX.

介绍

随着目标检测的发展,YOLO系列总在追求一个在实时应用上的最佳速度与精度上的权衡。
他们提取了在同时期最先进的技术(例如:YOLOv2上的锚框,YOLOv3上的残差网络结构)并且为了达到最佳的实验结构而进行优化。
目前,YOLOv5持有最佳的权衡表现——在COCO数据集上以13.7ms,达到48.2%AP。
然而,过去这两年,在目标检测领域中主要发展集中在了Anchor-free目标检测器,先进的标签分配策略以及端到端的检测器(去掉NMS环节)。这些都还没有集成到YOLO系列中,YOLOv4和YOLOv5都仍然是基于锚框(anchor-base)的检测器,并且对训练使用手工制定的标签分配规则。
通过实验过的优化,为YOLO系列添上最新的进展。这就是我们的出发点。
考虑到YOLOv4和YOLOv5也许有一点在anchor-base上的过度优化,我们选择了YOLOv3作为我们的起始点(我们设定YOLOv3-SPP作为默认的YOLOv3)。事实上,由于计算资源受限和在各种各样的实际应用中没有足够的软件支持,所以YOLOv3仍然是工业界上应用最广泛的检测器之一。
正如图一所示:
在这里插入图片描述
通过以下技术,我们将YOLOv3 使用640640分辨率的COCO数据集,将AP提升到了47.3%(YOLOX-DarkNet53)。较大幅度的超过了当前YOLOv3最佳表现(ultralytics-version 44.3%)
并且,当转换成了YOLOv5结构,在YOLOv5上采用了一个先进的CSPNet基本骨干网络和一个额外的PAN头,YOLOX-L在640
640分辨率的COCO数据集上达到了50.0%AP。
同时,我们也在小模型们上测试了我们的设计策略。YOLOX-Tiny和YOLOX-Nano(在1.08G FLOPs,只用了0.91M的参数)与之对应级别的YOLOv4-Tiny和NanoDet分别提升了10%AP和1.8%AP。
我们已经在“https://githubcom/Megvii-BaseDetection/YOLOX”开源了我们的代码,上有支持ONNX,TensorRT,NCNN,Openvino版本。
值得一提的是,我们单单通过使用YOLOX—L模型,就赢得了由CVPR2021自动驾驶协会举办的流媒体感知挑战赛的第一名。

YOLOX

YOLOX-DarkNet53

我们选择带有Darknet53的YOLOv3作为我们的起点。接下来的部分,我们将一步一步地理清整个YOLOX的系统设计。

实验细节

我们的训练设置从基线到我们最终模型几乎一致。
我们在COCO train2017上训练模型300轮,先用5轮数据进行预热训练。
我们训练时采用随机梯度下降。
我们的学习率lr最初设定为 0.01 且按余弦函数周期变化,后使用学习率批数量大小/64(lrBatchSize/64)(线性缩放)
这个权重衰减为0.0005,并设置随机梯度下降(SGD)冲量为0.9 。
在经典的8个GPU设备上,默认批处理数量大小为128 。
使用单一GPU上训练时,其他批处理数量大小同样表现很好。
输入大小以32为步长,从448到832,均匀分布。
在这篇汇报中,每秒帧率(FPS)和延迟(lantency)都采用了FP16-precision(混合精度训练)使用一轮数据在一个Tesla V100上计算得到。

YOLOv3基线

带有SPP层的DarkNet53基础骨干,在某些汇报中被称为YOLOv3-SPP。我们以此作为我们的框架。
相比最初的实验,我们稍微改变了一些训练策略。
加入了EMA权重更新,学习率按余弦周期变化,交并比损失以及先知IoU 分支。
我们训练时的分类以及目标(obj)分支使用二进制交叉熵损失函数作为损失函数,在回归训练分支,使用交并比作为损失函数。
这些普通的训练技巧与YOLOX的关键提升技术是互不相干的,因此我们将它们放入了基线中。
更一步,我们添加了随机水平翻转,颜色抖动,多尺度数据增强,丢弃了随机重组策略。
因为我们发现随机重组策略与我们计划的交叉增强策略有一点重叠。
通过这些加强,我们的基线效果在COCO数据集上达到了38.5%AP,如表二所示。

解耦头

在目标检测领域,分类和回归任务中的冲突是总所周知的问题。
因此对于分类和定位的解耦头已经被广泛应用在大多数的一阶段和二阶段检测器上。
然而,尽管YOLO系列骨干和特征金字塔在持续的进化,但是他们的检测头仍然是耦合的,如图二所示。
在这里插入图片描述

我们两次分析实验指明,耦合的检测头也许对表现有害。
1)用解耦头替换掉YOLO的检测头能对收敛速度有较大的提升。如图三所示。
在这里插入图片描述
2)对端到端版本的YOLO,解耦头是基本的。我们能够从表一看出来,端到端版中带耦和头的降低了4.2%AP,带解耦头的降低了0.8%AP。
因此我们用一个小解耦头替换了YOLO检测头,如图二所示。
具体来说,它包含了一个11的卷积层去减少通道维数,后有两个水平分支,分别接了两个33的卷积层。
我们在表二中展示了,在V100上对一个批处理所需的推测时间,使用这个小解耦头会带来一个额外的时间。(11.6ms VS 10.5ms)

强大的数据增强

我们将Mosaic和MixUp方法加入到我们的增强策略,去提升YOLOX的表现。
Mosaic是一个有效的加强策略,由ultralytics-YOLOv3提出。
它被广泛应用于YOLOv4,YOLOv5以及其他检测器。
MixUp最初的设计是为了图像分类任务,但是它在BoF中被修改为用作目标检测训练了。
在我们的模型中,采用了MixUp和Mosaic,并在最后15轮训练时关闭了,达到了42.0%AP,如表二所示。
使用数据增强策略后,我们发现ImageNet的预训练不再有效。
因此我们的模型全都采用从头训练。

anchor-free

YOLOv4和YOLOv5都遵循着YOLOv3基于锚框的思维。
然而,锚框机制有许多已知的毛病。
首先,为了达到最佳的检测效果,它需要在训练前,通过聚类分析以确定一系列最佳的锚框。
这些集中的锚框只能特定领域使用,并不通用化。
其次,锚框机制增加了检测头的复杂性,以及对每张图片的预测数量。
对一些边缘AI系统而言,在设备之间移动如此大量的预测结果也许会成为总体延迟的潜在瓶颈。
anchor-free的检测器在近两年快速发展。这些工作已经表明anchor-free的检测器能与anchor-base的检测器媲美。
anchor-free机制充分减少了设计参数的数量,这些参数需要包含有很多技巧性的试探性调试。(比如:锚框的聚类,网格敏感度)
这能使一个网络能有一个好的效果,特别是训练和解码阶段简单了很多。
将YOLO转换为anchor-free的方法相当简单。我们将对每个位置的预测数量由3减少到1 ,并让他们直接预测4个值,分别是两个中心点相对于网格左上角的偏移量,以及预测框的长和宽。
我们设每个目标的中心位置为正样本,并提前定义了一个比例范围,正如参考文献【29】所做的那样,对每一个目标,指定了一个FPN级别。
这些修改减少了检测器的参数和每秒运算的G数(GFLOPs),使得它能更快,并且获得了更好的表现效果42.9%AP。如表二所示。

多重正样本

为了符合YOLOv3的分配规则,以下的anchor-free版本我们对每个目标只选择一个正样本(中心位置)。
与此同时,忽略其他的高质量预测。
然而,优化这些高质量预测也许能带来有益的梯度,这个也许能够减轻训练阶段的正负样本极端不平衡性。
我们简单的规定中心样本的3*3区域为正样本,这个方法在FCOS中也称为“中心样本”(center sampling)
这个检测器的表现提升至了45.0%AP,如表二所示。已经超过了当前ultralytics-YOLOv3的最佳训练表现(44.3%AP)

SimOTA

近年,先进的标签分配策略是在目标检测领域中的另一个最要的进步。
基于我们自己的研究(OTA),我们总结了四个对于先进的标签分配的关键看法:

  1. 损失/质量感知 2.首要中心 3.对每个真实样本的动态正锚框数量(简称为动态的top-k) 4.全局观
    OTA达到了以上4个准则,因此我们选择它作为我们的候选标签分配策略。
    具体来说,OTA从全局来分析这个标签分配,并将分配过程指定为最佳运输(OT)问题。
    在当前的标签分配策略中达到了SOTA。
    然而,在实验中我们发现解决通过Sinkhorn-Knopp算法OT问题增加了25%的训练时间,这对需要训练300轮来说是一个相当昂贵的代价。
    因此我们将它简化动态的top-k策略,命名为SimOTA,以此得到一个近似的结果方案。
    在这我们简要的介绍一个SimOTA。
    SimOTA首先计算成对的匹配度,用每个预测-真实对的成本或质量表示。
    比如,在SimOTA中,对真实值Gi和预测值Pj的开销由如下公式计算得出:
    在这里插入图片描述
    其中λ是平衡系数,加数分别是真实值和预测值之间的分类和回归损失。
    然后,对于真实值gt,我们选择拥有最小的损失中最高的k个预测值的一个固定中心区域作为它的正样本。
    最终,将这些正预测的响应网格划分为正样本,与此同时,将其他的化为负样本。
    注意,这个k值对于不太的真实值是变化的。
    请在OTA中看动态K估计策略的更多细节。
    SimOTA不仅仅减少了训练时间,同时也避免了Sinkhorn-Knopp算法中额外的超参数求解器。
    正如表二所示,SimOTA将检测器的AP由45.0%提升至47.3%,比当前SOTA ultralytics-YOLOv3高了3%,展示了这个分配策略的先进性。

端到端YOLO

我们在最后加了两个额外的卷积层,一对一的标签分配,以及梯度停止。
这些能使检测器变为一个端到端的,但是轻微的降低了表现性能和推理速度,如表二所示。
因此我们将它作为一个可选的模块,并不包含在我们的最终模型中。

其他骨干

除了DarkNet53,我们也测试了YOLOX在其他不同规模的骨干网络上。YOLOX在所有相应的骨干网络上都实现了一致的改进。

在YOLOv5中修改CSPNet

为了得到一个公正的对比,我们采用了标准的YOLOv5骨干网络,包含一个修改过的CSPNet模型,SiLU激活函数,以及一个PAN头。
我们采用同样的规则做出了YOLOX-S,YOLOX-M,YOLOX-X模型。
如表三所示,与YOLOv5比较,我们的模型,仅仅增加了一些边际时间(来自解耦头),得到了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的小模型,这比削弱小模型的增强要好。
具体来说,当训练小模型的时候,我们移除了混合策略并减弱了mosaic(将比例范围由[0.1,2.0]->[0.5,1.5])。
例如YOLOX-S,YOLOX-Tiny,YOLOX-Nano,这样的修改使得YOLOX-NanoAP从24.0%到25.3%。
对于大模型而言,我们也发现 更强的数据增强更有用。事实上,我们的MixUp实现是比原始版本的更强的一部分。
受到Copypaste启发,在我们混合两张图片之前,通过一个随机采样的比例因子进行抖动。
为了理解带比例抖动的Mixup的有效性,我们将它与带Copypaste的YOLOX-L相比较。
注意,Copypaste需要额外的实例掩码标记,然而MixUp不需要。
但是正如表5所示,这两种方法达到了差不多的效果。
表明,当没有实例掩码标记时,带有比例抖动的MixUP是有资格取代Copypaste。

表五

与SOTA比较

正如表6所示,展现与SOTA比较是一个传统。
然而,请记住,在这个表中的,模型推理速度经常是不受控制的,速度与硬件和软件有关系。
因此我们对图一的所有YOLO系列的使用的都是同一硬件和代码库,如图一所示。
我们画出了多多少少受点控制的速度/精度曲线。
我们注意到这里有一些大规模YOLO系列模型具有高表现性能,比如Scale-YOLOv4和YOLOv5-P6。
当前基于Transformer的检测器能将精准SOTA提升到60AP。
由于时间和资源的受限,我们并不在这篇报告中探索其他的重要特征。
不过,他们已经在我们的研究范围内了。
图一

流媒体感知挑战赛的第一名(由CVPR2021 WAD)

CVPR2021 WAD的流媒体感知挑战赛是通过最近提出的:流精度,来评估精准性和延迟性。这个指标的背后关键点是,联合评估整个感知栈每时每刻的输出。迫使栈考虑数据流的大小。计算时,这个大小应该被忽略。
对于30FPS数据流的度量,我们发现这个最佳权衡点是推理时间≤33ms的强模型。
所以我们采用了带有TensorRT的YOLOX-L模型去构建我们的最终模型,并最终拿下了比赛的第一名。
请在比赛网站上看更多细节。

总结

在这篇报告中,我们提供了一些对YOLO系列的试验过的更新,这个呈现出高性能的anchor-free检测器,我们命名为YOLOX。
配备了一些现有的先进检测技术,比如解耦头,anchor-free,以及先进的标签分配策略。
YOLOX在速度和精度上实现了一个更好的平衡,比起同规模大小的所有模型。
值得注意的是,我们将YOLOv3框架提升到了47.3%AP。YOLOv3框架由于其广泛的兼容性,仍然是工业界最广泛使用的检测器之一。
超过了当前最好的实验3.0%AP。
我们希望这篇报告能帮助在实景场景领域的开发人员和研究人员。

拓展

这项研究由国家重点研发计划(NO.2017YFA0700800)资助。
同时也得到了国家博士后科学基金项目(2021M690375)和北京博士后研究基金。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值