| import gradio as gr |
| import numpy as np |
| import torch |
| from diffusers import DiffusionPipeline |
| from PIL import Image |
|
|
| multi_view_diffusion_pipeline = DiffusionPipeline.from_pretrained( |
| "dylanebert/multi-view-diffusion", |
| custom_pipeline="dylanebert/multi-view-diffusion", |
| torch_dtype=torch.float16, |
| trust_remote_code=True, |
| ).to("cuda") |
|
|
|
|
| def run(image): |
| image = np.array(image, dtype=np.float32) / 255.0 |
| images = multi_view_diffusion_pipeline( |
| "", image, guidance_scale=5, num_inference_steps=30, elevation=0 |
| ) |
|
|
| images = [Image.fromarray((img * 255).astype("uint8")) for img in images] |
|
|
| width, height = images[0].size |
| grid_img = Image.new("RGB", (2 * width, 2 * height)) |
|
|
| grid_img.paste(images[0], (0, 0)) |
| grid_img.paste(images[1], (width, 0)) |
| grid_img.paste(images[2], (0, height)) |
| grid_img.paste(images[3], (width, height)) |
|
|
| return grid_img |
|
|
|
|
| demo = gr.Interface(fn=run, inputs="image", outputs="image") |
| demo.launch() |