def estimateMidas(img, msize): transform = Compose([ Resize( msize, msize, resize_target=None, keep_aspect_ratio=True, ensure_multiple_of=32, resize_method="upper_bound", image_interpolation_method=cv2.INTER_CUBIC, ), NormalizeImage(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), PrepareForNet(), ]) img_input = transform({"image": img})["image"] # compute with torch.no_grad(): sample = torch.from_numpy(img_input).to(device).unsqueeze(0) prediction = midasmodel.forward(sample) torch.cuda.empty_cache() prediction = prediction.squeeze().cpu().numpy() prediction = cv2.resize(prediction, (img.shape[1], img.shape[0]), interpolation=cv2.INTER_CUBIC) depth_min = prediction.min() depth_max = prediction.max() if depth_max - depth_min > numpy.finfo("float").eps: prediction = (prediction - depth_min) / (depth_max - depth_min) else: prediction = 0 return prediction
def estimatemidas(img, msize): # MiDas -v2 forward pass script adapted from https://github.com/intel-isl/MiDaS/tree/v2 transform = Compose( [ Resize( msize, msize, resize_target=None, keep_aspect_ratio=True, ensure_multiple_of=32, resize_method="upper_bound", image_interpolation_method=cv2.INTER_CUBIC, ), NormalizeImage(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), PrepareForNet(), ] ) img_input = transform({"image": img})["image"] # Forward pass with torch.no_grad(): sample = torch.from_numpy(img_input).to(device).unsqueeze(0) prediction = midasmodel.forward(sample) prediction = prediction.squeeze().cpu().numpy() prediction = cv2.resize(prediction, (img.shape[1], img.shape[0]), interpolation=cv2.INTER_CUBIC) # Normalization depth_min = prediction.min() depth_max = prediction.max() if depth_max - depth_min > np.finfo("float").eps: prediction = (prediction - depth_min) / (depth_max - depth_min) else: prediction = 0 return prediction