Update app.py
Browse files
app.py
CHANGED
@@ -1,34 +1,42 @@
|
|
1 |
import gradio as gr
|
2 |
-
import modin.pandas as pd
|
3 |
import torch
|
4 |
-
import
|
5 |
from PIL import Image
|
6 |
from diffusers import ShapEImg2ImgPipeline
|
7 |
-
from diffusers.utils import load_image
|
8 |
-
import math
|
9 |
|
|
|
10 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
11 |
-
|
|
|
|
|
12 |
pipe = pipe.to(device)
|
13 |
|
14 |
-
|
15 |
-
|
16 |
-
img =
|
|
|
17 |
return img
|
18 |
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
|
|
23 |
source_image = resize(512, source_img)
|
24 |
source_image.save('source.png')
|
25 |
-
|
26 |
-
return
|
27 |
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import gradio as gr
|
|
|
2 |
import torch
|
3 |
+
import math
|
4 |
from PIL import Image
|
5 |
from diffusers import ShapEImg2ImgPipeline
|
|
|
|
|
6 |
|
7 |
+
# Set device
|
8 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
9 |
+
|
10 |
+
# Load the pipeline
|
11 |
+
pipe = ShapEImg2ImgPipeline.from_pretrained("openai/shap-e-img2img", torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32)
|
12 |
pipe = pipe.to(device)
|
13 |
|
14 |
+
# Resize function
|
15 |
+
def resize(value, img_path):
|
16 |
+
img = Image.open(img_path)
|
17 |
+
img = img.resize((value, value))
|
18 |
return img
|
19 |
|
20 |
+
# Inference function
|
21 |
+
def infer(source_img, prompt, steps, seed, strength):
|
22 |
+
generator = torch.Generator(device).manual_seed(seed)
|
23 |
+
if int(steps * strength) < 1:
|
24 |
+
steps = math.ceil(1 / max(0.10, strength))
|
25 |
source_image = resize(512, source_img)
|
26 |
source_image.save('source.png')
|
27 |
+
result = pipe(prompt=prompt, image=source_image, strength=strength, guidance_scale=7.5, num_inference_steps=steps, generator=generator)
|
28 |
+
return result.images[0]
|
29 |
|
30 |
+
# Gradio interface
|
31 |
+
gr.Interface(
|
32 |
+
fn=infer,
|
33 |
+
inputs=[
|
34 |
+
gr.Image(sources=["upload", "webcam", "clipboard"], type="filepath", label="Raw Image"),
|
35 |
+
gr.Textbox(label='Creative Touch (prompt)'),
|
36 |
+
gr.Slider(1, 50, value=25, step=1, label='Number of Iterations'),
|
37 |
+
gr.Slider(minimum=0, maximum=987654321987654321, step=1, randomize=True, label='Seed'),
|
38 |
+
gr.Slider(minimum=0.1, maximum=1, step=0.05, value=0.5, label='Strength')
|
39 |
+
],
|
40 |
+
outputs='image',
|
41 |
+
title="Creative Touch"
|
42 |
+
).queue(max_size=10).launch()
|