YOLOX

举报
dilligencer 发表于 2021/12/28 17:13:56 2021/12/28
【摘要】 摘要YOLOX采用了anchor-free的方式;并采用decoupled head的方式,即将类别预测head和坐标预测head解耦;采用SimOTA标签分配策略实现了先进的检测效果。对于只有0.91M参数和1.08G FLOPs的YOLONano,在COCO上获得25.3%的AP,AP超过NanoDet 1.8%;对于行业中使用最广泛的探测器之一YOLOv3,在COCO上将其提高到47....

摘要

YOLOX采用了anchor-free的方式;并采用decoupled head的方式,即将类别预测head和坐标预测head解耦;采用SimOTA标签分配策略实现了先进的检测效果。对于只有0.91M参数和1.08G FLOPs的YOLONano,在COCO上获得25.3%的AP,AP超过NanoDet 1.8%;对于行业中使用最广泛的探测器之一YOLOv3,在COCO上将其提高到47.3%AP,比当前的最佳做法高出3.0%AP;对于与YOLOv4 CSP、YOLOv5-L参数量大致相同的YOLOX-L,我们在特斯拉V100上以68.9 FPS的速度在COCO上实现了50.0%的AP,超过了YOLOv5-L 1.8%的AP。作者还提供了支持ONNX、TensorRT、NCNN和Openvino的部署版本。

Introduction

过去两年,目标检测领域聚焦于:anchor-free检测器、label对齐策略以及无NMS的端到端检测器。这些技术都没有集成到YOLO系列当中。YOLOv4和YOLOv5仍然采用基于anchor的检测器和人工设计的分配anchor规则。

作者采用YOLOv3作为出发点,试图将以上研究集中到YOLOv3中,研究出YOLOX,性能如下图所示:

q.png

YOLOX

baseline:YOLOV3 with SPP和 Darknet53

1、实现细节

训练了300个epoch,warm-up前个epoch;优化器SGD;学习率线性缩放:lr*BatchSize/64,初始lr=0.01,余弦调度策略,权重衰减为0.0005,SGD动量为0.9。对于8-GPU设备,批处理大小默认为128。输入大小从448到832,步幅为32。

2、YOLOv3 baseline

在YOLOv3-SPP基础上,添加 EMA权重更新,余弦lr衰减,IoU损失以及IoU-aware分支,采用BCE损失训练cls和obj分支,IoU损失训练reg分支。只进行了随机水平翻转、颜色抖动和多尺度的数据增强,并放弃了RandomResizedCrop策略,因为我们发现RandomResizedCrop与mosaic增强有点重复。

3、Decoupled head

作者发现耦合的检测head会降低检测性能:

用一个解耦的head替换YOLO的head大大提高了收敛速度

解耦head对于端到端版本的YOLO至关重要:耦合head的端到端性能降低4.2%AP,而解耦head的端到端性能降低到0.8%AP。

具体来说,解耦后的head包含一个1*1 的conv层以减少通道尺寸,然后是两个分别的具有两个3*3 conv层的平行分支。


Yolox.png

4、数据增强

Mosaic和MixUp增强方法

5、Anchor-free


anchor-free机制显著减少了需要启发式调整和许多技巧的设计参数数量(例如anchor的聚类)。

将每个位置的预测从3减少到1,并使其直接预测四个值,即网格左上角的两个偏移量,以及预测框的高度和宽度。我们将每个对象的中心位置指定为正样本,并预定义比例范围),以指定每个对象的FPN级别。这种修改降低了检测器的参数和GFLOP,使其速度更快,但获得了更好的性能–42.9%的AP。

6、Multi positives

为了与YOLOv3的分配规则保持一致,上述anchor-free版本仅为每个对象选择一个正样本(中心位置),但是忽略了其他高质量预测。然而,优化这些高质量的预测也可能带来有益的梯度,这可能会缓解训练期间正/负样本的极端不平衡。作者将中心3*3区域指定为正,检测器的性能提高到45.0%AP。

7、SimOTA

SimOTA首先为每个预测-gt对计算匹配度,称为cost。例如,在SimOTA中,ground truth表示为pi和预测pj之间的caost计算如下:

2.png

对于gt,选择固定中心区域内cost最小的前k个预测作为其正样本。最后,这些正预测的对应网格被指定为正样本,而其余网格为负样本。注意,k值因不同的gt而不同。SimOTA不仅减少了训练时间,而且避免了Sinkhorn-Knopp算法中额外的求解器超参数。SimOTA将检测器从45.0%AP提高到47.3%AP,比SOTA ultralytics-YOLOv3高出3.0%AP。

最后各模块的性能提升如下表所示:

3.png

三、YOLOX系列

作者将YOLOv5的backbone拿过来用,衍生出了YOLOXS,YOLOX-M, YOLOX-L, 和YOLOX-X,并将其与YOLOv5的性能进行比较,详细结果见论文表3.

作者类比YOLOv4-Tiny提出YOLOX-Tiny,并且针对移动设备,采用深度可分离卷积,提出了YOLOX-Nano模型,参数量为0.91M,FLOPS为1.08G。

其他的一些实验结果不再赘述,详见论文实验。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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