上图是YOLOV10的结构图,可以看到其核心在于head部分,即双重标签分配,通过这种方法可以使YOLO步入NMS Free的门槛。
- 双重标签分配
模型在训练期间使用两个预测头,一个使用一对多分配,另一个使用一对一分配。这样,模型可以在训练期间利用一对多分配的丰富监督信号,而在推理期间则使用一对一分配的预测结果,从而实现无NMS的高效推理。
一对一分配:仅一个预测框被分配给一个真实物体标签,避免了NMS,但由于监督信号较弱,容易导致收敛速度慢和性能欠佳。将YOLOv8使用的TAL中的topk设置为1,即每个标签将根据类别与回归的双重代价被分配至多一个正样本在训练阶段,该检测头的预测都只做一对一的标签分配。
一对多分配:在训练期间,多个预测框被分配给一个真实物体标签。这种策略提供了丰富的监督信号,优化效果更好。“一对多”检测头就是将特征金字塔输出的多尺度特征送给另一个检测头去做预测,只不过在训练阶段,这个检测头的预测采用一对多的标签分配策略(TAL中的topk设置为10,即YOLOv8的默认设置)。 -
PSA
PSA是一种高效的局部自注意力模块,它将卷积后的特征一部分输入到由多头自注意力模块MHSA和前馈网络FFN组成的模块中,然后将两部分连接起来并通过卷积进行融合。增强全局建模能力,降低计算复杂度。
这种方法也是极致的降低自注意力带来的模型复杂度飙升问题,一般这种模块都是放在backbone比较后边部分,因为这个时候图像分的分辨率较低。