我想为具有 JSON 格式原始标签的自定义数据集训练 YOLO3。JSON 中的每个边界框都指定为[x1, y1, x2, y2].
至此,我已经转换[x1, y1, x2, y2]为[cx, cy, pw, ph],即边界框的中心x,中心y,缩放为图像的宽高;pw, ph是边界框的宽度和高度相对于图像宽度和高度的比率。但我不认为这是完整的(甚至是正确的)。
据我了解,YOLO3 为每个网格单元分配 N 个锚框(图像分为 SxS 网格单元),因此,边界框的预测是相对于来自网格单元的给定锚框(一个锚框与基本事实的 IOU 最高)。公式如下:
因此,我应该如何准备 ground truth 以便 YOLO3 能够理解它们?我是否必须以某种方式颠倒这些公式?另外如何考虑不同数量的尺度和不同数量的锚框?
举一个具体的例子:假设我有一个416 x 416图像和一个13 x 13网格单元的配置。地面实况边界框(来自数据集)是[x1=100, y1=100, x2=200, y2=200],类 = c。YOLO3 的转换值是多少?
LE:假设我们有 2 个班级[car, person]和 2 个锚点(1 个宽,1 个高)。
输出是否会是一个形状张量,13 x 13 x (2*(5+2))其中网格单元的大多数值(形状的向量2*(5+2))为 0,除了一个特定的单元(地面实况边界框的中心所在的单元)?
在这种情况下,对于那个单元格(比如c[i,j]),假设给定锚点 2 的最大 IOU 并且地面实况类是person。这意味着c[i,j,:7](anchor 1 prediction) 将被忽略,c[i,j,7:](anchor 2 prediction)将被忽略[bx, by, bw, bh, conf, 0, 1]。
因此,人的边界框的基本事实应该如何编码?它应该是与网格单元的特定锚点的偏移量吗?这对我来说仍然不清楚。
谢谢!
