论文:
https://arxiv.org/pdf/2107.08430.pdf
参考:
如何评价旷视开源的YOLOX,效果超过YOLOv5? - 知乎
YOLOX深度解析(二)-simOTA详解 - 知乎
改进点:
各种tricks组合,效果很好
Decoupled head
加快收敛速度、提高AP
Strong data augmentation
add Mosaic and MixUp into our augmentation strategies to boost YOLOX’s per- formance.
Anchor-free
YOLO5还是anchor-based
Multi positives
YOLOv3仅采样中心点的一个正样本,忽略其他高质量样本。
YOLOX将中心3X3的区域都认为是正样本,每个gt从YOLOv3的1个正样本增长到9个正样本。
SimOTA
OTA充分考虑了以下四个因素:
1). loss/quality aware:基于网络自身的预测来计算anchor point 与 gt 的匹配关系,充分考虑到了不同结构/复杂度的模型可能会有不同行为,是一种真正的 dynamic 样本匹配。而 loss aware 后续也被发现对于 DeTR 和 DeFCN 这类端到端检测器至关重要。与之相对的,基于 IoU 阈值 /in Grid(YOLOv1)/in Box or Center(FCOS) 都属于依赖人为定义的几何先验做样本匹配,目前来看都属于次优方案。
2). center prior:将正样本限定在目标中心的一定区域内做 loss/quality aware 样本匹配能很好地解决收敛不稳定的问题。
3). dynamic number of positive anchors for each ground-truth (abbreviated as dynamic top-k):不同目标设定不同的正样本数量( dynamic k )
4). global view:有些 anchor box/point 处于正样本之间的交界处、或者正负样本之间的交界处,这类 anchor box/point 的正负划分,甚至若为正,该是谁的正样本,都应充分考虑全局信息
但因为有Sinkhorn-Knopp algorithm快速迭代,会导致运算时间长。
simOTA
去掉了 OTA 里的最优方案求解过程,保留上面 4 点的前 3 点。simplify it to dynamic top-k strategy to get an approximate solution.
可以自动分析每个gt需要多少正样本,自动决定每个gt从那些特征图中来
1.确定正样本候选区域
2.计算每个样本对每个GT的Reg+Cls loss
3.使用每个GT的预测样本确定它需要分配到的正样本数
获取与当前GT的top10 最大IOU的pred结果,sum(top10)=当前GT的dynamic k
4.为每个GT取loss(cost)最小的前dynamic k个样本为正样本,其余为负样本。
5.人工去掉同一个样本被分配到多个GT的正样本情况
更好的分配策略应该摆脱对每个gt对象进行最优分配的惯例,而转向全局最优的思想,换句话说,为图像中的所有gt对象找到全局的高置信度分配。(和DeTR中使用使用匈牙利算法一对一分配有点类似)