Spaces:
Running
Running
import numpy as np | |
def decode(loc, priors, variances): | |
"""Decode locations from predictions using priors to undo | |
the encoding we did for offset regression at train time. | |
Args: | |
loc (tensor): location predictions for loc layers, | |
Shape: [num_priors,4] | |
priors (tensor): Prior boxes in center-offset form. | |
Shape: [num_priors,4]. | |
variances: (list[float]) Variances of priorboxes | |
Return: | |
decoded bounding box predictions | |
""" | |
boxes = None | |
boxes = np.concatenate( | |
( | |
priors[:, :2] + loc[:, :2] * variances[0] * priors[:, 2:], | |
priors[:, 2:] * np.exp(loc[:, 2:] * variances[1]), | |
), | |
axis=1, | |
) | |
boxes[:, :2] -= boxes[:, 2:] / 2 | |
boxes[:, 2:] += boxes[:, :2] | |
return boxes | |
def decode_landm(pre, priors, variances): | |
"""Decode landm from predictions using priors to undo | |
the encoding we did for offset regression at train time. | |
Args: | |
pre (tensor): landm predictions for loc layers, | |
Shape: [num_priors,10] | |
priors (tensor): Prior boxes in center-offset form. | |
Shape: [num_priors,4]. | |
variances: (list[float]) Variances of priorboxes | |
Return: | |
decoded landm predictions | |
""" | |
landms = None | |
landms = np.concatenate( | |
( | |
priors[:, :2] + pre[:, :2] * variances[0] * priors[:, 2:], | |
priors[:, :2] + pre[:, 2:4] * variances[0] * priors[:, 2:], | |
priors[:, :2] + pre[:, 4:6] * variances[0] * priors[:, 2:], | |
priors[:, :2] + pre[:, 6:8] * variances[0] * priors[:, 2:], | |
priors[:, :2] + pre[:, 8:10] * variances[0] * priors[:, 2:], | |
), | |
axis=1, | |
) | |
return landms | |