YOLOX 阅读笔记
YOLOX: Exceeding YOLO Series in 2021(CVPR 2021)
论文链接:论文链接
代码链接:代码链接
作者自己对于这篇文章的解读:https://www.zhihu.com/question/473350307/answer/2021031747
动机
- 将anchor free、advanced label assignment strategies、end-to-end(NMS-free)detector这些新技术集成到YOLO当中去
解决方案
Decoupled head(解耦头)
-
coupled head指的是回归和分类共享参数,使用一个向量进行预测,如上图中YOLOv3~v5
-
decoupled head指的是将分类和回归的向量进行分离,使用各自的参数进行预测
-
从Table 1 & Figure 3 可以得到两个结论:
- decoupled head可以提升end-to-end YOLO的性能
- decoupled head可以极大提升训练收敛速度
Strong data augmentation(数据增强)
- Mosaic:操作细节可以参考:睿智的目标检测28——YoloV4当中的Mosaic数据增强方法
- MixUp:mixup数据增强方式
- 一些tricks
-
在训练的还有15 epochs 的时候关闭strong data augmentation,可以提升性能,如下图
-
使用strong data augmentation后,可以不用使用pre-training,作者直接从0开始训练
-
Anchor free(无锚检测器)
- 转变为anchor free的具体做法:
- 将每一个位置的预测数量从3降到1(相比于YOLOv3)
- 每个位置预测4个值——以grid的左上角为参照的两个偏移量,以及bbox的高度和宽度
- 将object的中心点(只取一个点)作为正样本,同时不同scale的object被分配到不同level的FPN中去——和FCOS一致
Multi positives(增加正样本)
- 上面的anchor free版本只使用了中心点,这样忽略了一些高质量检测,因此作者参照FCOS的方法将中心3*3的范围的点全部作为正样本
SimOTA
- SimOTA(Simple Optimal Transport Assignment)是基于这篇论文作者自己的工作OTA实现的,是一种相比于OTA更快速的 标签分配策略
- 算法:
- 计算gt g i g_i g