yolo3-pytorch
yolo3-pytorch copied to clipboard
dataloader中getitem函数问题
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
这里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
感谢感谢,仔细看了下xml的格式是xmin ymin xmax ymax的,我之前一直以为是xywh
0 0