Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

杜伟、陈萍编辑

超越全系列YOLO、Anchor-free+技巧组合,旷视开源性能更强的YOLOX


在本文中,来自旷视的研究者提出高性能检测器 YOLOX,并对 YOLO 系列进行了经验性改进,将 Anchor-free、数据增强等目标检测领域先进技术引入 YOLO。获得了超越 YOLOv3、YOLOv4 和 YOLOv5 的 AP,而且取得了极具竞争力的推理速度。


随着目标检测技术的发展,YOLO 系列始终追寻可以实时应用的最佳速度和准确率权衡。学界人士不断提取当时最先进的检测技术(如 YOLOv2 的 anchor、YOLOv3 的残差网络),并对这些检测技术进行优化以实现最佳性能。目前,YOLOv5 在速度和准确率上有最好的权衡,在 COCO 数据集上以 13.7ms 的速度获得 48.2% AP。

然而,过去两年时间里,目标检测领域的主要进展集中在无锚点(anchor-free)检测器、先进的标签分配策略以及端到端的(NMS-free)检测器。但是,这些技术还没有集成到 YOLO 系列模型中,YOLOv4 、 YOLOv5 仍然还是基于 anchor 的检测器,使用手工分配策略进行训练。

近日,旷视的研究者将解耦头、数据增强、无锚点以及标签分类等目标检测领域的优秀进展与 YOLO 进行了巧妙地集成组合,提出了 YOLOX,不仅实现了超越 YOLOv3、YOLOv4 和 YOLOv5 的 AP,而且取得了极具竞争力的推理速度。

  • 论文地址:https://arxiv.org/abs/2107.08430

  • 项目地址:https://github.com/Megvii-BaseDetection/YOLOX

考虑到 YOLOv4、YOLOv5 在基于 anchor pipeline 中可能会出现一些过拟合,研究者选择 YOLOv3 作为起点(将 YOLOv3-SPP 设置为默认的 YOLOv3)。事实上,由于计算资源有限,以及在实际应用中软件支持不足,YOLOv3 仍然是业界应用最广泛的检测器之一。

如下图 1 所示,通过将目标检测领域优秀进展与 YOLO 进行组合,研究者在图像分辨率为 640 × 640 的 COCO 数据集上将 YOLOv3 提升到 47.3% AP(YOLOX-DarkNet53),大大超过了目前 YOLOv3(44.3% AP,ultralytics version2)的最佳实践。

此外,当将网络切换到先进的 YOLOv5 架构,该架构采用先进的 CSPNet 骨干以及一个额外的 PAN 头,YOLOX-L 在 COCO 数据集、图像分辨率为 640 × 640 获得 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。

在 CVPR 2021 WAD 挑战赛的 Streaming Perception Challenge 赛道上,旷视提出的基于 YOLOX 模型(YOLOX-L)的 2D 实时目标检测系统在 Argoverse-HD 数据集上实现了 41.1 的 streaming AP。此外,研究者在推理时用到了 TensorRT 优化器,使得模型在高分辨输入(即 1440×2304)时实现了 30 fps 的推理速度。

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

YOLOX-DarkNet53

研究者选择将 YOLOv3+Darknet53 作为基线模型,并基于它详细介绍了 YOLOX 的整个系统设计。

实现细节

从基线模型到最终模型,研究者的训练设置基本保持一致。他们在 COCO train2017 数据集上训练了 300 个 epoch 的模型并进行 5 个 epoch 的 warmup,使用随机梯度下降(SGD)来训练,学习率为 lr×BatchSize/64 ,初始学习率为 0.01,并使用了余弦(cosine)学习机制。权重衰减为 0.0005,SGD momentum 为 0.9。批大小默认为 128(8 个 GPU),其他批大小使用单个 GPU 训练也运行良好。输入大小以 32 步长从 448 均匀过渡到 832。FPS 和延迟在单个 Tesla V100 上使用 FP16-precision 和 batch=1 进行测量。

 YOLOv3 基线模型

