YOLOX 论文笔记

YOLOX: Exceeding YOLO Series in 2021

YOLOX

论文链接: https://arxiv.org/abs/2107.08430

一、 Problem Statement

提出一些tricks,用于提升YOLO系列。

二、 Direction

  • A decoupled head
  • Strong augmentation
  • Anchor-free
  • Multi positives
  • Label assignment strategy: SimOTA

三、 Method

作者选择YOLOv3,Darknet53 backbone + SPP 作为baseline。把EMA 权重更新,cosine lr schedule, IoU Loss, IoU-aware branch 融合进去。同时使用BCE Loss来训练分类和目标分支,IoU Loss用于训练回归分支。使用RandomHorizontalFlip,ColorJitter和multi-scale来进行数据增广。取消了RandomResizedCrop,因为作者发现它和mosaic增广方式有一定程度的重叠。

1. Decouple head

作者发现coupled detection head会降低检测器以下性能:

  1. 收敛速度
  2. decoupled head对 end-to-end 很重要

具体来说,首先使用一个1x1卷积层降低通道数,然后输入到两个平行的分支,每个分支都含有两个3x3的卷积层。最后一个分支用于分类,一个分支用于回归和IoU预测。性能提升了,但是参数量变大,FPS降低。

2. Strong data augmentation

使用Mosaic和Mixup数据增广的方式。这两个方式会在最后15个epochs训练的时候进行关闭。作者发现,使用了strong augmentation, ImageNet的pre-training效果不明显,因此重头开始训练模型。

3. Anchor-free

Anchor-based 机制有以下问题:

  1. 在训练之前,为了能达到最优的检测性能,需要对一系列的anchors进行聚类分析,来获得anchors的最优值。这些聚类过的anchors是domain-specific,因此泛化能力有一定的影响。
  2. anchor-based的机制增加了detection head的复杂度。在一些边缘设备上,可能是存在的一个瓶颈。

而对于以上问题,作为利用了近几年的Anchor-free思想,融合进YOLO系列中,减少参数的设定和调优。具体做法如下:

把每个位置的预测从三个降为一个,并直接预测四个值: 对于左上角的两个offsets,高度和宽度。 把每个目标的中心点坐标作为positive sample,且预设一个尺度范围对应于FPN不同层级(做法和FCOS一样)。这个做法降低了GFLOPS参数,加快检测速度同时提升了性能。

4. Multi positives

上面的Anchor-free方法,只选择了一个positive sample,也就是目标的中心点。这种方法忽略了其他高质量的预测。如果考虑那些高质量的预测,对于减轻positive/negative的不平衡问题是有作用的。所以作者也使用了和FCOS一样的方法,“center sampling”, 也就是把中间3x3区域内的样本作为positive。

5. SimOTA

label assignment也是一个提升的方向。label assignment有四个特点:

  1. loss/quality aware
  2. center prior
  3. dynamic number of positve anchors for each ground-truth
  4. global view

作者研究了OTA,符合以上所有规则。但是通过Sinkhorn-Knopp算法求解Optimal Transport带来额外的25%训练时间。因此作者提出了SimOTA,简化版本。

以上所有Tricks所带来相对应的提升如下图所示:

对于使用YOLOv5的backbone,CSPNet,能达到超越其本身的性能。别且作者通过实验发现:不同大小的模型应使用不同的数据增广策略。对于小模型,最好是减弱数据增广,比如移除掉mixup和减弱mosaic。对于训练大模型,更强的数据增广是有效果的。

四、 Conclusion

提出了Anchor-free的YOLO系列,通过一系列tricks提升了YOLO的性能。

Reference

你可能感兴趣的:(2D目标检测论文笔记,人工智能,深度学习,计算机视觉)