MCPcopy Create free account
hub / github.com/Vegetebird/GraphMLP / fetch

Method fetch

common/load_data_hm36.py:114–174  ·  view source on GitHub ↗
(self, dataset, subjects, subset=1, parse_3d_poses=True)

Source from the content-addressed store, hash-verified

112 return keypoints, keypoints_GT
113
114 def fetch(self, dataset, subjects, subset=1, parse_3d_poses=True):
115 out_poses_3d = {}
116 out_poses_2d = {}
117 out_poses_2d_GT = {}
118 out_camera_params = {}
119
120 for subject in subjects:
121 for action in self.keypoints[subject].keys():
122 if self.action_filter is not None:
123 found = False
124 for a in self.action_filter:
125 if action.startswith(a):
126 found = True
127 break
128 if not found:
129 continue
130
131 poses_2d = self.keypoints[subject][action]
132 poses_2d_GT = self.keypoints_GT[subject][action]
133
134 for i in range(len(poses_2d)):
135 out_poses_2d[(subject, action, i)] = poses_2d[i]
136 out_poses_2d_GT[(subject, action, i)] = poses_2d_GT[i]
137
138 if subject in dataset.cameras():
139 cams = dataset.cameras()[subject]
140 assert len(cams) == len(poses_2d), 'Camera count mismatch'
141 for i, cam in enumerate(cams):
142 if 'intrinsic' in cam:
143 out_camera_params[(subject, action, i)] = cam['intrinsic']
144
145 if parse_3d_poses and 'positions_3d' in dataset[subject][action]:
146 poses_3d = dataset[subject][action]['positions_3d']
147 assert len(poses_3d) == len(poses_2d), 'Camera count mismatch'
148 for i in range(len(poses_3d)):
149 out_poses_3d[(subject, action, i)] = poses_3d[i]
150
151 if len(out_camera_params) == 0:
152 out_camera_params = None
153 if len(out_poses_3d) == 0:
154 out_poses_3d = None
155
156 stride = self.downsample
157 if subset < 1:
158 for key in out_poses_2d.keys():
159 n_frames = int(round(len(out_poses_2d[key]) // stride * subset) * stride)
160 start = deterministic_random(0, len(out_poses_2d[key]) - n_frames + 1, str(len(out_poses_2d[key])))
161 out_poses_2d[key] = out_poses_2d[key][start:start + n_frames:stride]
162 out_poses_2d_GT[key] = out_poses_2d_GT[key][start:start + n_frames:stride]
163
164 if out_poses_3d is not None:
165 out_poses_3d[key] = out_poses_3d[key][start:start + n_frames:stride]
166 elif stride > 1:
167 for key in out_poses_2d.keys():
168 out_poses_2d[key] = out_poses_2d[key][::stride]
169 out_poses_2d_GT[key] = out_poses_2d_GT[key][::stride]
170
171 if out_poses_3d is not None:

Callers 1

__init__Method · 0.95

Calls 2

deterministic_randomFunction · 0.90
camerasMethod · 0.80

Tested by

no test coverage detected