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

Method fetch

common/load_data_3dhp.py:113–166  ·  view source on GitHub ↗
(self, dataset, subjects, subset=1, parse_3d_poses=True)

Source from the content-addressed store, hash-verified

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

Callers 1

__init__Method · 0.95

Calls 1

deterministic_randomFunction · 0.90

Tested by

no test coverage detected