在机器学习中,如何处理序列生成中的人体姿势坐标



为了简单起见,我有一个包含人体姿势坐标的数据集,假设这是样本数据

-----------------------------------
| f1    | f2     | f3    | f4     |
-----------------------------------
| [1 2] | [2 3 ] | [1 2] | [2 3 ] |
| [1 2] | [2 3 ] | [1 2] | [2 3 ] |
| [1 2] | [2 3 ] | [1 2] | [2 3 ] |

为了生成序列,处理这些笛卡尔坐标的最佳方法是什么,这样我就可以得到作为笛卡尔坐标的最终输出

我尝试过的方法-

L2规范化

我对数据进行L2归一化,并将其转换为矢量[f1(x) f1(y) f2(x) ...]

通过RNN输入后,我得到了输出,但无法撤消归一化,因此我无法获得笛卡尔坐标

功能工程

我执行特征工程,对于一个集合(x,y(,得到r和θ,其中r是x和y的平方根,θ=arctan(y/x(。同样,在执行序列生成后,我无法获得笛卡尔坐标

特征工程是正确的方法,我只是没有意识到我可以将其转换回笛卡尔坐标。

对于其他人来说,这就是您可以转换值的方法笛卡尔->极坐标->笛卡尔

设坐标为:

['311.67422784', '966.54288455']

我们首先定义我们的转换函数

import numpy as np
def transformPolar(coord):
x = coord[0]
y = coord[1]
r = (float(x)**2 + float(y)**2)**0.5
theta = np.arctan(float(y)/float(x))
return r, theta
def transformCartesian(r,theta):
x = r*np.cos(theta)
y = r*np.sin(theta)
return x,y
r, t = transformPolar(e)
print(r, t)
x, y = transformCartesian(r, t)
print(x, y)
1015.5520528135892 1.2588608505806973
311.67422784 966.54288455

最新更新