Spaces:
Running
Running
| from transformers import pipeline | |
| from PIL import Image | |
| import gradio as gr | |
| import numpy as np | |
| # Load the Hugging Face depth estimation pipelines | |
| pipe_base = pipeline(task="depth-estimation", model="LiheYoung/depth-anything-base-hf") | |
| pipe_small = pipeline(task="depth-estimation", model="LiheYoung/depth-anything-small-hf") | |
| pipe_intel = pipeline(task="depth-estimation", model="Intel/dpt-swinv2-tiny-256") | |
| pipe_beit = pipeline(task="depth-estimation", model="Intel/dpt-beit-base-384") | |
| def estimate_depths(image): | |
| # Perform depth estimation with each pipeline | |
| depth_base = pipe_base(image)["depth"] | |
| depth_small = pipe_small(image)["depth"] | |
| depth_intel = pipe_intel(image)["depth"] | |
| depth_beit = pipe_beit(image)["depth"] | |
| # Normalize depths for visualization | |
| depth_base = normalize_depth(depth_base) | |
| depth_small = normalize_depth(depth_small) | |
| depth_intel = normalize_depth(depth_intel) | |
| depth_beit = normalize_depth(depth_beit) | |
| return depth_base, depth_small, depth_intel, depth_beit | |
| def normalize_depth(depth_map): | |
| # Normalize depth map values to range [0, 255] for visualization | |
| normalized_depth = ((depth_map - depth_map.min()) / (depth_map.max() - depth_map.min())) * 255 | |
| return normalized_depth.astype(np.uint8) | |
| # Create a Gradio interface using Blocks | |
| with gr.Blocks() as iface: | |
| gr.Markdown("# Multi-Model Depth Estimation\nUpload an image to get depth estimation maps from multiple models.") | |
| with gr.Row(): | |
| input_image = gr.Image(type="pil", label="Input Image") | |
| with gr.Row(): | |
| with gr.Column(): | |
| output_base = gr.Image(type="numpy", label="LiheYoung/depth-anything-base-hf", interactive=False) | |
| output_small = gr.Image(type="numpy", label="LiheYoung/depth-anything-small-hf", interactive=False) | |
| with gr.Column(): | |
| output_intel = gr.Image(type="numpy", label="Intel/dpt-swinv2-tiny-256", interactive=False) | |
| output_beit = gr.Image(type="numpy", label="Intel/dpt-beit-base-384", interactive=False) | |
| input_image.change(fn=estimate_depths, inputs=input_image, outputs=[output_base, output_small, output_intel, output_beit]) | |
| # Launch the Gradio app | |
| iface.launch() | |