一、 引言
- 近两年,大多数算法聚焦于anchor-free的检测器、先进的标签分配策略以及端对端(无NMS)的检测。本文旨在通过经验性的改进将这些技术应用在YOLO算法上。
- 以YOLOv3 (YOLOv3-SPP)为起点,进行对比实验
二、 YOLOX
1. 基准模型YOLOv3-DarkNet53
- 与原始设置相比,增加了EMA权重更新,cosine 学习率,IoU损失和IoU-aware 分支。
- 只进行了随机水平翻转、colorJitter,以及多尺度数据增广,去除了RandomResizedCrop。
2. Decoupled head
- 分类和回归任务的矛盾是一直存在的
- 分类和回归耦合的检测对结果的影响:
- 将YOLO系列的头部解耦,模型收敛更快
- 解耦头对于端对端的检测非常重要
- 解耦头包括一个用于减少通道数的1×1的卷积层,随后是两个采用了3×3卷积的平行分支
3. 强数据增广
- Mosaic:随机选取四张图片进行组合
- Mixup:将随机的两张样本按比例混合,分类的结果按比例分配
4. Anchor-free
- anchor存在的不足:
- 为了达到最优的检测性能,需要在训练前进行聚类分析,确定一组最优的锚点,这种聚类的锚点缺乏泛化能力,没有通用性
- 增加了检测头的复杂性以及每张影像的预测数量
- 将每个位置的预测值有3个降为1个,并使其直接预测四个值,即与左上角的两个偏差值和预测框的宽和高
- 将每个目标的中心点所在位置作为正样本,并预设一个尺度范围
5. Multi positives
- 上述anchor-free模型只选择了中心点位置作为正样本标签,而忽略了其他高质量的预测值
- 本研究将中心3×3的区域作为正样本,类似于FCOS的中心采样
6. SimOTA
- 逐像素分类存在标签分配的问题,多类别交叉的时候容易产生歧义
- 本研究从全局角度出发,根据loss值的变化,采用一对多的方式动态(top-k)的分配标签数量,即最优传输问题(Optimal Transport (OT) )
- 如果一个anchor从gt中得到足够多的正标签的话,就将其称为正anchor,并将gt逐个与之匹配得到anchor-gt pair
- 实践发现,通过Sinkhorn-Knopp算法来解决OT问题会带来25%的额外训练时间,因此这里将其简化为动态top-k策略,命名为SimOTA,以得到近似解
- 将前k个代价最小的选择作为正样本
7. End-to-end YOLO
- 没有NMS的过程
总结:感觉。。。就是在YOLO系列算法的基础上,采用了一堆常用于优化的tip