1

我的理解是,Anchor Boxes(在 Yolo v2 算法中)的动机是在 Yolo 的第一个版本(Yolo v1)中,不可能在同一个网格框中检测多个对象。我不明白为什么会这样。

此外,作者的原始论文(Yolo v1)有以下引用:

“每个网格单元预测 B 个边界框和这些框的置信度分数。这些置信度分数反映了模型对框包含对象的置信度以及它认为框预测的准确度。”

这不是表示一个网格单元可以识别多个对象吗?在他们的论文中,他们将 B 视为 2。为什么不将 B 视为任意更高的数字,比如 10?

第二个问题:Anchor Box 尺寸如何与 Bounding Box 尺寸相关联,以检测特定对象?一些网站说 Anchor Box 只定义了一个形状,而另一些网站说它定义了一个形状和一个大小。无论哪种情况,Anchor Box 是如何与 Bounding Box 绑定的?

谢谢,桑迪普

4

1 回答 1

2

没错,YOLOv1 有多个 (B) 边界框,但这些边界框并没有以有效或系统的方式分配给基本事实,因此也不能足够准确地推断边界框。

正如您在互联网上的博客文章中看到的那样,锚点/默认框是原始图像中的一个框,它对应于特定特征图中的特定单元格,并分配有特定的纵横比和比例。比例通常由特征图决定(更深的特征图 -> 大锚比例),纵横比各不相同,例如 {1:1, 1:2, 2:1} 或 {1:1, 1:2, 2:1、1:3、3:1}。通过比例和纵横比,指定了一个特定的形状,这个形状的位置由特征图中当前单元格的位置决定,与原始图像中的真实边界框进行比较。

不同的论文有不同的分配方案,但通常是这样的:(1)如果anchor在带有GT的原始图像上的IoU超过某个阈值(例如0.5),那么这是对anchor的正分配,( 2)如果它低于某个阈值(例如 0.1),那么它是一个负分配,并且(3)如果这两个阈值之间存在差距 - 那么中间的锚点将被忽略(在损失计算中)。

这样一来,anchor 实际上就像一个负责特定情况的“检测器头”,在形状上与它最相似。因此,它负责检测形状与其相似的对象,并推断每个类的置信度和相对于它的边界框参数,即将锚的高度、宽度和中心(在两个轴上)修改为多少接收正确的边界框。

由于这种分配方案在不同的锚之间有效地分配了职责,边界框预测更加准确。

YOLOv1 方案的另一个缺点是它将边界框和分类解耦。一方面,这节省了计算,但另一方面 - 分类是在网格单元的级别上。因此边界框的 B 个选项都具有相同的类别预测。这意味着,例如,如果有多个具有相同中心的不同类别的对象(例如,持有猫的人),那么至少除一个之外的所有对象的分类都是错误的。请注意,理论上相邻网格单元的其他预测可能会补偿这个错误的分类,但没有承诺,特别是因为在 YOLOv1 的方案中,中心是分配标准。

于 2018-10-07T07:40:50.353 回答