基线采用了 DarkNet53 骨干和 SPP 层的架构(在一些论文中被称作 YOLOv3-SPP)。与初始实现相比,研究者稍微改变了一些训练策略,添加了 EMA 权重更新、余弦学习机制、IoU 损失和 IoU 感知分支。他们使用 BCE 损失训练 cls 和 obj 分支,使用 IoU 损失训练 reg 分支。这些通用的训练技巧对于 YOLOX 的关键改进呈正交,因此将它们应用于基线上。此外,研究者还添加了 RandomHorizontalFlip、ColorJitter 和多尺度数据增强,移除了 RandomResizedCrop 策略。

通过这些增强技巧,YOLOv3 基线模型在 COCO val 数据集上实现了 38.5% 的 AP,具体如下表 2 所示:

解耦头

目标检测中,分类与回归任务之间的冲突是一个众所周知的难题,因此用于分类和定位的解耦头被广泛用于大多数单阶段和双阶段检测器中。但是,随着 YOLO 系列模型骨干和特征金字塔(如 FPN 和 PAN)持续进化,它们的检测头依然处于耦合状态,YOLOv3 头与本文提出的解耦头之间的架构差异如下图 2 所示:

下图 3 为使用 YOLOv3 头和解耦头时的检测器训练曲线:

从下表 1 可以看到,使用耦合头时端到端性能降低了 4.2% 的 AP,而使用解耦头时仅仅降低了 0.8% AP。因此,研究者将 YOLO 检测头替换为一个轻量(lite)解耦头,由此极大地提升了收敛速度。

具体地,这个轻量解耦头包含一个 1 × 1 卷积层以减少通道维度,之后紧接着两个 3 × 3 卷积层的并行分支,具体架构参见上图 2。

研究者给出了在单个 Tesla V100 上,使用 batch=1 时的推理时间。如上表 2 所示,轻量解耦头可以带来 1.1 ms 的推理延时。

强(strong)数据增强策略

研究者在增强策略中加入了 Mosaic 和 MixUp 以提升 YOLOX 的性能,他们在模型中采用 MixUp 和 Mosaic 实现,并在最后 15 个 epoch 的训练中关闭。如上表 2 所示,基线模型实现了 42.0% 的 AP。在使用强数据增强策略之后,研究者发现 ImageNet 预训练不再具有更多增益,因此所有模型都从头开始训练。

无锚点(anchor-free)

YOLOv4 和 YOLOv5 都遵循 YOLOv3 的基于锚的初始 pipeline,然而锚机制存在许多已知的问题。过去两年,无锚检测器发展迅速。相关研究表明,无锚检测器的性能可以媲美基于锚的检测器。无锚点机制显著减少了实现良好性能所需的启发式调整和技巧(如 Anchor Clustering、Grid Sensitive)的设计参数数量,从而使得检测器变得更简单,尤其是在训练和解码阶段。

YOLO 转变为无锚点模式也非常简单。研究者将每个位置的预测从 3 降至 1,并使它们直接预测四个值,即两个 offset 以及预测框的高宽值。他们将每个目标的中心位置指令为正样本,并预定义一个尺度范围,以确定每个目标的 FPN 水平。这种改进减少了检测器的参数量和 GFLOP,并使其速度更快,与此同时获得了更好的性能,即 42.9% AP(具体如上表 2 所示)。

多个正样本

为了确保与 YOLOv3 的分配规则一致,上述无锚点版本仅为每个目标分配一个正样本(中心位置),同时忽略了其他高质量的预测。研究者将中心 3×3 区域分配为正样本,并命名为「中心采样」。如上表 2 示,检测器的性能提升至 45.0% AP,已经超越了当前 SOTA ultralytics/yolov3 版本的 44.3%AP。

SimOTA

先进标签分配(Advanced label assignment )是近年来目标检测领域中另一个重要进展。该研究将其作为候选标签分配策略。

