yolo_loss.py 中 _calc_obj_loss() 下的 box_xywh2xyxy() 和 coco 格式不一样
Created by: XiminLin
def box_xywh2xyxy(box):
x = box[:, 0]
y = box[:, 1]
w = box[:, 2]
h = box[:, 3]
return fluid.layers.stack(
[
x - w / 2.,
y - h / 2.,
x + w / 2.,
y + h / 2.,
], axis=1)
之后在 _calc_obj_loss() 里面
gt = box_xywh2xyxy(fluid.layers.squeeze(gt, axes=[0]))
ious.append(fluid.layers.iou_similarity(pred, gt))
这里好像理解 box 中 x,y 为 bounding box 的 中心 x y, 但是其实 coco 数据格式中 x,y 为 左上角 x,y. 在 visualizer.py 的 draw_bbox() 代码中发现确实是左上角 x,y:
xmin, ymin, w, h = bbox
xmax = xmin + w
ymax = ymin + h
这样是否导致 loss 计算不对?
谢谢