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。

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

版权声明:本文为CSDN博主「liiiiiiiiiiiiike」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45074568/article/details/120371817

liiiiiiiiiiiiike

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

yolov5训练数据集划分

yolov5训练数据集划分 按照默认8:1:1划分训练集,测试集,验证集。 txt文件出现在imageset文件夹。 import os import randomtrainval_pe

Pytorch—万字入门SSD物体检测

前言 由于初入物体检测领域,我在学习SSD模型的时候遇到了很多的困难。一部分困难在于相关概念不清楚,专业词汇不知其意,相关文章不知所云;另一部分困难在于网上大部分文章要么只是简要介绍了SS