YOLO - 锚盒仅用于训练吗?

人工智能 卷积神经网络 约洛 边界框
2021-11-06 05:45:15

YOLO 中的另一个问题。我对 YOLO 如何通过偏移量调整锚框以创建最终边界框感到不满。我不明白的是,YOLO 是什么时候做的。是只在训练过程中进行,还是在已经训练好的模型的共同使用过程中进行?

1个回答

目标检测模型在训练和测试阶段表现相同,即它们只是返回成千上万的边界框作为预测,加上每个框的置信度分数(重要)。训练和测试之间的变化是我们对这些边界框所做的。

训练
在训练期间,我们想要评估每个边界框相对于我们的真实标注的好坏程度,因此通常会在每个预测的边界框与每个真实的标注框之间进行残酷的比较。当然,我们需要量化每个预测框与真实标注的质量,我们可以使用联合交集(IOU)来做到这一点,即两个框组合的总面积之间共享像素的百分比。我们在训练期间并不关心模型返回的预测量,我们只希望模型学习预测总体上好的盒子。

测试:
在测试期间,我们确实希望每个对象有一个框,但模型仍然返回数千个,所以我们需要找到一种方法来自己选择一个,这就是为什么预测的置信度分数很重要,否则我们不知道哪些盒子比其他盒子更好。用于根据置信度分数选择获胜框的最常见算法称为非最大抑制

下图显示了算法(取自链接的博客文章)。

您可以看到 Non-Max Suppression 迭代工作,从置信度得分最高的框开始,并检查它与其余框之间的 IOU。为了工作,需要设置一个初始阈值参数,该阈值用于确定是否应保留剩余框之一并在下一次迭代中进行测试。基本上我们想丢弃重叠太多的盒子。从概念上讲,如果我在某个位置有一个置信度得分高的框,而另一个框与它重叠很多但置信度得分较低,我只想保留第一个而丢弃第二个。相反,如果两个框不重叠,那么它们可能正在检测不同的对象,我想保留两者。请注意,在非最大抑制的软版本中,IOU 分数也用于更新每个框的置信度分数。

在此处输入图像描述