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 (`torch.FloatTensor`):
            location predictions for loc layers, Shape: [num_priors,4].
        priors (`torch.FloatTensor`):
            Prior boxes in center-offset form. Shape: [num_priors,4].
        variances (`list[float]`):
            Variances of priorboxes.
    Return:
        (`torch.FloatTensor`)
            decoded bounding box predictions.
    """

    boxes = torch.cat((
        priors[:, :2] + loc[:, :2] * variances[0] * priors[:, 2:],
        priors[:, 2:] * torch.exp(loc[:, 2:] * variances[1])), 1)
    boxes[:, :2] -= boxes[:, 2:] / 2
    boxes[:, 2:] += boxes[:, :2]
    return boxes
Decode locations from predictions using priors to undo
the encoding we did for offset regression at train time.

Args:
loc (`torch.FloatTensor`):
location predictions for loc layers, Shape: [num_priors,4].
priors (`torch.FloatTensor`):
Prior boxes in center-offset form. Shape: [num_priors,4].
variances (`list[float]`):
Variances of priorboxes.
Return:
(`torch.FloatTensor`)
decoded bounding box predictions.
towhee/models/retina_face/utils.py