| from preprocessing_utils import GMoF | |
| import torch | |
| num_joints = 25 | |
| joints_to_ign = [1,9,12] | |
| joint_weights = torch.ones(num_joints) | |
| joint_weights[joints_to_ign] = 0 | |
| joint_weights = joint_weights.reshape((-1,1)).cuda() | |
| robustifier = GMoF(rho=100) | |
| def get_loss_weights(): | |
| loss_weight = {'J2D_Loss': lambda cst, it: 1e-2 * cst, | |
| 'Temporal_Loss': lambda cst, it: 6e0 * cst, | |
| } | |
| return loss_weight | |
| def joints_2d_loss(gt_joints_2d=None, joints_2d=None, joint_confidence=None): | |
| joint_diff = robustifier(gt_joints_2d - joints_2d) | |
| joints_2dloss = torch.mean((joint_confidence*joint_weights[:, 0]).unsqueeze(-1) ** 2 * joint_diff) | |
| return joints_2dloss | |
| def pose_temporal_loss(last_pose, param_pose): | |
| temporal_loss = torch.mean(torch.square(last_pose - param_pose)) | |
| return temporal_loss |