YOLOX 解读与 YOLOv5 匹敌的 anchor-free 目标检测器!
Posted AI 菌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YOLOX 解读与 YOLOv5 匹敌的 anchor-free 目标检测器!相关的知识,希望对你有一定的参考价值。
文章目录
一、YOLOX 介绍
YOLOX 在 YOLO 系列的基础上做了一系列工作,其主要贡献在于:在 YOLOv3 的基础上,引入了Decoupled Head,Data Aug,Anchor Free 和SimOTA 样本匹配的方法,构建了一种anchor-free的端到端目标检测框架,并且达到了一流的检测水平。
此外,本文提出的 YOLOX-L 模型在视频感知挑战赛(CVPR 2021年自动驾驶研讨会)上获得了第一名。作者还提供了支持ONNX、TensorRT、NCNN和Openvino的部署版本。Github 开源地址为:
https://github.com/Megvii-BaseDetection/YOLOX
二、YOLOX 的改进点
在过去的两年里,目标检测学术界的主要进展集中在无锚检测器,高级标签分配策略,以及端到端(NMS-free)检测器。考虑到YOLOv4和YOLOv5对于基于锚点的管道可能有些过度优化,本文作者选择YOLOv3-Darknet53作为基线,在此基础上进行了改进。
(1)解耦合头部
在目标检测中,分类和回归任务之间的冲突是一个众所周知的问题。因此,用于分类和定位的解耦合头在大多数单阶段和双阶段探测器中得到了广泛的应用。然而,作为YOLO系列的主干和特征金字塔(例如,FPN,PAN),在不断进化的过程中,它们的探测头仍然保持耦合,如下图2所示:
实验表明,解耦合检测头能加快模型收敛速度、提高检测精度,同时也会带来一点额外的参数量和计算成本:
1) 用一个解耦的头部代替YOLO的头部,大大提高了收敛速度。如下图所示:
2)分离的头部对于 End-to-End YOLO 是必不可少的。从下表可以看出:耦合头的End-to-End YOLO检测性能AP降低了4.2%,而解耦头的YOLO降幅仅减小到0.8%AP。因此,用一个如图2所示的轻型解耦头替换了YOLO检测头。
3)将检测头解耦无疑会增加运算的复杂度,但经过权衡速度和性能上的得失,作者最终使用 1个1x1 的卷积先进行降维,并在分类和回归分支里各使用了 2个3x3 卷积,最终调整到仅仅增加一点点参数,YOLOX 在 s,m,l,x 模型速度上的轻微下降也全源自于此。在下表中展示了V100上Batch=1的推理时间,Decoupled Head 带来了1.1%的性能提升。
表面上看,Decoupled Head 提升了 YOLOX 的性能和收敛速度,但更深层次的,它为 YOLO 与检测下游任务的一体化带来可能。例如 YOLOX + Yolact/CondInst/SOLO ,可实现端侧的实例分割。
(2)数据增强
当模型容量足够大的时候,相对于先验知识(各种 tricks,hand-crafted rules ),更多的后验(数据/数据增强)才会产生本质影响。通过使用 COCO 提供的 ground-truth mask 标注,作者在 YOLOX 上尝试了 Copypaste,下表表明,在 48.6mAP 的 YOLOX-Large 模型上,使用 Copypaste 带来0.8%的涨点。
但是 Copypaste 的实现依赖于目标的 mask 标注,而 mask 标注在常规的检测业务上是稀缺的资源。而由于 MixUp 和 Copypaste 有着类似的贴图的行为,还不需要 mask 标注,因此作者在 Mixup 上进行了修改,实现了在原理上更接近 Copypaste 的 Mixup 数据增强方式。
在整个实验中,作者使用的是 Mosaic 和修改后的 Mixup 数据增强方式。需要注意的是:在模型训练结束前的15个 epoch 要关掉 Mosaic 和 Mixup 。因为 Mosaic + Mixup 生成的训练图片,远远脱离自然图片的真实分布,并且 Mosaic 大量的裁剪操作会带来很多不准确的标注框。
(3)Anchor-free
对于基于 anchors 的目标检测器,为了获得最优的检测性能,需要在训练前进行聚类分析来确定一组最优锚点,但是这也带来了一些问题:
- 聚类得到的锚框一般只能用在该数据集上,并不是通用的;
- 锚框增加了检测头的复杂度以及生成结果的数量;
- Anchor Free 的解码代码逻辑更简单,可读性更高。
因此,无锚探测器(比如Fcos、Cornernet等)在过去两年中发展迅速。一些工作表明,无锚检测器的性能可以与基于锚的检测器相媲美。Anchor-free 机制显著减少了需要启发式调整的设计参数的数量和涉及的许多技巧(例如,锚定群集、网格敏感)。使得检测器,特别是其训练和解码阶段变得相当简单。
基于Anchor-free 的方法,将每个位置的预测从3个减少到1个,并让它们直接预测4个值,即网格左上角的两个偏移量,以及预测框的高度和宽度。通过这样的修改降低了检测器的参数和GFLOP,使其速度更快,但获得了更好的性能42.9%AP。
(4)SimOTA
很多人可能质疑为什么 Anchor Free 现在可以上 YOLO ,并且性能不降反升?
其实这与样本匹配有着密不可分的联系。与 Anchor Free 比起来,样本匹配在业界似乎没有什么关注度。但是一个好的样本匹配算法可以天然缓解拥挤场景的检测问题,缓解极端长宽比的物体的检测效果差的问题,以及极端大小目标正样本不均衡的问题。甚至可能可以缓解旋转物体检测效果不好的问题,这些问题本质上都是样本匹配的问题。
其实,作者在之前的工作 OTA 中就充分考虑到了样本匹配的 4 个重要的因素,通过把样本匹配建模成最优传输问题,求得了全局信息下的最优样本匹配方案。这 4 个因素分别是:
- loss/quality/prediction aware:基于网络自身的预测来计算 anchor box 或者 anchor point 与 gt 的匹配关系,充分考虑到了不同结构/复杂度的模型可能会有不同行为,是一种真正的 dynamic 样本匹配。
- center prior : 考虑到感受野的问题,以及大部分场景下,目标的质心都与目标的几何中心有一定的联系,将正样本限定在目标中心的一定区域内做 loss/quality aware 样本匹配能很好地解决收敛不稳定的问题。
- dynamic k:也就是为不同目标设定不同的正样本数量。
- global information:有些 anchor box/point 处于正样本之间的交界处、或者正负样本之间的交界处,这类 anchor box/point 的正负划分,甚至若为正,该是谁的正样本,都应充分考虑全局信息。
值得注意的是,OTA 最大的问题是会增加约 20~25 %的额外训练时间,对于动辄 300epoch 的 COCO 训练来说是有些吃不消的,此外 Sinkhorn-Iter 也会占用大量的显存,所以在 YOLOX 上,我们去掉了 OTA 里的最优方案求解过程,保留上面 4 点的前 3 点,因此,YOLOX 采用的样本匹配方案被称为 SimOTA ( 即简化的 OTA )。
三、实验与效果
除了 DarkNet53,我们还在其他不同大小的主干上测试了 YOLOX,在这些主干上,YOLOX 相对于所有对应的主干都取得了一致的改进。
(1)训练参数设置
YOLOX 的训练设置与基线基本保持一致。在 COCO Train 2017 上训练了总共 300 个 epochs。采用的是随机梯度下降(SGD)进行训练,动量参数为0.9。学习率:lr x batch_size/64,初始的lr=0.01,并且之后采用余弦衰减,权重衰减系数为0.0005。
(2)YOLOv3 & YOLOX
下表实验结果表明,YOLOX 在 640×640 分辨率的 COCO 数据集上将 YOLOv3 的 AP 提升到了47.3%,大大超过了目前 YOLOv3 的最佳实践 44.3% 的 AP。
(3)YOLOv5 & YOLOX
为了进行公平的比较,作者采用了YOLOv5的主干网络,包括修改后的 CSPNet、SiLU 激活函数和PAN头。作者还遵循它的比例规则构建了YOLOX、YOLOX-M、YOLOX-L和YOLOX-X模型。与YOLOv5相比,我们的模型AP提高了1.0%-3.0%,只增加了一点额外的时间成本(来自解耦的头部)。
(4)YOLOX-Tiny & YOLOX-Nano
作者将模型进一步缩小为YOLOX-Tiny,以与YOLOv4-Tiny进行比较。对于移动设备,采用深度卷积的方法构建了一个只有0.91M参数和1.08G FLOP的YOLOX-Nano模型。如下表所示:YOLOX的性能很好,模型尺寸甚至比对应的模型还要小。
(5)模型大小与数据增强策略
作者发现,在不同规模的模型上,合适的增强策略是不同的。虽然对YOLOX-L应用混合可以使AP提高0.9%,但对于YOLOX-Nano这样的小模型,最好减弱这种增强作用。
具体地说,在训练小模型YOLOX-S、YOLOX-TINY和YOLOX-Nano时,我们去掉了MixUp增强,削弱了马赛克。这样的改进将YOLOX-Nano的AP从24.0%提高到25.3%。
四、总结
作者在YOLO系列的基础之上,进行了一系列的改进,构建了一个名为 YOLOX 的高性能 Anchor-free 检测器。采用了一些最新的先进检测技术,比如解耦头部、无锚点和先进的标签分配策略,这使得YOLOX 实现了速度和精度之间的最佳平衡。值得注意的是,YOLOX 在 COCO 数据集上,将YOLOv3的架构性能提升至47.3%AP,超过当前最佳实践3.0%的AP。
以上是关于YOLOX 解读与 YOLOv5 匹敌的 anchor-free 目标检测器!的主要内容,如果未能解决你的问题,请参考以下文章
最新|全新风格原创YOLOv7YOLOv5和YOLOX网络结构解析图