YOLOX论文理解

YOLOX论文:YOLOX: Exceeding YOLO Series in 2021

代码链接:https://github.com/Megvii-BaseDetection/YOLOX

随着目标检测技术的发展,YOLO系列一直在追求实时应用场景下速度和精度的最佳平衡,且都引入了在当时看来最先进的技术,例如YOLOv2的anchors,YOLOv3的残差网络等,并通过优化得到最好的现实表现。目前,拥有精度和速度最佳平衡的YOLOv5在COCO数据集上可达到48.2%的AP,以及13.7ms的推理速度(基于Tesla V100显卡)。

不过呢,在过去的两年,目标检测领域关注的先进技术,比如anchor-free检测器、高级标签分配策略,以及端到端(NMS-free)的检测器等,尚未被应用到YOLO系列。YOLOv4和YOLOv5仍然使用anchor-based检测器以及训练时的手工标签分配。

基于此,论文中将最新的先进技术引入YOLO系列,生成了YOLOX。由于YOLOv4和YOLOv5在anchor-based pipeline中存在一些过度优化,且工业界目前广泛使用的仍然是YOLOv3,因此,论文中仍然以YOLOv3(YOLOv3-SPP)作为对比的基准。下图给出了YOLOX和其他SOTA模型在速度和精度上的对比:

YOLOX论文理解_第1张图片

接下来,我们逐一介绍论文中提及的要点。

一. 算法改进要点

1. YOLOv3 baseline

论文中采用了YOLOv3-SPP作为基线,即DarkNet53为backbone(DarkNet53的网络结构见下面一幅图),附加一个SPP层。与原始实现相比,在训练阶段应用了一些改进策略,包括,增加了EMA(Exponential Moving Average,指数移动平均)权重更新,cosine 学习率调度,IoU loss和IoU-aware分支。使用BCE(Binary Cross Entropy 二元交叉熵)loss来训练cls和obj分支,IoU loss来训练reg分支。另外,在数据增强方面,使用随机水平翻转(RandomHorizontalFlip)、颜色抖动(ColorJitter)和多尺度(multi-scale)策略,同时放弃了随机尺寸裁剪( RandomResizedCrop )策略。

YOLOX论文理解_第2张图片

2. Decoupled head

在目标检测领域,分类任务和回归任务的冲突是一个众所周知的问题,因此,大多数one-stage和two-stage的检测器使用的都是解耦头(decoupled head)。然而YOLO系列却一直保持了耦合头部(coupled-head)。

作者通过实验证明了耦合头部并不利于算法表现。

(1) 将YOLO的头部替换为decoupled head,可以显著降低收敛速度;

YOLOX论文理解_第3张图片

(2) decoupled head对end-to-end版本的YOLO算法至关重要。

YOLOX论文理解_第4张图片

因此,在YOLOX中,使用decoupled head代替YOLO的检测头。YOLO的coupled head和YOLOX的decoupled head对比如下图:

YOLOX论文理解_第5张图片

从上图可以看出,decoupled head有三个输出,分别是Cls、Reg和IoU,其中,Cls是对目标框的类别进行预测,输出分数;Reg是对目标框的坐标信息进行回归预测;IoU输出主要是判断目标框中是否有目标物。

需要注意的是,使用decoupled head在一定程度上增加了模型的复杂性,从而引起少量的运行时间增加,这将在后面的表格中给出数据支撑。

3. Strong data augmentation

论文中使用Mosaic和MixUp策略来做数据增广。两种策略的实现方式可参考下面两幅图。

Mosaic: 

YOLOX论文理解_第6张图片

MixUp: 

YOLOX论文理解_第7张图片

4. Anchor-free

YOLOv3/v4/v5均采用的是anchor-based的方式,但anchor-based方式存在不少问题。首先,为了获得最佳表现,需要在训练之前进行聚类分析以确定一组最佳anchors,但不同领域的聚类anchors不具备普遍性。其次,anchor机制会增加检测头的复杂度以及每幅图像的预测数,并不适合在终端设备上进行部署。

Anchor-free的检测器在近两年发展迅速,并已获得了和anchor-based检测器相当的表现。anchor-free的方式可以显著降低设计参数,使得检测器的复杂度(尤其是训练和解码阶段)得到极大的简化。

将YOLO转换为anchor-free的方式比较简单。将每个位置的预测从3减少到1,并使其直接预测四个值,即网格左上角的两个偏移量,以及预测框的高度和宽度。将每个对象的中心位置指定为正样本,并预先定义其比例范围,并为其指定FPN level。这样修改后可进一步降低模型的参数量以及GFLOPs,并提升算法表现(AP值提升至42.9%)。

5. Multi positives

YOLOv3的标签分配策略,采用的是单正例(目标的中心点区域),而忽略掉了其他高质量预测。但该方式存在正负例数量不平衡的问题,训练过程收敛缓慢。因此,论文中将中心点附近的3x3区域均做作为正例(在FCOS中称为“Center sampling”),这样,正样本数量就增至原来的9倍。

采用multi positives策略之后,算法AP值进一步提升至45%。

6. SimOTA

OTA的意思是Optimal Transport Assignment,是一种标签分配策略,从全局角度,以Optimal Transport问题方式解决标签分配问题,使得算法具备SOTA表现。但原始的Sinkhorn-Knopp算法会额外带来1/4的训练时间,因此在YOLOX的论文中,使用了一种近似解决方法,动态top-k策略,称为SimOTA。

使用SimOTA后,算法的表现进一步提升,从45.0%提升到了47.3%。

以上改进步骤对算法的表现影响见下面表格:

YOLOX论文理解_第8张图片

二. 其他

1. Other backbones

除了DarkNet53,论文中还对其他的backbone做了对比实验,下表是YOLOX与YOLOv5对应网络的对比结果:
YOLOX论文理解_第9张图片

 此外,对于轻量级的网络,论文中也给出了对比数据:

YOLOX论文理解_第10张图片

2. Comparison with the SOTA

YOLOX论文理解_第11张图片

 

你可能感兴趣的:(深度学习,目标检测,深度学习)