import pickle as pkl import numpy as np import os from .dataset import Dataset class HumanAct12Poses(Dataset): dataname = "humanact12" def __init__(self, datapath="dataset/HumanAct12Poses", split="train", **kargs): self.datapath = datapath super().__init__(**kargs) pkldatafilepath = os.path.join(datapath, "humanact12poses.pkl") data = pkl.load(open(pkldatafilepath, "rb")) self._pose = [x for x in data["poses"]] self._num_frames_in_video = [p.shape[0] for p in self._pose] self._joints = [x for x in data["joints3D"]] self._actions = [x for x in data["y"]] total_num_actions = 12 self.num_actions = total_num_actions self._train = list(range(len(self._pose))) keep_actions = np.arange(0, total_num_actions) self._action_to_label = {x: i for i, x in enumerate(keep_actions)} self._label_to_action = {i: x for i, x in enumerate(keep_actions)} self._action_classes = humanact12_coarse_action_enumerator def _load_joints3D(self, ind, frame_ix): return self._joints[ind][frame_ix] def _load_rotvec(self, ind, frame_ix): pose = self._pose[ind][frame_ix].reshape(-1, 24, 3) return pose humanact12_coarse_action_enumerator = { 0: "warm_up", 1: "walk", 2: "run", 3: "jump", 4: "drink", 5: "lift_dumbbell", 6: "sit", 7: "eat", 8: "turn steering wheel", 9: "phone", 10: "boxing", 11: "throw", }