yolo3-pytorch icon indicating copy to clipboard operation
yolo3-pytorch copied to clipboard

dataloader中getitem函数问题

Open li784 opened this issue 3 years ago • 3 comments

if len(box) != 0: box[:, [0, 2]] = box[:, [0, 2]] / self.input_shape[1] box[:, [1, 3]] = box[:, [1, 3]] / self.input_shape[0]

box[:, 2:4] = box[:, 2:4] - box[:, 0:2]
box[:, 0:2] = box[:, 0:2] + box[:, 2:4] / 2

最后两行为啥要这样做呢。这不是对一个box的处理吗,为啥还hw减去yx和xy+wh / 2 box[:, 2:4] = box[:, 2:4] - box[:, 0:2] box[:, 0:2] = box[:, 0:2] + box[:, 2:4] / 2

li784 avatar May 10 '22 03:05 li784

这里box的四列分别是:左上角坐标(x1, y1),右下角坐标(x2, y2),这两行的目的是将左上右下坐标转换成中心点(x, y)+宽高(w, h)的形式,因为网络的输出张量是(x, y, w, h, conf, classes)。

# 图像的坐标原点在左上角
box[:, [2:4]] = box[:, 2:4] - box[:, 0:2]  # 求宽高,w=x2-x1,h=y2-y1
box[:, 0:2] = box[:, 0:2] + box[:, 2:4] / 2  # 求中心点,x=x1+w/2, y=y1+h/2

taqaddum avatar May 10 '22 04:05 taqaddum

感谢感谢,仔细看了下xml的格式是xmin ymin xmax ymax的,我之前一直以为是xywh

li784 avatar May 12 '22 05:05 li784

0 0

bubbliiiing avatar May 12 '22 13:05 bubbliiiing