| |
| |
| |
| |
| |
| |
|
|
| import numpy as np |
| import copy |
| from common.skeleton import Skeleton |
| from common.mocap_dataset import MocapDataset |
| from common.camera import normalize_screen_coordinates, image_coordinates |
| from common.h36m_dataset import h36m_skeleton |
| |
|
|
| custom_camera_params = { |
| 'id': None, |
| 'res_w': None, |
| 'res_h': None, |
| |
| |
| 'azimuth': 70, |
| 'orientation': [0.1407056450843811, -0.1500701755285263, -0.755240797996521, 0.6223280429840088], |
| 'translation': [1841.1070556640625, 4955.28466796875, 1563.4454345703125], |
| } |
|
|
| class CustomDataset(MocapDataset): |
| def __init__(self, detections_path, remove_static_joints=True): |
| super().__init__(fps=None, skeleton=h36m_skeleton) |
| |
| |
| data = np.load(detections_path, allow_pickle=True) |
| resolutions = data['metadata'].item()['video_metadata'] |
| |
| self._cameras = {} |
| self._data = {} |
| for video_name, res in resolutions.items(): |
| cam = {} |
| cam.update(custom_camera_params) |
| cam['orientation'] = np.array(cam['orientation'], dtype='float32') |
| cam['translation'] = np.array(cam['translation'], dtype='float32') |
| cam['translation'] = cam['translation']/1000 |
| |
| cam['id'] = video_name |
| cam['res_w'] = res['w'] |
| cam['res_h'] = res['h'] |
| |
| self._cameras[video_name] = [cam] |
| |
| self._data[video_name] = { |
| 'custom': { |
| 'cameras': cam |
| } |
| } |
| |
| if remove_static_joints: |
| |
| self.remove_joints([4, 5, 9, 10, 11, 16, 20, 21, 22, 23, 24, 28, 29, 30, 31]) |
| |
| |
| self._skeleton._parents[11] = 8 |
| self._skeleton._parents[14] = 8 |
| |
| def supports_semi_supervised(self): |
| return False |
| |