YOLOX论文阅读与实践

举报
lutianfei 发表于 2021/08/31 14:45:09 2021/08/31
【摘要】 论文概述 Abstract将YOLO检测器切换到无锚点的方式,并运用了其他先进的检测技术,即解耦头和领先的标签分配策略SimOTA,以实现SOTA。 1. Introduction随着物体检测的发展,YOLO系列始终追求实时应用的最佳速度和准确性权衡。他们提取了当时可用的最先进的检测技术,并优化了最佳实践的实现。目前,YOLOv5 [7]在COCO上的AP为48.2%,为13.7 ms.1...

参考资料

深入浅出Yolo系列之Yolox核心基础完整讲解
说明:江大白出品,讲的非常细致,每个环节都有代码和图解,YOLO系列不可多得的好资料。

如何评价旷视开源的YOLOX,效果超过YOLOv5?
说明:旷世官方解读

YOLOX在MMdetection中复现全流程解析
说明:商汤官方复现解读

论文概述

Abstract

将YOLO检测器切换到无锚点的方式,并运用了其他先进的检测技术,即解耦头和领先的标签分配策略SimOTA,以实现SOTA。

1. Introduction

随着物体检测的发展,YOLO系列始终追求实时应用的最佳速度和准确性权衡。他们提取了当时可用的最先进的检测技术,并优化了最佳实践的实现。目前,YOLOv5在COCO上的AP为48.2%,为13.7 ms,具有最佳的权衡性能。然而,在过去的两年里,物体检测学术界的主要进步集中在无锚探测器高级标签分配策略,和端到端(无NMS)探测器。这些还没有集成到YOLO系列中,因为YOLOv4和YOLOv5仍然是基于锚的探测器,具有手工制作的分配规则用于训练。

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

如下图1所示,随着上述技术的经验更新,我们将COCO上的YOLOv3提高到47.3%AP(YYOLOX-DarkNet53),大大超过了目前的最佳实践YOLOv3(44.3%AP,ultralytics版)。此外,当切换到采用高级CSPNet主干和 additional PAN头的高级YOLOv5体系结构时,YOLOX-L以640×640分辨率实现50.0% AP在 COCO数据集,表现优于对手YoLOv5-L 1.8% AP。我们还在小尺寸模型上测试了我们的设计策略。YOLOX-Tiny和YOLOX-Nano(仅0.91M参数和1.08G FLOP)的性能分别优于相应的YLOv4-Tiny和NanoDet 10%AP和1.8% AP。

image.png

2. YOLOX

2.1 YOLOX-DarkNet53

Implementation details

我们的训练配置从基线到最终模型基本上是一致的。我们在COCO 2017训练集上训练了总共300个epochs,并进行了5个epoch的warmup。我们使用随机梯度下降(SGD)进行训练。我们使用学习率lr×BatchSize/64(线性缩放),初始lr=0.01和余弦lr schedule。weight decay为0.0005,SGD动量为0.9。对于典型的8GPU设备,batchsize默认为128。包括单个GPU训练在内的其他batchsize大小也可以很好地工作。输入大小从448均匀绘制到832,步长为32。本报告中的FPS和延迟都是在单个Tesla V100上使用FP16精度和batchsize=1测量的。

YOLOv3 baseline

我们的基线采用了DarkNet53主干和SPP层的体系结构。与原始实现相比,我们稍微改变了一些训练策略,添加了EMA权重更新cosine lr scheduleIoU损失IoU感知分支。我们使用BCE损失来训练clsobj分支;用IoU损失训练回归分支。这些一般的训练技巧与YOLOX的关键改进是正交的,因此我们将它们放在基线上。此外,我们只进行随机水平翻转ColorJitter多尺度数据增强,但是放弃了RandomResizedCrop策略,因为我们发现RandomResizedCropplanned mosaic augmentation增强重叠。通过这些增强,我们的基线在COCOval上达到了38.5%的AP,如下表2所示。

image.png

Decoupled head

在对象检测中,分类任务和回归任务之间的冲突是一个众所周知的问题。因此,用于分类和定位的解耦头被广泛用于大多数一级和两级探测器。然而,随着YOLO系列的主干和特征金字塔(例如,FPN、PAN)不断演变,它们的检测头仍然保持耦合,如图2所示。

image.png

我们的两个分析实验表明,耦合检测头可能会损害性能:

  1. 用去耦头代替YOLO头大大提高了收敛速度,如图3所示。
  2. 解耦头对于YOLO的端到端版本至关重要(下面将介绍)。从下表1可以看出。耦合头的端到端特性降低4.2% AP,而解耦头的端到端特性降低到0.8% AP。
    image.png

因此,我们用图2中的轻量级解耦头取代了YOLO检测头。
具体来说,它包含一个1×1conv层,以减小通道尺寸,然后是两个平行的分支,分别具有两个3×3conv层。
我们在表2中说明了batchsize=1的推理时间(基于V100)以及轻解耦头带来额外的1.1ms (11.6 ms vs10.5 ms)。

image.png

Strong data augmentation

我们将MosaicMixUp添加到我们的增强策略中,以提高YOLOX的性能。
Mosaicultralytics-YOLOv3提出的一种有效的增强策略。然后,它被广泛用于YOLOv4、YOLOv5和其他检测器。
MixUp最初是为图像分类任务设计的,但后来在BoF中修改,用于目标检测训练。我们在模型中采用了这两种数据增强策略,并在最后的15个epoch关闭了它,从而实现了42.0%的AP(表2所示)。在使用强数据增强后,我们发现ImageNet预训练不再有好处,因此我们从零开始训练以下所有模型

