Spaces:
Build error
Build error
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)
|