ATSS的核心思想:不要用固定的 IoU 阈值,而是根据每个物体的具体情况,动态地选择正负样本。这样,模型能更好地学习不同物体和场景的特征。
ATSS 的操作可以分成以下几步,用一个简单的例子来帮助理解:
1.找到每个真实物体框的“候选锚框”:
- 对于图片里的每个真实物体框(比如一只猫的边界框),ATSS 会找到离这个物体中心点最近的 K 个锚框(K 通常是 9 个)。
- 这些锚框是“离物体最近”的,所以最有可能是正样本。
2.计算这些锚框和真实物体框的重叠度(IoU):
- 对这 K 个锚框,计算它们和真实物体框的 IoU,得到 K 个 IoU 值(比如 0.6、0.7、0.4 等)。
3.统计这些 IoU 的均值和标准差:
- 计算这 K 个 IoU 的平均值(均值)和标准差(standard deviation,表示数据的分散程度)。
4.动态设置正样本的阈值:
- 对于每个真实物体框,ATSS 会根据这 K 个 IoU 的均值和标准差,计算一个动态的阈值:
- 阈值 = 均值 + 标准差。
- 这个阈值是因物体而异的,不同物体框有不同的阈值。
5.选择正样本:
- 如果一个锚框满足以下两个条件,就被选为正样本:
- 这个锚框和真实物体框的 IoU 大于刚才计算的动态阈值。
- 这个锚框的中心点在真实物体框内。
- 这样,ATSS 就能根据每个物体的具体情况,灵活地选择正样本。
6.选择负样本:
- 对于那些没有被选为正样本的锚框,如果它们的 IoU 小于某个固定阈值(比如 0.5),就被认为是负样本。