weigq/3d_pose_baseline_pytorch

Questions on visualizing and data pre-processing.

Opened this issue · 1 comments

Hi!
I'm confused when visualizing the poses.
For example, I get a numpy.ndarray from test_2d.pth.tar, which has the shape (32,) and represent a 2d pose.
I guess it arrays as x1,y1,x2,y2, ..., so I add 0,0 at the front of pose, and try to connect them following the sequence of the original version , but it dosen't look like a human. The same result on another arrayx1,x2,...,y1,y2, ..., and 3d pose as well.
I want to know whether I misunderstanding some thing in the process above.
And what's the shape of normalized bbox from original picture? How to change the coordinates from pixel to the form we see now in the files?
Thanks!!!

Hi @gaoyh18
Firstly, the data from all the files have been previously normalized by subtracting the mean and dividing by the standard deviation. If you want to visualize the skeleton first, you have to unnormalize the data you can do it with

def unNormalizeData(normalized_data, data_mean, data_std, dimensions_to_use):

Secondly, I did not understand the process of adding 0,0 at the front of the pose. As you reference, the data has 32 joints, but only 17 that move; so you only need to focus on those to create your skeleton. For example x0,y0 corresponds to the hip and x15,y15 corresponds to the head...
Finally, you can plot the joints in 2D. In case that you want to visualize with lines you need to create a "list of bones", a list which contains all the pairs of joints which build a line of the skeleton. You can use the original code to understand how it works:
https://github.com/una-dinosauria/3d-pose-baseline/blob/666080d86a96666d499300719053cc8af7ef51c8/src/viz.py#L68