YOLOX Exceeding YOLO Series in 2021

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 上将其提升到 47.3% AP,比当前最佳实践高出 3.0% AP;对于与 YOLOv4CSP、YOLOv5-L 参数量大致相同的 YOLOX-L,他们在 Tesla V100 上以 68.9 FPS 的速度在 COCO 上实现了 50.0% AP,超过 YOLOv5-L 1.8% AP。此外,作者使用单个 YOLOX-L 模型赢得了流媒体感知挑战(CVPR 2021 自动驾驶研讨会)的第一名。 官方源码位置:https://github.com/Megvii-BaseDetection/YOLOX

1.介绍

随着目标检测的发展,YOLO 系列始终追求实时应用的最佳速度和精度权衡。它们采用了当时可用的最先进的检测技术(例如, 用于 YOLOv2 的锚点框,YOLOv3的残差网络 )并优化实现以实现最佳实践。目前,YOLOv5在 COCO 上以 13.7 ms 的 48.2% AP 保持最佳权衡性能。

尽管如此,在过去的两年中,目标检测学术界的主要进展集中在无锚框检测器、高级标签分配策略和端到端(无 NMS)检测器。到目前为止这些都没有集成到yolo家族中,yolov4还是基于锚点的预测,而且还带有用于训练的手工分配原则。

作者选择 YOLOv3作为他们的起点(将 YOLOv3-SPP 设置为默认的 YOLOv3)。确实,由于计算资源有限,各种实际应用中软件支持不足,YOLOv3仍然是业界使用最广泛的检测器之一。

作者在COCO上以640 × 640的分辨率将 YOLOv3 提升到 47.3% AP(YOLOX-DarkNet53),大大超过了 YOLOv3(44.3% AP,ultralytics 版本)的当前最佳实践。此外,当切换到采用高级 CSPNet主干和额外 PAN头的高级 YOLOv5 架构时,YOLOX-L 在 640 × 640 分辨率的 COCO 上实现了 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。

2.yolox

2.1 yolox-Darknet53

作者选择以Darknet53 作为基线的 YOLOv3 ,逐步介绍 YOLOX 中的整个系统设计。

实施细节 从基线到最终模型,作者的训练设置大多是一致的。作者在 COCO train2017上训练了总共 300 个 epoch 和 5 个 epoch 预热的模型。作者使用随机梯度下降(SGD)进行训练。采用 lr×BatchSize/64 的学习率(线性缩放),初始 lr = 0.01 和余弦 lr 调度。权重衰减为 0.0005,SGD 动量为 0.9。对于典型的 8-GPU 设备,批量大小默认为 128。输入大小从 448 到 832 以 32 个步幅均匀绘制。

yolov3基线 作者的基线采用了 DarkNet53 主干和一个 SPP 层的架构。与原始实现相比,略微更改了一些训练策略,添加了 EMA 权重更新、余弦 lr 调度、IoU 损失和 IoU 感知分支。作者使用 BCE 损失来训练 cls 和 obj 分支,使用 IoU 损失来训练 reg 分支。这些通用训练技巧与 YOLOX 的关键改进正交,因此作者将它们放在基线上。此外,作者只对数据增强进行了 RandomHorizontalFlip、ColorJitter 和多尺度,并丢弃了 RandomResizedCrop 策略,因为他们发现 RandomResizedCrop 与计划的马赛克增强有点重叠。通过这些增强,作者的基线在 COCO val 上实现了 38.5% 的 AP。YOLOX Exceeding YOLO Series in 2021_第1张图片

解耦头 在目标检测中,分类和回归任务之间的冲突是一个众所周知的问题 [27, 34]。因此,用于分类和定位的解耦头广泛用于大多数单级和两级检测器。然而,随着 YOLO 系列的主干和特征金字塔(例如 FPN、PAN )不断发展,它们的检测头依然保持耦合,如图 2 所示。YOLOX Exceeding YOLO Series in 2021_第2张图片

作者的两个分析实验表明,耦合检测头可能会损害性能。 1)用解耦的头部替换 YOLO 的头部大大提高了收敛速度,如图 3 所示。2)解耦头对于 YOLO 的端到端版本是必不可少的,耦合头的端到端属性会降低 4.2% AP,而解耦头的则只会降低 0.8% AP。因此,作者将 YOLO 检测头替换为 lite 解耦头。具体而言,它包含一个 1 × 1 卷积层以减小通道维度,然后是两个平行分支,分别具有两个 3 × 3 卷积层。
YOLOX Exceeding YOLO Series in 2021_第3张图片

