SimOTA的简单理解

SimOTA

simOTA的作用是为不同目标设定不同的正样本数量,例如蚂蚁和西瓜,传统的正样本分配方案常常为同一场景下的西瓜和蚂蚁分配同样的正样本数,那要么蚂蚁有很多低质量的正样本,要么西瓜仅仅只有一两个正样本。对于哪个分配方式都是不合适的。

SimOTA出现在yolox中,首先会计算一个cost代价矩阵,代表每个真实框和每个特征点之间的代价关系,Cost代价矩阵由三个部分组成:

(1)每个真实框和当前特征点预测框的重合程度;
(2)每个真实框和当前特征点预测框的种类预测准确度;
(3)每个真实框的中心是否落在了特征点的一定半径内。
解释一下为什么要由这三个部分组成?
(1)每个真实框和当前特征点预测框的重合程度越高,代表这个特征点已经尝试去拟合该真实框了,因此它的Cost代价就会越小。
(2)每个真实框和当前特征点预测框的种类预测准确度越高,也代表这个特征点已经尝试去拟合该真实框了,因此它的Cost代价就会越小。
(3)每个真实框的中心如果落在了特征点的一定半径内,代表这个特征点应该去拟合该真实框,因此它的Cost代价就会越小。
Cost代价矩阵的目的是自适应的找到当前特征点应该去拟合的真实框,重合度越高越需要拟合,分类越准越需要拟合,在一定半径内越需要拟合。
那如何动态的为不同目标设定不同的正样本数量(dynamic_k)呢?

SimOTA的具体做法

(1)计算每个目标cost最低的10个特征点
(2)把这10个特征点预测的预测框与真实框进行IOU操作,则会得到10个IOU的值
(3)将10个IOU的值进行sum操作后会得到一个值,此时的值为dynamic_k。

如有理解错误,希望大佬们可以指出来!

你可能感兴趣的:(深度学习,Python,深度学习)