Spaces:
Running
on
Zero
Running
on
Zero
| import gradio as gr | |
| from PIL import Image | |
| import src.depth_pro | |
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| # Load model and preprocessing transform | |
| model, transform = depth_pro.create_model_and_transforms() | |
| model.eval() | |
| def predict_depth(input_image): | |
| # Preprocess the image | |
| result = depth_pro.load_rgb(input_image.name) | |
| image = result[0] | |
| f_px = result[-1] # Assuming f_px is the last item in the returned tuple | |
| image = transform(image) | |
| # Run inference | |
| prediction = model.infer(image, f_px=f_px) | |
| depth = prediction["depth"] # Depth in [m] | |
| focallength_px = prediction["focallength_px"] # Focal length in pixels | |
| # Normalize depth for visualization | |
| depth_normalized = (depth - np.min(depth)) / (np.max(depth) - np.min(depth)) | |
| # Create a color map | |
| plt.figure(figsize=(10, 10)) | |
| plt.imshow(depth_normalized, cmap='viridis') | |
| plt.colorbar(label='Depth') | |
| plt.title('Predicted Depth Map') | |
| plt.axis('off') | |
| # Save the plot to a file | |
| output_path = "depth_map.png" | |
| plt.savefig(output_path) | |
| plt.close() | |
| return output_path, f"Focal length: {focallength_px:.2f} pixels" | |
| # Create Gradio interface | |
| iface = gr.Interface( | |
| fn=predict_depth, | |
| inputs=gr.Image(type="filepath"), | |
| outputs=[gr.Image(type="filepath", label="Depth Map"), gr.Textbox(label="Focal Length")], | |
| title="Depth Prediction Demo", | |
| description="Upload an image to predict its depth map and focal length." | |
| ) | |
| # Launch the interface | |
| iface.launch() |