import torch from diffusers import StableDiffusionPipeline import gradio as gr from PIL import Image # Load the model and pipeline model_id = "ares1123/virtual-dress-try-on" pipeline = StableDiffusionPipeline.from_pretrained(model_id) pipeline.to("cuda" if torch.cuda.is_available() else "cpu") def virtual_try_on(image, clothing_image): # Convert images to proper format and get dimensions width, height = image.size # Ensure dimensions are multiples of 8 width = (width // 8) * 8 height = (height // 8) * 8 # Resize images to fit the model's expected input image = image.resize((width, height)) clothing_image = clothing_image.resize((width, height)) # Define a prompt describing what you want the model to do prompt = "A person wearing new clothes" # Process the images using the model result = pipeline(prompt=prompt, image=image, conditioning_image=clothing_image) try_on_image = result.images[0] return try_on_image # Set up a simple Gradio interface for testing interface = gr.Interface( fn=virtual_try_on, inputs=[gr.Image(type="pil", label="User Image"), gr.Image(type="pil", label="Clothing Image")], outputs=gr.Image(type="pil"), title="Virtual Dress Try-On", description="Upload an image of yourself and a clothing image to try it on virtually!" ) # Launch the interface interface.launch(share=True)