1

I am working on implementing YOLO v2 and 3 for object detection on a custom dataset. While YOLO v2 and 3 use something like 5 or so anchor boxes, I generally have maybe 50-100 detections each image. My sense is that if there are only 5 anchor boxes, then there are at most 5 detections per image right? So I was trying to understand if I needed to adjust the number of anchor boxes to my dataset.

My questions is, does the number of anchor boxes need to be larger than the maximum count of bounding boxes in any training image? That way, I would never run into detections where there is no corresponding anchor box. Is that the right way of thinking about adapting YOLO?

If my intuition is correct then would I need to do k-means to cluster the bounding boxes in the ground truth images and set the anchor box coordinates. Then I would use the usual regression method as specified in this blog post.

Thanks for any help that anyone can provide.

4

2 回答 2

4

我的感觉是,如果只有 5 个锚框,那么每个图像最多有 5 次检测,对吧?

每个预测单元有五个锚框,而不是整个图像。让我们考虑 Yolo v2,其中输入图像的大小为416x416x3,输出为13x13xN. 每个 13x13 对应于输入图像中的一个 32x32 单元区域(如下图所示来自博客文章),并且对于每个 13x13 单元,定义了 5 个锚点。因此,从技术上讲,您可以为大小为 416x416 的图像设置 13x13x5 的边界框(您也可以使用更大的图像进行训练,因为 yolo v2 是一个完全卷积的网络,然后您可以获得更多的细胞区域)。 在此处输入图像描述

假设您的图像中有 50 个边界框,每个边界框应根据边界框中心与单元格中心的接近程度分配给一个单元格。现在,对于这个单元格,选择 5 个提供最佳 IOU 的锚框之一。为每个单元构建一个标签,该标签应包含所有 5 个锚框的置信度分数和框位置和尺寸(除了选择的锚框,其他将标记为零)以及类分数。

在链接中提到的 k-means 聚类中,它描述了它们是如何到达五个锚框的。最好只使用 5 个边界框,除非您有任何具体原因要包含更多或在出现任何特定要求时具有不同的形状。

于 2018-06-05T21:58:56.053 回答
3

锚框的数量部分影响检测到的框的数量。

YOLOv2 的输出形状为 (13, 13, B*(5+C)),其中B 是锚框的数量,C 是您尝试检测的类的数量。因此输出有 13*13=169 个网格单元。您可以将它们视为将输入图像划分为 13 x 13 个单元格。

每个网格单元最多可以检测B个对象或绑定框。网格单元检测到的绑定框的数量取决于其置信度值。一个网格单元的每个 B 个边界框都有一个置信度,介于 0 和 1 之间。如果一个框的置信度大于某个阈值,网络最终告诉我们检测到了一个框(或对象)。

假设一个网格单元具有以下置信度值,阈值为 0.1。

[0.02, 0.3, 0.001, 0.9, 0.03] (B=5)

在这种情况下,这个网格单元检测到 2 个框,并以较小的置信度丢弃其他 3 个框。

所以如果你想减少检测到的盒子的数量,我建议你增加阈值

网络的输出如下所示。 总共有 13x13 = 169 个网格单元,每个网格单元最多可以检测 B 个边界框。 一个边界框有 5 + C 属性,因此一个网格单元有 D = Bx(5+C) 值(这是深度)。

于 2018-12-18T15:20:03.213 回答