| | |
| | | pose_dataset = datasets.Pose_300W_LP_random_ds(args.data_dir, args.filename_list, transformations) |
| | | elif args.dataset == 'AFLW2000': |
| | | pose_dataset = datasets.AFLW2000(args.data_dir, args.filename_list, transformations) |
| | | elif args.dataset == 'AFLW2000_ds': |
| | | pose_dataset = datasets.AFLW2000_ds(args.data_dir, args.filename_list, transformations) |
| | | elif args.dataset == 'BIWI': |
| | | pose_dataset = datasets.BIWI(args.data_dir, args.filename_list, transformations) |
| | | elif args.dataset == 'AFLW': |
| | |
| | | model.eval() # Change model to 'eval' mode (BN uses moving mean/var). |
| | | total = 0 |
| | | |
| | | idx_tensor = [idx for idx in xrange(66)] |
| | | idx_tensor = torch.FloatTensor(idx_tensor).cuda(gpu) |
| | | |
| | | yaw_error = .0 |
| | | pitch_error = .0 |
| | | roll_error = .0 |
| | |
| | | label_pitch = cont_labels[:,1].float() |
| | | label_roll = cont_labels[:,2].float() |
| | | |
| | | yaw, pitch, roll, angles = model(images) |
| | | yaw, pitch, roll = model(images) |
| | | |
| | | # Binned predictions |
| | | _, yaw_bpred = torch.max(yaw.data, 1) |
| | |
| | | _, roll_bpred = torch.max(roll.data, 1) |
| | | |
| | | # Continuous predictions |
| | | yaw_predicted = angles[:,0].data.cpu() |
| | | pitch_predicted = angles[:,1].data.cpu() |
| | | roll_predicted = angles[:,2].data.cpu() |
| | | yaw_predicted = utils.softmax_temperature(yaw.data, 1) |
| | | pitch_predicted = utils.softmax_temperature(pitch.data, 1) |
| | | roll_predicted = utils.softmax_temperature(roll.data, 1) |
| | | |
| | | yaw_predicted = torch.sum(yaw_predicted * idx_tensor, 1).cpu() * 3 - 99 |
| | | pitch_predicted = torch.sum(pitch_predicted * idx_tensor, 1).cpu() * 3 - 99 |
| | | roll_predicted = torch.sum(roll_predicted * idx_tensor, 1).cpu() * 3 - 99 |
| | | |
| | | # Mean absolute error |
| | | yaw_error += torch.sum(torch.abs(yaw_predicted - label_yaw)) |