如何在 YOLO V1 中定义边界框标签?

How to define bounding box label in YOLO V1?

  1. 我正在尝试复现yolo v1,但是我在创建标签时遇到了一些问题
  2. Yolo v1有2个bounding box,那么,当一个grid有一个object时,如何选择哪个bounding box放置位置信息?

例如

  1. 在一张416*416的图片中,有一个物体[x,y,w,h]=[100,200,300,400]
  2. 按照yolo论文,归一化位置到[0.25,0.084,0.72,0.96]
  3. 在yolo论文中,我需要创建一个7*7*30的tensor,大部分都是0,但是在[4,5,:]中tensor应该是长度为30的向量: [置信度 1、x1、y1、w1、h1、置信度 2、x2、y2、w2、h2、c0、c1 ...] 像这样:

我的问题是,什么是 [confidence1, x1, y1, w1, h1, confidence2, x2, y2, w2, h2,]?

A、B、C选哪个?为什么?

在每个单元格中,生成固定数量 (B) 的边界框及其置信度分数。置信度分数是通过将每个对象的概率及其与预测框和地面真值框的并集的交集相乘来计算的。每个边界框由 5 个数字表示:一个四元组 (x;y;w;h) 和框的置信度分数。 x和y是盒子中心的坐标,w和h分别是盒子的宽度和高度。这四个数字是相对于图像的绝对宽度和高度的浮点值,它们可以介于 0.0 和 1.0 之间。置信度分数表示包含对象的框的可能性。每个网格单元格包含不同 class 数量的条件 class 概率,因此,对于每一类对象,每个单元格中都有一个概率,无论 B 的值如何。请注意,条件class概率是指物体属于特定class的概率以包含物体的框为条件。因此,对于每个网格单元,有 B×5 个数字表示边界框信息和 Cclass 个概率。该预测信息被编码为形状为 (S; S; B×5 + C) 的张量。

论文中提到:

predictions are encoded as an S × S × (B * 5 + C) tensor. For evaluating YOLO on PASCAL VOC, we use S=7, B=2. PASCAL VOC has 20 labelled classes so C=20. Our final prediction is a 7×7×30 tensor.

由于数据集有 20 个 class,并且每个单元格中有 2 个边界框,因此您将拥有: B×2+20 = 2×5+20 = 30。这 20 个是 class 概率,可以为 0。在你的张量中,你放了 5 个零,所以我假设你有 5 个 class 对象。所以在这种情况下:

B×2+5 = 9 并且如果你的 S 是 YOLO 中的默认值 7,你的张量的长度将是:7×7 ×9 = 4989。所以对于每个边界框,你有 9 个值,所有这些长度为 9 的向量都相互连接。对于你的问题,A 选项似乎更有可能是真的。

此图适用于 YOLOv3,在您的情况下,对于每个单元格,您有 2 个边界框和 20 个 classes(与有 5 个框和 6 个 classes 的图相反).但是思路是一样的。