强大的数据增强 作者将 Mosaic 和 MixUp 添加到他们的增强策略中,以提高 YOLOX 的性能。 Mosaic 是一种有效的增强策略,它被广泛用于 YOLOv4、YOLOv5 和其他目标检测系统中 。 MixUp 最初是为图像分类任务而设计的,但后来在 BoF(免费包)中进行了修改以进行目标检测训练。作者在模型中采用了 MixU 和 Mosaic 实现,并在最后 15 个 epoch 中关闭它,实现了 42.0% 的 AP(依旧是看表2)。但是使用强数据增强后,作者发现 ImageNet 预训练没有得到什么好处。

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

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

将 YOLO 切换为无锚的方式非常简单。作者将每个位置的预测从 3 减少到 1,并使它们直接预测四个值,即网格左上角的两个偏移量,以及预测框的高度和宽度。作者将每个对象的中心位置指定为正样本并预先定义一个比例范围,以指定每个对象的 FPN 级别。这样的修改减少了检测器的参数和 GFLOPs,使其更快,但获得了更好的性能—2.9% AP(还是看表2)。

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

SimOTA 高级标签分配是近年来目标检测的又一重要进展。根据作者自己的 OTA 研究,他们得出了高级标签分配的四个关键见解:1)损失/质量意识;2)先验中心;3)每个ground-truth的正anchors的动态数量(缩写为dynamic top-k);4)全局视野。 OTA 满足上述所有四个规则,因此作者选择它作为候选标签分配策略。

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

SimOTA 不仅减少了训练时间,而且避免了 SinkhornKnopp 算法中额外的求解器超参数。SimOTA将检测器从45.0% AP提高到47.3% AP,比SOTA ultralytics-YOLOv3高3.0% AP,显示了先进分配策略的威力(还是看表2)。

端到端的yolo 作者添加了两个额外的卷积层、一对一的标签分配和停止梯度。这些使检测器能够以端到端的方式执行,但会稍微降低性能和推理速度, 因此,作者将其作为一个可选模块,不包含在他们的最终模型中(还是看表2)。

2.2 其他骨干网络

在 YOLOv5 中修改 CSPNet 为了公平比较,作者采用了精确的 YOLOv5 主干,包括修改后的 CSPNet、SiLU 激活和 PAN头。作者还遵循其缩放规则来比较YOLOX-S、YOLOX-M、YOLOX-L 和 YOLOX-X 模型。与表中的 YOLOv5 相比。如图 3 所示,模型得到了 ∼3.0% 到 ∼1.0% AP 的持续改进,只有边际时间增加(来自解耦头)。
YOLOX Exceeding YOLO Series in 2021_第4张图片

微型和纳米目标检测 作者进一步将型缩小为 YOLOX-Tiny 以与 YOLOv4-Tiny进行比较。对于移动设备,作者采用深度卷积来构建 YOLOX-Nano 模型,该模型只有 0.91M 参数和 1.08G FLOPs,YOLOX表现良好,模型尺寸比同行更小。
YOLOX Exceeding YOLO Series in 2021_第5张图片

模型大小和数据增强 作者发现合适的数据增强策略与模型大小有关。
YOLOX Exceeding YOLO Series in 2021_第6张图片

对于大型模型,作者还发现更强的增强更有帮助。受 Copypaste(复制粘贴)的启发,作者在混合它们之前通过随机采样的比例因子对这两个图像进行抖动。为了了解 Mixup 的规模抖动功能,作者将其与 YOLOX-L 上的 Copypaste 进行了比较(注意 Copypaste 需要额外的实例掩码注释,而 MixUp 不需要)。如表 5 所示,这两种方法实现了有竞争力的性能(其实也就高了0.1),表明在没有可用的实例掩码注释时,具有比例抖动的 MixUp 是 Copypaste 的合格替代品。

3 与SOTA的比较

YOLOX Exceeding YOLO Series in 2021_第7张图片

作者提了这么一句话:当前基于 Transformer 的检测器 将准确度-SOTA 推到 ∼60 AP。由于时间和资源的限制,我们没有在本报告中探讨这些重要特征。但是,它们已经在我们的范围内。

4 流媒体感知挑战赛第一名(WAD at CVPR 2021)

https://eval.ai/web/challenges/challenge-page/ 800/overview

5 总结

在本报告中,作者介绍了 YOLO 系列的一些经验更新,它形成了一个称为 YOLOX 的高性能无锚检测器。 YOLOX 配备了一些最新的先进检测技术,即去耦头、无锚和先进的标签分配策略,与所有模型尺寸的其他同类产品相比,YOLOX 在速度和准确性之间取得了更好的平衡。值得注意的是,作者将 YOLOv3 的架构提升到了 COCO 上的 47.3% AP,超过当前最佳实践 3.0% AP,它仍然是业界使用最广泛的检测器之一,这得益于它具有广泛的兼容性。作者希望这份报告能够帮助开发者和研究人员在实际场景中获得更好的体验。

以上图片均来自原论文
YOLOX Exceeding YOLO Series in 2021_第8张图片

你可能感兴趣的:(yolo,深度学习,计算机视觉,人工智能)