Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -13,6 +13,7 @@ import numpy as np
|
|
13 |
import cv2
|
14 |
from pyzxing import BarCodeReader
|
15 |
from PIL import ImageOps
|
|
|
16 |
|
17 |
from diffusers import (
|
18 |
StableDiffusionPipeline,
|
@@ -51,14 +52,17 @@ DIFFUSION_MODELS = {
|
|
51 |
}
|
52 |
|
53 |
def load_models(controlnet_model, diffusion_model):
|
54 |
-
|
|
|
55 |
controlnet = ControlNetModel.from_pretrained(
|
56 |
-
|
57 |
torch_dtype=torch.float16
|
58 |
).to("cuda")
|
59 |
|
|
|
|
|
60 |
pipe = StableDiffusionControlNetImg2ImgPipeline.from_pretrained(
|
61 |
-
|
62 |
controlnet=controlnet,
|
63 |
torch_dtype=torch.float16,
|
64 |
safety_checker=None,
|
@@ -145,7 +149,7 @@ def invert_displayed_image(image):
|
|
145 |
return Image.fromarray(inverted)
|
146 |
return inverted
|
147 |
|
148 |
-
|
149 |
def inference(
|
150 |
qr_code_content: str,
|
151 |
prompt: str,
|
@@ -164,10 +168,13 @@ def inference(
|
|
164 |
invert_init_image: bool = False, # New parameter
|
165 |
controlnet_model: str = "QR Code Monster",
|
166 |
diffusion_model: str = "Stable Diffusion v1.5",
|
|
|
167 |
):
|
168 |
try:
|
169 |
# Load models based on user selection
|
|
|
170 |
pipe = load_models(controlnet_model, diffusion_model)
|
|
|
171 |
|
172 |
if prompt is None or prompt == "":
|
173 |
raise gr.Error("Prompt is required")
|
@@ -524,10 +531,11 @@ with gr.Blocks(theme='Hev832/Applio') as blocks:
|
|
524 |
invert_init_image,
|
525 |
controlnet_model_dropdown,
|
526 |
diffusion_model_dropdown,
|
|
|
527 |
],
|
528 |
outputs=[result_image, used_seed],
|
529 |
concurrency_limit=20
|
530 |
)
|
531 |
|
532 |
blocks.queue(max_size=20)
|
533 |
-
blocks.launch(share=
|
|
|
13 |
import cv2
|
14 |
from pyzxing import BarCodeReader
|
15 |
from PIL import ImageOps
|
16 |
+
from huggingface_hub import hf_hub_download, snapshot_download
|
17 |
|
18 |
from diffusers import (
|
19 |
StableDiffusionPipeline,
|
|
|
52 |
}
|
53 |
|
54 |
def load_models(controlnet_model, diffusion_model):
|
55 |
+
# Download ControlNet model
|
56 |
+
controlnet_path = snapshot_download(CONTROLNET_MODELS[controlnet_model])
|
57 |
controlnet = ControlNetModel.from_pretrained(
|
58 |
+
controlnet_path,
|
59 |
torch_dtype=torch.float16
|
60 |
).to("cuda")
|
61 |
|
62 |
+
|
63 |
+
diffusion_path = snapshot_download(DIFFUSION_MODELS[diffusion_model])
|
64 |
pipe = StableDiffusionControlNetImg2ImgPipeline.from_pretrained(
|
65 |
+
diffusion_path,
|
66 |
controlnet=controlnet,
|
67 |
torch_dtype=torch.float16,
|
68 |
safety_checker=None,
|
|
|
149 |
return Image.fromarray(inverted)
|
150 |
return inverted
|
151 |
|
152 |
+
@spaces.GPU()
|
153 |
def inference(
|
154 |
qr_code_content: str,
|
155 |
prompt: str,
|
|
|
168 |
invert_init_image: bool = False, # New parameter
|
169 |
controlnet_model: str = "QR Code Monster",
|
170 |
diffusion_model: str = "Stable Diffusion v1.5",
|
171 |
+
progress=gr.Progress()
|
172 |
):
|
173 |
try:
|
174 |
# Load models based on user selection
|
175 |
+
progress(0, desc="Downloading models...")
|
176 |
pipe = load_models(controlnet_model, diffusion_model)
|
177 |
+
progress(0.5, desc="Models downloaded, preparing for inference...")
|
178 |
|
179 |
if prompt is None or prompt == "":
|
180 |
raise gr.Error("Prompt is required")
|
|
|
531 |
invert_init_image,
|
532 |
controlnet_model_dropdown,
|
533 |
diffusion_model_dropdown,
|
534 |
+
gr.Progress()
|
535 |
],
|
536 |
outputs=[result_image, used_seed],
|
537 |
concurrency_limit=20
|
538 |
)
|
539 |
|
540 |
blocks.queue(max_size=20)
|
541 |
+
blocks.launch(share=True, show_api=True)
|