alexnasa commited on
Commit
fc30cd8
·
verified ·
1 Parent(s): 4631aab

Update gradio_seesr.py

Browse files
Files changed (1) hide show
  1. gradio_seesr.py +48 -16
gradio_seesr.py CHANGED
@@ -1,3 +1,4 @@
 
1
  import gradio as gr
2
  import os
3
  import sys
@@ -8,9 +9,29 @@ import numpy as np
8
  from PIL import Image
9
 
10
  import torch
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  import torch.utils.checkpoint
12
  from pytorch_lightning import seed_everything
13
- from diffusers import AutoencoderKL, DDPMScheduler
14
  from diffusers.utils import check_min_version
15
  from diffusers.utils.import_utils import is_xformers_available
16
  from transformers import CLIPTextModel, CLIPTokenizer, CLIPImageProcessor
@@ -36,7 +57,7 @@ ram_transforms = transforms.Compose([
36
  ])
37
 
38
  snapshot_download(
39
- repo_id="CSWRY/SeeSR",
40
  local_dir="preset/models"
41
  )
42
 
@@ -46,6 +67,11 @@ snapshot_download(
46
  local_dir="preset/models/stable-diffusion-2-1-base"
47
  )
48
 
 
 
 
 
 
49
 
50
  # Load scheduler, tokenizer and models.
51
  pretrained_model_path = 'preset/models/stable-diffusion-2-1-base'
@@ -65,15 +91,14 @@ text_encoder.requires_grad_(False)
65
  unet.requires_grad_(False)
66
  controlnet.requires_grad_(False)
67
 
68
- if is_xformers_available():
69
- unet.enable_xformers_memory_efficient_attention()
70
- controlnet.enable_xformers_memory_efficient_attention()
71
- else:
72
- raise ValueError("xformers is not available. Make sure it is installed correctly")
73
 
74
  # Get the validation pipeline
75
  validation_pipeline = StableDiffusionControlNetPipeline(
76
- vae=vae, text_encoder=text_encoder, tokenizer=tokenizer, feature_extractor=feature_extractor,
77
  unet=unet, controlnet=controlnet, scheduler=scheduler, safety_checker=None, requires_safety_checker=False,
78
  )
79
 
@@ -96,10 +121,12 @@ tag_model = ram(pretrained='preset/models/ram_swin_large_14m.pth',
96
  tag_model.eval()
97
  tag_model.to(device, dtype=weight_dtype)
98
 
99
- @torch.no_grad()
100
  def process(
101
  input_image: Image.Image,
102
  user_prompt: str,
 
 
103
  positive_prompt: str,
104
  negative_prompt: str,
105
  num_inference_steps: int,
@@ -150,7 +177,8 @@ def process(
150
  height=height, width=width,
151
  guidance_scale=cfg_scale, conditioning_scale=1,
152
  start_point='lr', start_steps=999,ram_encoder_hidden_states=ram_encoder_hidden_states,
153
- latent_tiled_size=latent_tiled_size, latent_tiled_overlap=latent_tiled_overlap
 
154
  ).images[0]
155
 
156
  if True: # alpha<1.0:
@@ -181,8 +209,10 @@ with block:
181
  gr.Markdown(MARKDOWN)
182
  with gr.Row():
183
  with gr.Column():
184
- input_image = gr.Image(source="upload", type="pil")
185
- run_button = gr.Button(label="Run")
 
 
186
  with gr.Accordion("Options", open=True):
187
  user_prompt = gr.Textbox(label="User Prompt", value="")
188
  positive_prompt = gr.Textbox(label="Positive Prompt", value="clean, high-resolution, 8k, best quality, masterpiece")
@@ -190,19 +220,21 @@ with block:
190
  label="Negative Prompt",
191
  value="dotted, noise, blur, lowres, oversmooth, longbody, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality"
192
  )
193
- cfg_scale = gr.Slider(label="Classifier Free Guidance Scale (Set a value larger than 1 to enable it!)", minimum=0.1, maximum=10.0, value=5.5, step=0.1)
194
- num_inference_steps = gr.Slider(label="Inference Steps", minimum=10, maximum=100, value=50, step=1)
195
  seed = gr.Slider(label="Seed", minimum=-1, maximum=2147483647, step=1, value=231)
196
  sample_times = gr.Slider(label="Sample Times", minimum=1, maximum=10, step=1, value=1)
197
  latent_tiled_size = gr.Slider(label="Diffusion Tile Size", minimum=128, maximum=480, value=320, step=1)
198
  latent_tiled_overlap = gr.Slider(label="Diffusion Tile Overlap", minimum=4, maximum=16, value=4, step=1)
199
  scale_factor = gr.Number(label="SR Scale", value=4)
200
  with gr.Column():
201
- result_gallery = gr.Gallery(label="Output", show_label=False, elem_id="gallery").style(grid=2, height="auto")
202
 
203
  inputs = [
204
  input_image,
205
  user_prompt,
 
 
206
  positive_prompt,
207
  negative_prompt,
208
  num_inference_steps,
@@ -215,5 +247,5 @@ with block:
215
  ]
216
  run_button.click(fn=process, inputs=inputs, outputs=[result_gallery])
217
 
218
- block.launch()
219
 
 
1
+ import spaces
2
  import gradio as gr
3
  import os
4
  import sys
 
9
  from PIL import Image
10
 
11
  import torch
12
+
13
+ print(f'torch version:{torch.__version__}')
14
+
15
+ # import subprocess
16
+ # import importlib, site, sys
17
+
18
+ # # Re-discover all .pth/.egg-link files
19
+ # for sitedir in site.getsitepackages():
20
+ # site.addsitedir(sitedir)
21
+
22
+ # # Clear caches so importlib will pick up new modules
23
+ # importlib.invalidate_caches()
24
+
25
+ # def sh(cmd): subprocess.check_call(cmd, shell=True)
26
+
27
+ # sh("pip install -U xformers --index-url https://download.pytorch.org/whl/cu126")
28
+
29
+ # # tell Python to re-scan site-packages now that the egg-link exists
30
+ # import importlib, site; site.addsitedir(site.getsitepackages()[0]); importlib.invalidate_caches()
31
+
32
  import torch.utils.checkpoint
33
  from pytorch_lightning import seed_everything
34
+ from diffusers import AutoencoderKL, DDIMScheduler
35
  from diffusers.utils import check_min_version
36
  from diffusers.utils.import_utils import is_xformers_available
37
  from transformers import CLIPTextModel, CLIPTokenizer, CLIPImageProcessor
 
57
  ])
