(boxes, deltas, weights=(1.0, 1.0, 1.0, 1.0))
return pred_boxes
Forward transform that maps proposal boxes to predicted ground-truth
    boxes using bounding-box regression deltas. See bbox_transform_inv for a
    description of the weights argument.
Forward transform that maps proposal boxes to predicted ground-truth
    boxes using bounding-box regression deltas. See bbox_transform_inv for a
    description of the weights argument.
Forward transform that maps proposal boxes to predicted ground - truth boxes using bounding - box regression deltas . See bbox_transform_inv for a description of the weights argument .
def bbox_transform(boxes, deltas, weights=(1.0, 1.0, 1.0, 1.0)):
    """Forward transform that maps proposal boxes to predicted ground-truth
    boxes using bounding-box regression deltas. See bbox_transform_inv for a
    description of the weights argument.
    """
    if boxes.shape[0] == 0:
        return np.zeros((0, deltas.shape[1]), dtype=deltas.dtype)

    boxes = boxes.astype(deltas.dtype, copy=False)

    widths = boxes[:, 2] - boxes[:, 0] + 1.0
    heights = boxes[:, 3] - boxes[:, 1] + 1.0
    ctr_x = boxes[:, 0] + 0.5 * widths
    ctr_y = boxes[:, 1] + 0.5 * heights

    wx, wy, ww, wh = weights
    dx = deltas[:, 0::4] / wx
    dy = deltas[:, 1::4] / wy
    dw = deltas[:, 2::4] / ww
    dh = deltas[:, 3::4] / wh

    # Prevent sending too large values into np.exp()
    dw = np.minimum(dw, np.log(1000. / 16.))
    dh = np.minimum(dh, np.log(1000. / 16.))

    pred_ctr_x = dx * widths[:, np.newaxis] + ctr_x[:, np.newaxis]
    pred_ctr_y = dy * heights[:, np.newaxis] + ctr_y[:, np.newaxis]
    pred_w = np.exp(dw) * widths[:, np.newaxis]
    pred_h = np.exp(dh) * heights[:, np.newaxis]

    pred_boxes = np.zeros(deltas.shape, dtype=deltas.dtype)
    # x1
    pred_boxes[:, 0::4] = pred_ctr_x - 0.5 * pred_w
    # y1
    pred_boxes[:, 1::4] = pred_ctr_y - 0.5 * pred_h
    # x2 (note: "- 1" is correct; don't be fooled by the asymmetry)
    pred_boxes[:, 2::4] = pred_ctr_x + 0.5 * pred_w - 1
    # y2 (note: "- 1" is correct; don't be fooled by the asymmetry)
    pred_boxes[:, 3::4] = pred_ctr_y + 0.5 * pred_h - 1

    return pred_boxes
def bbox_transform ( boxes , deltas , weights = ( 1.0 , 1.0 , 1.0 , 1.0 ) ) : if boxes . shape [ 0 ] == 0 : return np . zeros ( ( 0 , deltas . shape [ 1 ] ) , dtype = deltas . dtype ) boxes = boxes . astype ( deltas . dtype , copy = False ) widths = boxes [ : , 2 ] - boxes [ : , 0 ] + 1.0 heights = boxes [ : , 3 ] - boxes [ : , 1 ] + 1.0 ctr_x = boxes [ : , 0 ] + 0.5 * widths ctr_y = boxes [ : , 1 ] + 0.5 * heights wx , wy , ww , wh = weights dx = deltas [ : , 0 : : 4 ] / wx dy = deltas [ : , 1 : : 4 ] / wy dw = deltas [ : , 2 : : 4 ] / ww dh = deltas [ : , 3 : : 4 ] / wh # Prevent sending too large values into np.exp() dw = np . minimum ( dw , np . log ( 1000. / 16. ) ) dh = np . minimum ( dh , np . log ( 1000. / 16. ) ) pred_ctr_x = dx * widths [ : , np . newaxis ] + ctr_x [ : , np . newaxis ] pred_ctr_y = dy * heights [ : , np . newaxis ] + ctr_y [ : , np . newaxis ] pred_w = np . exp ( dw ) * widths [ : , np . newaxis ] pred_h = np . exp ( dh ) * heights [ : , np . newaxis ] pred_boxes = np . zeros ( deltas . shape , dtype = deltas . dtype ) # x1 pred_boxes [ : , 0 : : 4 ] = pred_ctr_x - 0.5 * pred_w # y1 pred_boxes [ : , 1 : : 4 ] = pred_ctr_y - 0.5 * pred_h # x2 (note: "- 1" is correct; don't be fooled by the asymmetry) pred_boxes [ : , 2 : : 4 ] = pred_ctr_x + 0.5 * pred_w - 1 # y2 (note: "- 1" is correct; don't be fooled by the asymmetry) pred_boxes [ : , 3 : : 4 ] = pred_ctr_y + 0.5 * pred_h - 1 return pred_boxes