1,YOLOX算法介绍
1.1,YOLOX算法核心思想
(1)耦合检测头更改为非耦合检测头。
(2)从Anchor-based 改为Anchor-free
(3)数据增强
1.2,YOLOX算法详细步骤
(1)检测头解耦的细节如下图所示:
从原始的一个检测头预测cls,reg和obj三项内容,解耦成两个分支,第一个分支预测cls,第二个分支预测reg和IoU。
检测头解耦之后得到了以下两点改进:
① 将预测分支解耦极大的改善收敛速度。
② 相比较于非解耦的端到端方式,解耦能带来4.2%AP提升。
(2)Anchor_free策略
作者认为Anchor_based检测方法需要设定Anchor值,无论是借用前人的经验数值或根据任务数据聚类分析来确定,都有泛化性不强的缺点。
同时Anchor_based检测中,每一个点基本有3组Anchor值(正方形,长的、宽的),相比之下Anchor_free策略就少了3倍的预测量,可以减少模型参数和预测速度。
为了使用Anchor_free策略,作者只将物体中心点所在的位置认为是正样本,其余都设置为负样本,来进行训练。为了增强效果,作者增加了Multi positives和SimOTA两种策略:
① Multi positives:中心3*3区域认为正样本,gt从1个增长到9个。
② SimOTA:解决一个特征图上的点,到底归属于哪一个GT的问题。OTA是这个问题的最优化解法。作者为了训练效率,这在里使用了近似最优解。
(3)数据增强:
利用了Mosaic、MixUp、RandomHorizontalFlip,、ColorJitter等数据增强方法,并在最后15个epoch关闭Mosaic、MixUp数据增强,来达到最优的训练效果。
2,模型效果
YOLOX算法,与之前的SOTA算法在COCO数据集上的测试结果比较:
相比传统的YOLOV3、YOLOV5等算法,YOLOX在COCO数据集上有更好的检测准确率,同时无论是模型参数还是推理速度都有优势。