Spaces:
Running
Running
import gradio as gr | |
import torch | |
import diffusers | |
from diffusers import DiffusionPipeline | |
from zero123 import Zero123Pipeline | |
diffusers.Zero123Pipeline = Zero123Pipeline | |
def generate_view(source_img, elevation, azimuth, camera_distance, num_inference_steps): | |
if torch.cuda.is_available(): | |
device = 'cuda:0' | |
else: | |
device = 'cpu' | |
# Prepare pipeline | |
pipeline = DiffusionPipeline.from_pretrained("ashawkey/stable-zero123-diffusers", trust_remote_code=True) | |
pipeline.to(device) | |
# Prepare input data: | |
image = source_img.resize((256, 256)).convert("RGB") | |
# Generate and save images: | |
images = pipeline([image], | |
torch.tensor([elevation], dtype=torch.float16).to(device), | |
torch.tensor([azimuth], dtype=torch.float16).to(device), | |
torch.tensor([camera_distance], dtype=torch.float16).to(device), | |
num_inference_steps=int(num_inference_steps)).images | |
return images[0] | |
iface = gr.Interface(fn=generate_view, inputs=[gr.Image(type="pil", value="images/bottle.png"), | |
gr.Number(label="elevation", value=0.), | |
gr.Number(label="azimuth", value=45.), | |
gr.Number(label="camera_distance", value=1.2), | |
gr.Number(label="num_inference_steps", value=20)], | |
outputs=gr.Image(width=256, height=256)) | |
iface.launch() |