fyp-deploy / src /utils /posemap.py
Mairaaa's picture
Upload pipeline and scripts
134a749
raw
history blame
1.24 kB
import torch
import numpy as np
def kpoint_to_heatmap(kpoint, shape, sigma):
"""Converts a 2D keypoint to a gaussian heatmap
Parameters
----------
kpoint: np.array
2D coordinates of keypoint [x, y].
shape: tuple
Heatmap dimension (HxW).
sigma: float
Variance value of the gaussian.
Returns
-------
heatmap: np.array
A gaussian heatmap HxW.
"""
map_h = shape[0]
map_w = shape[1]
if np.any(kpoint > 0):
x, y = kpoint
# x = x * map_w / 384.0
# y = y * map_h / 512.0
xy_grid = np.mgrid[:map_w, :map_h].transpose(2, 1, 0)
heatmap = np.exp(-np.sum((xy_grid - (x, y)) ** 2, axis=-1) / sigma ** 2)
heatmap /= (heatmap.max() + np.finfo('float32').eps)
else:
heatmap = np.zeros((map_h, map_w))
return torch.Tensor(heatmap)
def get_coco_body25_mapping():
#left numbers are coco format while right numbers are body25 format
return {
0:0,
1:1,
2:2,
3:3,
4:4,
5:5,
6:6,
7:7,
8:9,
9:10,
10:11,
11:12,
12:13,
13:14,
14:15,
15:16,
16:17,
17:18
}