一、yoloX的改进
由于yoloV4和yoloV5存在过度优化的问题,因此yoloX以yoloV3和Darknet 53为基线,采用了Darknet 53骨干网的结构架构和SPP层,改变了一些训练策略:
- 增加了EMA权重更新、consine lr schedule、IoU损失和IoU感知分支,使用BCE Loss训练cls和obj,IoU Loss作为test分支。
- 由于RandomResizedCrop和马赛克增强重叠,因此只采用了RandomHorizontalFlip,ColorJitter、multi-scale和mosaic用于数据增强。
- 使用Mixup增强,不使用Imagenet预训练方法。
二、yoloX结构框架
三、Decoupled Head(解耦头部)
思想:分离分类和定位操作 好处:(1)提高了了yoloX收敛速度;(2)实现了yolo的端对端性能。 结构图: YOLOv3与yoloX解耦头之间的区别。对于每一层FPN特征,我们首先采用1 × 1的conv层,将特征通道减少到256,然后再增加两个并行分支,每个分支有两个3 × 3个卷积层分别用于分类和回归任务。IoU分支被添加到回归分支上。
四、免锚
无锚机制的优点:减少了设计参数的数量 实现方式:将每个位置的预测从3个减少到1个,并使他们直接预测4个值(即网格左上角的两个偏移量、预测框的高度和宽度)。同时指定了中心,每个物体的阳离子作为正样本,并预先定义一个刻度方位以指定每个物体的FPN级别,可以降低探测器的参数和GFLOPs,使其速度更快,性能更好。
五、多个正样本
操作:参照FCOS中的‘中心取样’,只为每个对象的平均值选择了一个正样本(中心位置),忽略其他高质量的预测。 优点:(1)有利于梯度回归;(2)缓解训练中的正负样本不均衡
六、SimOTA(高级标签分配)
四个关键点:(1)loss/quality loss (2)cneter prior (3)每个GT的正样本anchor动态个数 (4)全局试图 整体逻辑:
- 确定正样本候选区域
- 计算anchor与gt的IoU
- 在候选区域计算cost
- 使用IoU确定每个gt的dynamic_k
- 为每个gt取cost排名最小的前dynamic_k个anchor作为正样本,其余为负样本
- 使用正负样本计算loss
具体细节: 1、dynamic_k确定方式: - 获取与当前gt有top10最大IoU的prediction结果
- 将这top10IoU进行sum,就为当前gt的dynamic_k,dynamic_k最小取1
由于前期模型预测不准,导致IoU基本比较小,所以观测到前期dynamic_k大多为1 2、计算cost时候,Lcls和Lreg比例是1:3,而最终计算loss时,Lcls和Lreg比例是1:5,原因是:在寻找正样本时,如果一个anchor已经能很好的区分前景和背景,那即使reg预测不准,也可以作为正样本,所以相比于loss计算,在cost计算时,Lcls给予更多权重,而reg可以通过不断地训练逐步优化。
七、端对端yolo(可选)
增加了2个卷积层:
- 一对一地标签分配
- 停止梯度
确保了检测器端对端,但会导致性能和推理速度下降,一次作为可选方式提供
|