rimjhimittal commited on
Commit
29ea97d
·
verified ·
1 Parent(s): d72501f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -0
app.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from diffusers import AutoPipelineForInpainting, AutoencoderKL
3
+ from diffusers.utils import load_image
4
+ import torch
5
+ from PIL import Image
6
+
7
+ from SegBody import segment_body
8
+
9
+
10
+ # Load models
11
+ vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
12
+ pipeline = AutoPipelineForInpainting.from_pretrained(
13
+ "diffusers/stable-diffusion-xl-1.0-inpainting-0.1",
14
+ vae=vae,
15
+ torch_dtype=torch.float16,
16
+ variant="fp16",
17
+ use_safetensors=True
18
+ ).to("cuda")
19
+ pipeline.load_ip_adapter("h94/IP-Adapter", subfolder="sdxl_models", weight_name="ip-adapter_sdxl.bin", low_cpu_mem_usage=True)
20
+
21
+ # Function to process images
22
+ def virtual_try_on(img, clothing, prompt, negative_prompt, ip_scale=1.0, strength=0.99, guidance_scale=7.5, steps=100):
23
+ _, mask_img = segment_body(img, face=False)
24
+ pipeline.set_ip_adapter_scale(ip_scale)
25
+ images = pipeline(
26
+ prompt=prompt,
27
+ negative_prompt=negative_prompt,
28
+ image=img,
29
+ mask_image=mask_img,
30
+ ip_adapter_image=clothing,
31
+ strength=strength,
32
+ guidance_scale=guidance_scale,
33
+ num_inference_steps=steps,
34
+ ).images
35
+ return images[0]
36
+
37
+ def process_images(image, ip_image):
38
+ image = image.convert("RGB").resize((512, 512))
39
+ ip_image = ip_image.convert("RGB").resize((512, 512))
40
+
41
+ seg_image, mask_image = segment_body(image, face=False)
42
+ mask_image.resize((512, 512))
43
+
44
+
45
+ return virtual_try_on(img=image,
46
+ clothing=ip_image,
47
+ prompt="photorealistic, perfect body, beautiful skin, realistic skin, natural skin",
48
+ negative_prompt="ugly, bad quality, bad anatomy, deformed body, deformed hands, deformed feet, deformed face, deformed clothing, deformed skin, bad skin, leggings, tights, stockings")
49
+
50
+ # Create the Gradio interface
51
+ interface = gr.Interface(
52
+ fn=process_images,
53
+ inputs=[gr.Image(type="pil"), gr.Image(type="pil")],
54
+ outputs=gr.Image(type="pil"),
55
+ title="Image Inpainting Demo",
56
+ description="Upload two images for inpainting using Stable Diffusion XL."
57
+ )
58
+
59
+ # Launch the Gradio interface
60
+ interface.launch()