[论文笔记]YOLOX 阅读笔记

YOLOX 阅读笔记

  • YOLOX: Exceeding YOLO Series in 2021(CVPR 2021)
  • 动机
  • 解决方案
    • Decoupled head(解耦头)
    • Strong data augmentation(数据增强)
    • Anchor free(无锚检测器)
    • Multi positives(增加正样本)
    • SimOTA
    • End-to-End YOLO
  • 问题

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当中去

解决方案

[论文笔记]YOLOX 阅读笔记_第1张图片

Decoupled head(解耦头)

[论文笔记]YOLOX 阅读笔记_第2张图片

  • coupled head指的是回归和分类共享参数,使用一个向量进行预测,如上图中YOLOv3~v5

  • decoupled head指的是将分类和回归的向量进行分离,使用各自的参数进行预测
    [论文笔记]YOLOX 阅读笔记_第3张图片
    [论文笔记]YOLOX 阅读笔记_第4张图片

  • 从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,可以提升性能,如下图[论文笔记]YOLOX 阅读笔记_第5张图片

    • 使用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 gi 和prediction p j p_j pj的匹配度(例如使用cost和quality作为参考): c i j = L i j c l s + λ L i j r e g c_{ij}=L_{ij}^{cls}+\lambda L_{ij}^{reg} cij=Lijcls+λLijreg
      其中 λ \lambda λ表示平衡系数, L i j c l s L_{ij}^{cls} Lijcls L i j r e g L_{ij}^{reg} Lijreg分别表示 g i g_i gi p j p_j pj之间的分类损失和回归损失
    • 对于每一个 g i g_i gi,选择固定中心区域中top k k k个具有最小cost的prediction
    • 将这些正样本的相应grid分配为正,而其余grid为负

End-to-End YOLO

  • 这里端到端学习对应的是table 2中的NMS free,我也不是很懂

问题

  • 以往的很多检测器都是用的decoupled head吧,这也能作为创新点吗???
  • 这检测器叫做FCOSX感觉比较合适吧
  • Multi positives明明可以和Anchor free放在一起(直接使用FCOS的方法),它偏偏要自己开一个小节
  • 不是很懂端到端学习和NMS free的关系
  • 在anchor free的过程中,不是已经分配了标签吗,为什么还需要SimOTA来进行标签分配?——这个问题在看了代码之后可以理解:作者先在forward之后将最后得到的特征图进行decode,得到许多的decoded bboxes,它们对应着前面特征图中的priors,然后首先在anchor free的过程中使用FCOS的规则筛选priors,之后再使用SimOTA来筛选decoded bboxes,最终将经过两次筛选的剩下的priors作为正样本

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