如何为 YOLO 标记训练数据

How to label training data for YOLO

我有一个关于如何为 YOLO 算法标记训练数据的问题。

假设每个标签Y,我们需要指定[Pc, bx, by, bh, bw],其中Pc是存在的指标(1=存在,0=不存在),(bx, by ) 是感兴趣对象中心的相对位置,(bh, bw) 是包含对象的边界框的相对尺寸。

以下图为例,包含黑色汽车的单元格(1,2)的标签Y = [1, 0.4, 0.3, 0.9, 0.5]。对于任何没有汽车的单元格,它们应该有一个标签 [0, ?, ?, ?, ?] []1

但是如果我们有一个像这样更精细的网格,其中每个单元格的尺寸都小于地面实况边界框。

假设汽车的地面实况边界框是红色框,地面实况中心点是单元格 2 中的红点。

对于单元格 2,它的标签 Y = [1, 0.9, 0.1, 2, 2],是否正确? 对于单元格 1、3、4,它们会有什么样的标签?他们有 Pc=1 还是 Pc=0?如果 Pc=1,bx 和 by 会怎样? (我记得 bx, by 的值应该在 0 和 1 之间。但是在单元格 1,3,4 中,没有感兴趣对象的中心点)

实际上它包含在单元格 2 中的中点。根据 Y.O.L.O,单元格 1、3、4 将显示 Pc=0。算法只计算包含中点的单元格并计算边界框,正如你提到的,通过 bx、by、bh、bw。有了 Y = [1, 0.9, 0.1, 2, 2] 的命题,我会认为如果把点 (0,0) 作为左上角,Y 更可能是 Y = [1 ,0.2,0.57,0.21,0.15],使用 19 x 19 的网格进行计算,如下所示。