def METHOD_NAME(self,
             score_map_ctr,
             size_map,
             offset_map,
             return_score=False):
    max_score, idx = torch.max(
        score_map_ctr.flatten(1), dim=1, keepdim=True)
    idx_y = idx // self.feat_sz
    idx_x = idx % self.feat_sz
    idx = idx.unsqueeze(1).expand(idx.shape[0], 2, 1)
    size = size_map.flatten(2).gather(dim=2, index=idx)
    offset = offset_map.flatten(2).gather(dim=2, index=idx).squeeze(-1)
    # cx, cy, w, h
    bbox = torch.cat(
        [(idx_x.to(torch.float) + offset[:, :1]) / self.feat_sz,
         (idx_y.to(torch.float) + offset[:, 1:]) / self.feat_sz,
         size.squeeze(-1)],
        dim=1)
    if return_score:
        return bbox, max_score
    return bbox