Severian commited on
Commit
4f21463
·
verified ·
1 Parent(s): 8100323

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -5
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
- CONTROLNET_MODELS[controlnet_model],
57
  torch_dtype=torch.float16
58
  ).to("cuda")
59
 
 
 
60
  pipe = StableDiffusionControlNetImg2ImgPipeline.from_pretrained(
61
- DIFFUSION_MODELS[diffusion_model],
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
- #@spaces.GPU()
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=False, show_api=False)
 
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)