Как обрабатывать координаты позы человека для генерации последовательности в машинном обучении? - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть набор данных, содержащий координаты позы человека, для простоты, предположим, что это пример данных

-----------------------------------
| 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 для данных и преобразую ее в vector [f1(x) f1(y) f2(x) ...]

После подачи его через RNN я получаю вывод, но нет способа отменить нормализацию и, следовательно, я не могу получить декартовы координаты

Feature Engineering

Я выполняю проектирование объектов и для набора (x, y) получим r и theta, где r - это root квадратов x и y, а theta = arctan (y / x). Опять я. не удалось получить декартовы координаты после выполнения генерации последовательности

1 Ответ

0 голосов
/ 22 февраля 2020

Feature Engineering был правильным методом, я просто не знал, что смогу преобразовать его обратно в декартовы координаты.

Для всех остальных это способ преобразования значений Cartesian-> Polar-> Cartesian *. 1003 *

Пусть координата будет:

['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
...