58
 
59
  snapshot_download(
60
+ repo_id="alexnasa/SEESR",
61
  local_dir="preset/models"
62
  )
63
 
 
67
  local_dir="preset/models/stable-diffusion-2-1-base"
68
  )
69
 
70
+ snapshot_download(
71
+ repo_id="xinyu1205/recognize_anything_model",
72
+ local_dir="preset/models/"
73
+ )
74
+
75
 
76
  # Load scheduler, tokenizer and models.
77
  pretrained_model_path = 'preset/models/stable-diffusion-2-1-base'
 
91
  unet.requires_grad_(False)
92
  controlnet.requires_grad_(False)
93
 
94
+ # unet.to("cuda")
95
+ # controlnet.to("cuda")
96
+ # unet.enable_xformers_memory_efficient_attention()
97
+ # controlnet.enable_xformers_memory_efficient_attention()
 
98
 
99
  # Get the validation pipeline
100
  validation_pipeline = StableDiffusionControlNetPipeline(
101
+ vae=vae, text_encoder=text_encoder, tokenizer=tokenizer, feature_extractor=None,
102
  unet=unet, controlnet=controlnet, scheduler=scheduler, safety_checker=None, requires_safety_checker=False,
103
  )
104
 
 
121
  tag_model.eval()
122
  tag_model.to(device, dtype=weight_dtype)
123
 
124
+ @spaces.GPU()
125
  def process(
126
  input_image: Image.Image,
127
  user_prompt: str,
128
+ use_KDS: bool,
129
+ num_particles: int,
130
  positive_prompt: str,
131
  negative_prompt: str,
132
  num_inference_steps: int,
 
177
  height=height, width=width,
178
  guidance_scale=cfg_scale, conditioning_scale=1,
179
  start_point='lr', start_steps=999,ram_encoder_hidden_states=ram_encoder_hidden_states,
180
+ latent_tiled_size=latent_tiled_size, latent_tiled_overlap=latent_tiled_overlap, use_KDS=use_KDS,
181
+ num_particles=num_particles
182
  ).images[0]
183
 
184
  if True: # alpha<1.0:
 
209
  gr.Markdown(MARKDOWN)
210
  with gr.Row():
211
  with gr.Column():
212
+ input_image = gr.Image(type="pil")
213
+ num_particles = gr.Slider(label="Num of Partickes", minimum=1, maximum=16, step=1, value=4)
214
+ use_KDS = gr.Checkbox(label="Use Kernel Density Steering")
215
+ run_button = gr.Button("Run")
216
  with gr.Accordion("Options", open=True):
217
  user_prompt = gr.Textbox(label="User Prompt", value="")
218
  positive_prompt = gr.Textbox(label="Positive Prompt", value="clean, high-resolution, 8k, best quality, masterpiece")
 
220
  label="Negative Prompt",
221
  value="dotted, noise, blur, lowres, oversmooth, longbody, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality"
222
  )
223
+ cfg_scale = gr.Slider(label="Classifier Free Guidance Scale (Set to 1.0 in sd-turbo)", minimum=1, maximum=1, value=1, step=0)
224
+ num_inference_steps = gr.Slider(label="Inference Steps", minimum=2, maximum=8, value=2, step=1)
225
  seed = gr.Slider(label="Seed", minimum=-1, maximum=2147483647, step=1, value=231)
226
  sample_times = gr.Slider(label="Sample Times", minimum=1, maximum=10, step=1, value=1)
227
  latent_tiled_size = gr.Slider(label="Diffusion Tile Size", minimum=128, maximum=480, value=320, step=1)
228
  latent_tiled_overlap = gr.Slider(label="Diffusion Tile Overlap", minimum=4, maximum=16, value=4, step=1)
229
  scale_factor = gr.Number(label="SR Scale", value=4)
230
  with gr.Column():
231
+ result_gallery = gr.Gallery(label="Output", show_label=False, elem_id="gallery")
232
 
233
  inputs = [
234
  input_image,
235
  user_prompt,
236
+ use_KDS,
237
+ num_particles,
238
  positive_prompt,
239
  negative_prompt,
240
  num_inference_steps,
 
247
  ]
248
  run_button.click(fn=process, inputs=inputs, outputs=[result_gallery])
249
 
250
+ block.launch(share=True)
251