YOLO 和调整自定义数据集的锚框数量

kri*_*nab 1 object-detection conv-neural-network keras tensorflow yolo

我正在致力于实现 YOLO v2 和 3,以在自定义数据集上进行对象检测。虽然 YOLO v2 和 3 使用 5 个左右的锚框,但我通常每个图像可能有 50-100 次检测。我的感觉是,如果只有 5 个锚框,那么每个图像最多有 5 个检测,对吧?所以我试图了解是否需要调整我的数据集的锚框数量。

我的问题是,锚框的数量是否需要大于任何训练图像中边界框的最大数量?这样,我就永远不会遇到没有相应锚框的检测。这是改编 YOLO 的正确思考方式吗?

如果我的直觉是正确的,那么我需要使用 k 均值来对地面实况图像中的边界框进行聚类并设置锚框坐标。然后我将使用本博客文章中指定的常用回归方法。

感谢任何人都可以提供的帮助。

vij*_*y m 5

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

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

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

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