我的理解是,锚框(在Yolo v2算法中)的动机是,在Yolo的第一个版本(Yolo v1)中,不可能在同一网格框中检测到多个对象。我不明白为什么会这样。
此外,作者的原始论文(Yolo v1)引用如下:
“每个网格单元都可以预测B边界框以及这些框的置信度得分。这些置信度得分反映出该模型对该盒子包含一个对象的信心如何,以及它认为该盒子所预测的准确性。”
这是否表示网格单元可以识别多个对象?在他们的论文中,他们将B设为2。为什么不将B设为任意更高的数字(例如10)?
第二个问题:如何将“锚框”尺寸绑定到“边界框”尺寸以检测特定对象?一些网站称锚框仅定义形状,而另一些网站则称其定义形状和大小。在这两种情况下,锚框如何与边界框绑定?
谢谢, 桑迪普
答案 0 :(得分:1)
您是正确的,YOLOv1具有多个(B)边界框,但是这些边界框没有以有效或系统的方式分配给地面实况,因此也无法推断边界框足够准确。
正如您可以在Internet上的博客文章上看到的那样,“锚定/默认框”是原始图像中的一个框,对应于特定功能图中的特定单元格,并为其分配了特定的长宽比和比例。 比例通常由特征图(更深的特征图->大锚比例)决定,长宽比会有所不同,例如{1:1,1:2,2:1}或{1:1,1:2,2:1,1:3,3:1}。 通过比例尺和纵横比,可以确定特定的形状,并将该形状(其位置由特征图中当前单元的位置决定)与原始图像中的地面真值边界框进行比较。
不同的论文有不同的分配方案,但通常是这样的:(1)如果具有GT的原始图像上的锚点的IoU超过某个阈值(例如0.5),则这是对正值的正分配锚点;(2)如果低于某个阈值(例如0.1),则为负分配;(3)如果这两个阈值之间存在间隙-则忽略两者之间的锚点(在损失计算中)。>
这样,锚实际上就像负责特定情况的“探测器头”一样,在形状上最相似。因此,它有责任检测形状相似的对象,并推断出每个类的置信度,以及相对于它的边界框参数,即修改锚点的高度,宽度和中心的大小(在两个轴上)以接收正确的边界框。
由于这种分配方案可以有效地在不同锚点之间分配责任,因此边界框预测更加准确。
YOLOv1方案的另一个缺点是它使边界框和分类分离。一方面,这节省了计算,但另一方面-分类是在网格单元的级别上。因此,包围盒的B选项都具有相同的类预测。例如,这意味着,如果存在具有相同中心的不同类的多个对象(例如,持猫的人),那么除一个对象外,至少所有对象的分类都是错误的。请注意,从理论上讲,相邻网格单元的其他预测可能会弥补这种错误的分类,但并不能保证,特别是因为采用YOLOv1的方案,中心是分配标准。