import gradio as gr import torch import requests from PIL import Image import numpy as np from torchvision.utils import make_grid, save_image from diffusers import DiffusionPipeline def load_wonder3d_pipeline(): pipeline = DiffusionPipeline.from_pretrained( 'flamehaze1115/wonder3d-v1.0', custom_pipeline='flamehaze1115/wonder3d-pipeline', torch_dtype=torch.float16 ) pipeline.unet.enable_xformers_memory_efficient_attention() if torch.cuda.is_available(): pipeline.to('cuda:0') return pipeline pipeline = load_wonder3d_pipeline() def generate_3d(image): cond = Image.fromarray(np.array(image)[:, :, :3]) images = pipeline(cond, num_inference_steps=20, output_type='pt', guidance_scale=1.0).images result = make_grid(images, nrow=6, ncol=2, padding=0, value_range=(0, 1)) save_image(result, 'result.png') return 'result.png' iface = gr.Interface( fn=generate_3d, inputs=gr.Image(), outputs=gr.Image(), title="Wonder3D Image to 3D", description="Загрузите изображение, чтобы сгенерировать 3D-модель." ) iface.launch()