代码之家  ›  专栏  ›  技术社区  ›  krishnab

Yolo对象检测:该算法如何预测大于网格单元的边界框?

  •  4
  • krishnab  · 技术社区  · 7 年前

    我正在努力更好地理解Yolo2&3算法的工作原理。该算法处理一系列卷积,直到达到 13x13 网格。然后它可以对每个网格单元内的对象以及这些对象的边界框进行分类。

    enter image description here

    如果你看这张图片,你会发现红色的边界框比任何单独的网格单元都大。边界框也位于对象中心。

    我的问题是,当网络激活基于单个网格单元时,预测的边界框如何超过网格单元的大小。我的意思是,对于神经元来说,网格细胞之外的一切都应该是未知的,它们预测在该细胞中检测到的物体的边界框。

    更准确地说,我的问题是:

    1。该算法如何预测大于网格单元的边界框?

    2。算法如何知道对象的中心位于哪个单元格中?

    1 回复  |  直到 7 年前
        1
  •  4
  •   P-Gn    7 年前

    对于神经元来说,网格单元之外的一切都应该是未知的,它们预测在该单元右侧检测到的物体的边界框。

    这不太对。这些细胞对应于图像的一个分区,如果一个物体的中心位于该分区内,神经元就学会了响应。

    但是, 感受野 这些输出神经元比细胞大得多,实际上覆盖了整个图像。因此,它能够识别并在比指定的“中心单元”大得多的对象周围绘制边界框。

    因此,一个细胞集中在输出神经元的接收场的中心,但它是一个小得多的部分。它也有点武断,例如,人们可以想象有重叠的细胞——在这种情况下,当一个物体位于其细胞重叠区域的中心时,你会期望相邻的神经元同时开火。

        2
  •  0
  •   craq    6 年前

    锚定可以具有任意大小和纵横比,与网格大小无关。如果您的数据集主要有大的前景对象,那么您应该初始化锚定为大的。如果只需要对锚进行小的调整,Yolo就会学得更好。

    每个预测实际上使用来自整个图像的信息。通常来自图像其余部分的上下文有助于预测。例如,车辆下方的黑色像素可能是轮胎或阴影。

    该算法并不真正“知道”对象中心所在的单元。但在训练过程中,我们掌握了来自地面真相的信息,我们可以训练它去猜测。经过足够的训练,它最终非常擅长猜测。工作的方式是将最接近地面的锚定指定给对象。其他定位点被分配给其他对象或背景。分配给背景的锚应该具有较低的置信度,而分配给对象的锚则被评估为其边界框的IOU。因此,训练会强化一个锚来提供高信心和准确的边界框,而其他锚则会提供低信心。你问题中的例子不包括任何低置信度的预测(可能是为了保持简单),但实际上,低置信度的预测比高置信度的预测要多得多。