我的理解是,Anchor盒(在Yolo v2算法中)的动机是,在Yolo (Yolo v1)的第一版中,不可能在同一个网格框中检测到多个对象。我不明白为什么会这样。
此外,作者(Yolo v1)的原始论文引用如下:
“每个网格单元预测B包围框和这些框的置信度分数。这些置信度分数反映了模型对盒子包含一个对象的信心程度,以及它认为该框的预测有多精确。”
这不意味着网格单元可以识别多个对象吗?在他们的论文中,他们把B作为2,为什么不把B当作任意高的数,比如说10?
第二个问题:如何将锚盒尺寸与边界盒尺寸相关联,以检测特定对象?一些网站说,锚盒只定义一个形状,而另一些网站说,它定义了一个形状和大小。在任何一种情况下,锚盒是如何绑定到边界盒的?
谢谢你,桑迪普
发布于 2018-10-07 07:40:50
您是对的,YOLOv1有多个(B)包围框,但这些框没有以有效或系统的方式分配给地面真理,因此也不能足够精确地推断包围框。
正如您可以在网上的博客文章中看到的那样,Anchor/Default是原始图像中的一个框,它对应于特定特征图中的特定单元格,该单元格具有特定的纵横比和比例。比例尺通常由特征图(更深的特征图->大锚比例尺)决定,其纵横比不同,例如{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 1方案的另一个缺点是它解耦了包围盒和分类。一方面,这节省了计算,但另一方面-分类是在网格单元的水平。因此,边界框的B选项都具有相同的类预测。例如,这意味着,如果有多个具有相同中心的不同类的对象(例如,持有猫的人),那么至少所有对象的分类都是错误的。请注意,从理论上讲,对相邻网格单元的其他预测将补偿这种错误的分类,但这是没有承诺的,特别是因为根据YOLOv1 1的方案,中心是分配标准。
https://stackoverflow.com/questions/52648214
复制相似问题