IoU计算问题
Opened this issue · 0 comments
shuangw98 commented
您好,我发现在评估MR计算IoU时没有将width和height加一,例如:
image.py:
def box_overlap_opr(self, dboxes:np.ndarray, gboxes:np.ndarray, if_iou):
eps = 1e-6
assert dboxes.shape[-1] >= 4 and gboxes.shape[-1] >= 4
N, K = dboxes.shape[0], gboxes.shape[0]
dtboxes = np.tile(np.expand_dims(dboxes, axis = 1), (1, K, 1))
gtboxes = np.tile(np.expand_dims(gboxes, axis = 0), (N, 1, 1))
iw = np.minimum(dtboxes[:,:,2], gtboxes[:,:,2]) - np.maximum(dtboxes[:,:,0], gtboxes[:,:,0])
ih = np.minimum(dtboxes[:,:,3], gtboxes[:,:,3]) - np.maximum(dtboxes[:,:,1], gtboxes[:,:,1])
inter = np.maximum(0, iw) * np.maximum(0, ih)
dtarea = (dtboxes[:,:,2] - dtboxes[:,:,0]) * (dtboxes[:,:,3] - dtboxes[:,:,1])
if if_iou:
gtarea = (gtboxes[:,:,2] - gtboxes[:,:,0]) * (gtboxes[:,:,3] - gtboxes[:,:,1])
ious = inter / (dtarea + gtarea - inter + eps)
else:
ious = inter / (dtarea + eps)
return ious
这可能会影响计算得到的MR结果。