Anchor-free

YOLOv4和YOLOv5都遵循了YOLOv3的原始基于锚框的pipeline。然而,锚框机制有许多已知的问题。首先,为了获得最佳的检测性能,需要在训练前进行聚类分析,以确定一组最佳锚点。这些聚集锚点是特定于域的,而且不那么普遍。其次,锚机制增加了检测头的复杂性,以及每个图像的预测数量。在某些边缘AI系统上,在设备之间移动如此大量的预测(例如,从NPU到CPU)可能会成为整体延迟方面的潜在瓶颈。

无锚检测器在过去的两年里发展迅速。这些工作表明,无锚探测器的性能可以与基于锚的探测器相当。无锚机制显著减少了需要启发式调整和许多技巧的设计参数的数量,以获得良好的性能,使检测器,特别是其训练和解码阶段,相当简单。

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

Multi positives

为了与YOLOv3的分配规则一致,上述无锚点版本仅为每个对象选择一个正样本(中心位置),而忽略其他高质量预测。然而,优化这些高质量的预测也可能带来有益的梯度,这可能会缓解训练期间正/负采样的极端不平衡。我们只需将中心3×3区域指定为正样本,在FCOS [29]中也命名为“中心采样”。检测器的性能提高到45.0% AP,如Tab2中所示。此时,已经超过了目前的最佳模型ultralytics-YOLOv3(44.3% AP)。

SimOTA

高级标签分配是近年来物体检测的另一个重要进展。根据我们自己的研究OTA,我们总结了高级标签分配的四个关键见解:

  1. 损失/质量意识
  2. 中心先验
  3. 每个ground-truth有动态数量的正例(缩写为dynamic topK)
  4. 全局视图

OTA满足上述所有四个规则,因此我们选择它作为候选标签分配策略。

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

我们在这里简单介绍SimOTA。SimOTA首先计算每个预测gt匹配对的成对匹配度,由成本或质量表示。例如,在SimOTA中,gt(gi)和预测(pj)之间的成本计算为:
image.png

其中λ是平衡系数。 L i j c l s L_{ij}^{cls} L i j r e g L_{ij}^{reg} 分别为gt gi和预测pj之间分类损失和回归损失。然后,对于gt(gi),我们选择固定中心区域内成本最小的topk预测作为其正样本。最后,这些正预测的相应网格被指定为正样本,而其余网格则为负样本。注意到,k因不同的ground truth而异。有关更多详细信息,请参阅OTA中的动态估计策略。

SimOTA不仅减少了训练时间,而且避免了Sinkhorn-Knopp算法中的额外求解器超参数。如表2所示, SimOTA将探测器从45.0% AP提高到47.3%AP,比SOTA ultralytics-YOLOv3高出3.0%AP,显示了先进分配策略的力量。

End-to-end YOLO

我们添加了两个额外的conv层、一对一标签分配和停止梯度。这些使探测器能够执行端到端方式,但略有降低性能和推理速度,如表2所示。因此,我们将其作为一个可选模块,不涉及我们的最终模型。

image.png

2.2 Other Backbones

除了DarkNet53,我们还在其他不同大小的主干上测试了YOLOX,其中YOLOX对所有相应的对应部件实现了一致的改进。

Modified CSPNet in YOLOv5

为了进行公平的比较,我们采用了确切的YOLOv5主干,包括修改的CSPNet、SiLU激活和PAN 头。我们还遵循其缩放规则来生成YOLOX-S、YOLOX-M、YOLOX-L和YOLOX-X型号。与表3中的YOLOv5相比。我们的模型得到了一致的改进(提升从3.0%到1.0%AP)只有边际时间增加(来自解耦头部)。

image.png

Tiny and Nano detectors

我们进一步缩小了我们的模型YOLOX-Tiny以与YLOv4-Tiny进行对比。对于移动设备,我们采用深度卷积来构建一个只有0.91M参数和1.08G FLOPs的YOLOX-Nano模型。如表4所示、YOLOX表现良好,型号尺寸甚至比对手小。

image.png

Model size and data augmentation

在我们的实验中,所有模型都保持了几乎相同的learning schedule 和 optimizing parameters,如2.1小节所述。然而,我们发现合适的增强策略因不同大小的模型而异。如表5所示,虽然YOLOX-L使用了MixUp策略可以将AP提高0.9%,但最好削弱像YoLOX-Nano这样的小型号的增强。具体来说,我们在训练小模型时,删除MixUp并削弱mosaic(将比例范围从[0.1,2.0]减少到[0.5,1.5])。这种修改将YOLOX-Nano的AP从24.0%提高到25.3%。

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

image.png

3. Comparison with the SOTA

我们对图1中的所有YOLO系列使用相同的硬件和代码库,绘制了一些受控的速度/精度曲线。

我们注意到,有一些具有较大型号大小的高性能YOLO系列,如Scale-YLOv4、YLOv5-P6和基于Transformer的检测器将SOTA精度推到60 AP。由于时间和资源的限制,我们没有在本报告中探讨这些重要功能。然而,它们已经在我们的范围内。

image.png

5 Conclusion

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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。