Peform validation using the KITTI-2015 (train) split
(model)
| 111 | |
| 112 | @torch.no_grad() |
| 113 | def validate_kitti(model): |
| 114 | """ Peform validation using the KITTI-2015 (train) split """ |
| 115 | model.eval() |
| 116 | val_dataset = datasets.KITTI(split='training') |
| 117 | |
| 118 | out_list, epe_list = [], [] |
| 119 | for val_id in range(len(val_dataset)): |
| 120 | image1, image2, flow_gt, valid_gt = val_dataset[val_id] |
| 121 | image1 = image1[None].cuda() |
| 122 | image2 = image2[None].cuda() |
| 123 | |
| 124 | padder = InputPadder(image1.shape) |
| 125 | image1, image2 = padder.pad(image1, image2) |
| 126 | |
| 127 | flow_pre = model(image1, image2) |
| 128 | |
| 129 | flow_pre = padder.unpad(flow_pre[0]).cpu()[0] |
| 130 | |
| 131 | epe = torch.sum((flow_pre - flow_gt)**2, dim=0).sqrt() |
| 132 | mag = torch.sum(flow_gt**2, dim=0).sqrt() |
| 133 | |
| 134 | epe = epe.view(-1) |
| 135 | mag = mag.view(-1) |
| 136 | val = valid_gt.view(-1) >= 0.5 |
| 137 | |
| 138 | out = ((epe > 3.0) & ((epe/mag) > 0.05)).float() |
| 139 | epe_list.append(epe[val].mean().item()) |
| 140 | out_list.append(out[val].cpu().numpy()) |
| 141 | |
| 142 | epe_list = np.array(epe_list) |
| 143 | out_list = np.concatenate(out_list) |
| 144 | |
| 145 | epe = np.mean(epe_list) |
| 146 | f1 = 100 * np.mean(out_list) |
| 147 | |
| 148 | print("Validation KITTI: %f, %f" % (epe, f1)) |
| 149 | return {'kitti-epe': epe, 'kitti-f1': f1} |
| 150 | |
| 151 | |
| 152 | if __name__ == '__main__': |
no test coverage detected