prepare data for ready to train posenet, return dataloaders
(args, images, poses_train, i_split)
| 8 | to8b = lambda x : (255*np.clip(x,0,1)).astype(np.uint8) |
| 9 | |
| 10 | def prepare_data(args, images, poses_train, i_split): |
| 11 | ''' prepare data for ready to train posenet, return dataloaders ''' |
| 12 | #TODO: Convert GPU friendly data generator later: https://stanford.edu/~shervine/blog/pytorch-how-to-generate-data-parallel |
| 13 | #TODO: Probably a better implementation style here: https://github.com/PyTorchLightning/pytorch-lightning |
| 14 | |
| 15 | i_train, i_val, i_test = i_split |
| 16 | |
| 17 | img_train = torch.Tensor(images[i_train]).permute(0, 3, 1, 2) # now shape is [N, CH, H, W] |
| 18 | pose_train = torch.Tensor(poses_train[i_train]) |
| 19 | |
| 20 | trainset = TensorDataset(img_train, pose_train) |
| 21 | train_dl = DataLoader(trainset, batch_size=args.batch_size, shuffle=True) |
| 22 | |
| 23 | img_val = torch.Tensor(images[i_val]).permute(0, 3, 1, 2) # now shape is [N, CH, H, W] |
| 24 | pose_val = torch.Tensor(poses_train[i_val]) |
| 25 | |
| 26 | valset = TensorDataset(img_val, pose_val) |
| 27 | val_dl = DataLoader(valset) |
| 28 | |
| 29 | img_test = torch.Tensor(images[i_test]).permute(0, 3, 1, 2) # now shape is [N, CH, H, W] |
| 30 | pose_test = torch.Tensor(poses_train[i_test]) |
| 31 | |
| 32 | testset = TensorDataset(img_test, pose_test) |
| 33 | test_dl = DataLoader(testset) |
| 34 | |
| 35 | return train_dl, val_dl, test_dl |
| 36 | |
| 37 | def load_dataset(args): |
| 38 | ''' load posenet training data ''' |
no outgoing calls
no test coverage detected