(joint_img, joint_cam, joint_valid, do_flip, img_shape, flip_pairs, img2bb_trans, rot,
src_joints_name, target_joints_name)
| 186 | |
| 187 | |
| 188 | def process_db_coord(joint_img, joint_cam, joint_valid, do_flip, img_shape, flip_pairs, img2bb_trans, rot, |
| 189 | src_joints_name, target_joints_name): |
| 190 | joint_img_original = joint_img.copy() |
| 191 | joint_img, joint_cam, joint_valid = joint_img.copy(), joint_cam.copy(), joint_valid.copy() |
| 192 | |
| 193 | # flip augmentation |
| 194 | if do_flip: |
| 195 | joint_cam[:, 0] = -joint_cam[:, 0] |
| 196 | joint_img[:, 0] = img_shape[1] - 1 - joint_img[:, 0] |
| 197 | for pair in flip_pairs: |
| 198 | joint_img[pair[0], :], joint_img[pair[1], :] = joint_img[pair[1], :].copy(), joint_img[pair[0], :].copy() |
| 199 | joint_cam[pair[0], :], joint_cam[pair[1], :] = joint_cam[pair[1], :].copy(), joint_cam[pair[0], :].copy() |
| 200 | joint_valid[pair[0], :], joint_valid[pair[1], :] = joint_valid[pair[1], :].copy(), joint_valid[pair[0], |
| 201 | :].copy() |
| 202 | |
| 203 | # 3D data rotation augmentation |
| 204 | rot_aug_mat = np.array([[np.cos(np.deg2rad(-rot)), -np.sin(np.deg2rad(-rot)), 0], |
| 205 | [np.sin(np.deg2rad(-rot)), np.cos(np.deg2rad(-rot)), 0], |
| 206 | [0, 0, 1]], dtype=np.float32) |
| 207 | joint_cam = np.dot(rot_aug_mat, joint_cam.transpose(1, 0)).transpose(1, 0) |
| 208 | |
| 209 | # affine transformation |
| 210 | joint_img_xy1 = np.concatenate((joint_img[:, :2], np.ones_like(joint_img[:, :1])), 1) |
| 211 | joint_img[:, :2] = np.dot(img2bb_trans, joint_img_xy1.transpose(1, 0)).transpose(1, 0) |
| 212 | joint_img[:, 0] = joint_img[:, 0] / cfg.input_img_shape[1] * cfg.output_hm_shape[2] |
| 213 | joint_img[:, 1] = joint_img[:, 1] / cfg.input_img_shape[0] * cfg.output_hm_shape[1] |
| 214 | |
| 215 | # check truncation |
| 216 | joint_trunc = joint_valid * ((joint_img_original[:, 0] > 0) * (joint_img[:, 0] >= 0) * (joint_img[:, 0] < cfg.output_hm_shape[2]) * \ |
| 217 | (joint_img_original[:, 1] > 0) *(joint_img[:, 1] >= 0) * (joint_img[:, 1] < cfg.output_hm_shape[1]) * \ |
| 218 | (joint_img_original[:, 2] > 0) *(joint_img[:, 2] >= 0) * (joint_img[:, 2] < cfg.output_hm_shape[0])).reshape(-1, |
| 219 | 1).astype( |
| 220 | np.float32) |
| 221 | |
| 222 | # transform joints to target db joints |
| 223 | joint_img = transform_joint_to_other_db(joint_img, src_joints_name, target_joints_name) |
| 224 | joint_cam_wo_ra = transform_joint_to_other_db(joint_cam, src_joints_name, target_joints_name) |
| 225 | joint_valid = transform_joint_to_other_db(joint_valid, src_joints_name, target_joints_name) |
| 226 | joint_trunc = transform_joint_to_other_db(joint_trunc, src_joints_name, target_joints_name) |
| 227 | |
| 228 | # root-alignment, for joint_cam input wo ra |
| 229 | joint_cam_ra = joint_cam_wo_ra.copy() |
| 230 | joint_cam_ra = joint_cam_ra - joint_cam_ra[smpl_x.root_joint_idx, None, :] # root-relative |
| 231 | joint_cam_ra[smpl_x.joint_part['lhand'], :] = joint_cam_ra[smpl_x.joint_part['lhand'], :] - joint_cam_ra[ |
| 232 | smpl_x.lwrist_idx, None, |
| 233 | :] # left hand root-relative |
| 234 | joint_cam_ra[smpl_x.joint_part['rhand'], :] = joint_cam_ra[smpl_x.joint_part['rhand'], :] - joint_cam_ra[ |
| 235 | smpl_x.rwrist_idx, None, |
| 236 | :] # right hand root-relative |
| 237 | joint_cam_ra[smpl_x.joint_part['face'], :] = joint_cam_ra[smpl_x.joint_part['face'], :] - joint_cam_ra[smpl_x.neck_idx, |
| 238 | None, |
| 239 | :] # face root-relative |
| 240 | |
| 241 | return joint_img, joint_cam_wo_ra, joint_cam_ra, joint_valid, joint_trunc |
| 242 | |
| 243 | |
| 244 | def process_human_model_output(human_model_param, cam_param, do_flip, img_shape, img2bb_trans, rot, human_model_type, joint_img=None): |
no test coverage detected