但是在实践中,该研究发现通过 Sinkhorn-Knopp 算法解决 OT 问题会带来 25% 额外训练时间,这对于 300 epoch 来说代价非常高。因此,该研究将其简化为动态 top-k 策略,命名为 SimOTA,以获得近似解。

SimOTA 不仅减少了训练时间,同时避免了 SinkhornKnopp 算法中额外超参数问题。如表 2 所示,SimOTA 将检测器的 AP 从 45.0% 提高到 47.3%,比 SOTA ultralytics-YOLOv3 高出 3.0%。

端到端的 YOLO

该研究参考 PSS 添加了两个额外的卷基层、一对一的标签分配、stop gradient。这些使得检测器能够以端到端方式执行,但会略微降低性能和推理速度,如表 2 所示。该研究将其作为一个可选模块,但在最终的模型中并没有涉及。

在其他骨干网络的实验结果

除了 DarkNet53,该研究还在其他不同大小的骨干上测试了 YOLOX,结果表明 YOLOX 都实现了性能提升。

改进 YOLOv5 中的 CSPNet

为了公平的进行比较,该研究采用 YOLOv5 骨干,包括改进的 CSPNet、SiLU 激活函数、PAN 头。此外,该研究还遵循扩展规则来生成 YOLOXS、YOLOX-M、 YOLOX-L、YOLOX-X 模型。与 YOLOv5 在表 3 的结果相比,该模型在仅需非常少的额外推理耗时,取得了 3.0%~1.0% 的性能提升。

Tiny 和 Nano 检测器

该研究进一步将模型缩小为 YOLOX-Tiny,并与 YOLOv4-Tiny 进行比较。对于移动端设备,研究者采用深度卷积构建 YOLOX-Nano 模型,模型仅有 0.91M 参数量以及 1.08G FLOP。如表 4 所示,YOLOX 在更小的模型尺寸下表现良好。

模型大小与数据增强

在实验中,所有模型都保持了几乎相同的学习进度和优化参数。然而,研究发现适当的数据增强策略因模型大小而异。如表 5 所示,YOLOX-L 采用 MixUp 能提高 0.9%AP,对于诸如 YOLOX-Nano 这种小型模型来说,最好是弱化增强。

具体来说,当训练诸如 YOLOX-S、 YOLOX-Tiny、YOLOX-Nano 这种小模型时,需要去除混合增强并弱化 mosaic(将扩展范围从 [0.1, 2.0] 降到 [0.5, 1.5])。这种改进将 YOLOX-Nano 的 AP 从 24.0% 提高到 25.3%。

与 SOTA 结果对比

下表 6 为 YOLOX 与 SOTA 检测器的对比结果。在 COCO 2017 test-dev 数据集上进行了不同物体检测器的速度和准确率比较。研究者选择在 300 epoch 上训练所有模型并进行了公平比较。由结果可得,与 YOLOv3、YOLOv4、YOLOv5 系列进行比较,该研究所提出的 YOLOX 取得了最佳性能,获得 51.2%AP,高于其他模型,同时具有极具竞争力的推理速度。


入门目标检测旷视科技YOLO
11
相关数据
激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

YOLO技术

YOLO 模型最早是由 Joseph Redmon 等人在 2015 年发布的,并在随后的两篇论文中进行了修订。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

随机梯度下降技术

梯度下降(Gradient Descent)是遵循成本函数的梯度来最小化一个函数的过程。这个过程涉及到对成本形式以及其衍生形式的认知,使得我们可以从已知的给定点朝既定方向移动。比如向下朝最小值移动。 在机器学习中,我们可以利用随机梯度下降的方法来最小化训练模型中的误差,即每次迭代时完成一次评估和更新。 这种优化算法的工作原理是模型每看到一个训练实例,就对其作出预测,并重复迭代该过程到一定的次数。这个流程可以用于找出能导致训练数据最小误差的模型的系数。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

推荐文章
您好,可以联系吗?