Fabrice-TIERCELIN commited on
Commit
83a80d8
1 Parent(s): 15fc37d

Better parameter order

Browse files
Files changed (1) hide show
  1. gradio_demo.py +57 -29
gradio_demo.py CHANGED
@@ -117,13 +117,36 @@ def llave_process(input_image, temperature, top_p, qs=None):
117
  return captions[0]
118
 
119
  @spaces.GPU(duration=240)
120
- def stage2_process(input_image, prompt, a_prompt, n_prompt, num_samples, upscale, edm_steps, s_stage1, s_stage2,
121
- s_cfg, seed, s_churn, s_noise, color_fix_type, diff_dtype, ae_dtype, gamma_correction,
122
- linear_CFG, linear_s_stage2, spt_linear_CFG, spt_linear_s_stage2, model_select):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  print('Start stage2_process')
124
  if torch.cuda.device_count() == 0:
125
  gr.Warning('Set this space to GPU config to make it work.')
126
  return None, None
 
127
  torch.cuda.set_device(SUPIR_device)
128
  event_id = str(time.time_ns())
129
  event_dict = {'event_id': event_id, 'localtime': time.ctime(), 'prompt': prompt, 'a_prompt': a_prompt,
@@ -184,7 +207,7 @@ def load_and_reset(param_setting):
184
  print('Start load_and_reset')
185
  if torch.cuda.device_count() == 0:
186
  gr.Warning('Set this space to GPU config to make it work.')
187
- return None, None, None, None, None, None, None, None, None, None, None, None, None
188
  edm_steps = default_setting.edm_steps
189
  s_stage2 = 1.0
190
  s_stage1 = -1.0
@@ -203,15 +226,17 @@ def load_and_reset(param_setting):
203
  if param_setting == "Quality":
204
  s_cfg = default_setting.s_cfg_Quality
205
  spt_linear_CFG = default_setting.spt_linear_CFG_Quality
 
206
  elif param_setting == "Fidelity":
207
  s_cfg = default_setting.s_cfg_Fidelity
208
  spt_linear_CFG = default_setting.spt_linear_CFG_Fidelity
 
209
  else:
210
  raise NotImplementedError
211
  gr.Info('The parameters are reset.')
212
  print('End load_and_reset')
213
  return edm_steps, s_cfg, s_stage2, s_stage1, s_churn, s_noise, a_prompt, n_prompt, color_fix_type, linear_CFG, \
214
- linear_s_stage2, spt_linear_CFG, spt_linear_s_stage2
215
 
216
 
217
  def submit_feedback(event_id, fb_score, fb_text):
@@ -229,10 +254,10 @@ def submit_feedback(event_id, fb_score, fb_text):
229
 
230
  title_html = """
231
  <h1><center>SUPIR</center></h1>
232
- <center>Upscale your images up to x8 freely, without account, without watermark and download it</center>
233
  <br/>
234
 
235
- <p>SUPIR is a practicing model scaling for photo-realistic image restoration. It is still a research project under tested and is not yet a stable commercial product. LLaVa is not available in this demo. If you want to auto-generate the description of your image, use another <a href="https://huggingface.co/spaces/MaziyarPanahi/llava-llama-3-8b">LLaVa space</a>.
236
 
237
  <p><center><a href="https://arxiv.org/abs/2401.13627">Paper</a> &emsp; <a href="http://supir.xpixel.group/">Project Page</a> &emsp; <a href="https://github.com/Fanghua-Yu/SUPIR/blob/master/assets/DemoGuide.png">How to play</a> &emsp; <a href="https://huggingface.co/blog/MonsterMMORPG/supir-sota-image-upscale-better-than-magnific-ai">Local Install Guide</a></center></p>
238
  """
@@ -281,18 +306,7 @@ with gr.Blocks(title="SUPIR") as interface:
281
  qs = gr.Textbox(label="Question", info="Ask LLaVa what description you want", value="Describe the image and its style in a very detailed manner. The image is a realistic photography, not an art painting.", lines=3)
282
 
283
  with gr.Accordion("Restoring options", open=False):
284
- num_samples = gr.Slider(label="Num Samples", info="Number of generated results; I discourage to increase because the process is limited to 3 min", minimum=1, maximum=4 if not args.use_image_slider else 1
285
- , value=1, step=1)
286
  upscale = gr.Slider(label="Upscale factor", info="Resolution x1, x2, x3, x4, x5, x6, x7 or x8", minimum=1, maximum=8, value=2, step=1)
287
- edm_steps = gr.Slider(label="Steps", info="lower=faster, higher=more details", minimum=1, maximum=200, value=default_setting.edm_steps if torch.cuda.device_count() > 0 else 1, step=1)
288
- s_cfg = gr.Slider(label="Text Guidance Scale", info="lower=follow the image, higher=follow the prompt", minimum=1.0, maximum=15.0,
289
- value=default_setting.s_cfg_Quality if torch.cuda.device_count() > 0 else 1.0, step=0.1)
290
- s_stage2 = gr.Slider(label="Restoring Guidance Strength", minimum=0., maximum=1., value=1., step=0.05)
291
- s_stage1 = gr.Slider(label="Pre-denoising Guidance Strength", minimum=-1.0, maximum=6.0, value=-1.0, step=1.0)
292
- randomize_seed = gr.Checkbox(label = "\U0001F3B2 Randomize seed", value = True, info = "If checked, result is always different")
293
- seed = gr.Slider(label="Seed", minimum=0, maximum=2147483647, step=1, randomize=True)
294
- s_churn = gr.Slider(label="S-Churn", minimum=0, maximum=40, value=5, step=1)
295
- s_noise = gr.Slider(label="S-Noise", minimum=1.0, maximum=1.1, value=1.003, step=0.001)
296
  a_prompt = gr.Textbox(label="Default Positive Prompt",
297
  info="Describe what the image represents",
298
  value='Cinematic, High Contrast, highly detailed, taken using a Canon EOS R '
@@ -307,6 +321,22 @@ with gr.Blocks(title="SUPIR") as interface:
307
  'worst quality, low quality, frames, watermark, signature, jpeg artifacts, '
308
  'deformed, lowres, over-smooth',
309
  lines=3)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  with gr.Row():
311
  with gr.Column():
312
  linear_CFG = gr.Checkbox(label="Linear CFG", value=True)
@@ -323,12 +353,8 @@ with gr.Blocks(title="SUPIR") as interface:
323
  with gr.Column():
324
  ae_dtype = gr.Radio(['fp32', 'bf16'], label="Auto-Encoder Data Type", value="bf16",
325
  interactive=True)
326
- with gr.Column():
327
- color_fix_type = gr.Radio(["None", "AdaIn", "Wavelet"], label="Color-Fix Type", info="AdaIn=Adaptive Instance Normalization, Wavelet=For JPEG artifacts", value="Wavelet",
328
- interactive=True)
329
- with gr.Column():
330
- model_select = gr.Radio(["v0-Q", "v0-F"], label="Model Selection", info="Q=Quality, F=Fidelity", value="v0-Q",
331
- interactive=True)
332
 
333
  with gr.Column():
334
  gr.Markdown("<center>Restoring Output</center>")
@@ -340,14 +366,14 @@ with gr.Blocks(title="SUPIR") as interface:
340
  with gr.Column(visible=False):
341
  llave_button = gr.Button(value="Generate description by LlaVa (disabled)")
342
  with gr.Column():
343
- diffusion_button = gr.Button(value="🚀 Upscale/Restore", variant = "primary")
344
  with gr.Row():
345
  with gr.Column():
346
- param_setting = gr.Radio(["Quality", "Fidelity"], interactive=True, label="Parameter setting", value="Quality")
347
  with gr.Column():
348
- restart_button = gr.Button(value="Apply parameter setting", scale=2)
349
 
350
- with gr.Accordion("Feedback", open=True):
351
  fb_score = gr.Slider(label="Feedback Score", minimum=1, maximum=5, value=3, step=1,
352
  interactive=True)
353
  fb_text = gr.Textbox(label="Feedback Text", value="", placeholder='Please enter your feedback here.')
@@ -388,6 +414,7 @@ with gr.Blocks(title="SUPIR") as interface:
388
  fb_text
389
  ], queue = False, show_progress = False).success(fn=stage2_process, inputs = [
390
  input_image,
 
391
  prompt,
392
  a_prompt,
393
  n_prompt,
@@ -430,7 +457,8 @@ with gr.Blocks(title="SUPIR") as interface:
430
  linear_CFG,
431
  linear_s_stage2,
432
  spt_linear_CFG,
433
- spt_linear_s_stage2
 
434
  ])
435
 
436
  submit_button.click(fn = submit_feedback, inputs = [
 
117
  return captions[0]
118
 
119
  @spaces.GPU(duration=240)
120
+ def stage2_process(
121
+ noisy_image,
122
+ denoise_image,
123
+ prompt,
124
+ a_prompt,
125
+ n_prompt,
126
+ num_samples,
127
+ upscale,
128
+ edm_steps,
129
+ s_stage1,
130
+ s_stage2,
131
+ s_cfg,
132
+ seed,
133
+ s_churn,
134
+ s_noise,
135
+ color_fix_type,
136
+ diff_dtype,
137
+ ae_dtype,
138
+ gamma_correction,
139
+ linear_CFG,
140
+ linear_s_stage2,
141
+ spt_linear_CFG,
142
+ spt_linear_s_stage2,
143
+ model_select
144
+ ):
145
  print('Start stage2_process')
146
  if torch.cuda.device_count() == 0:
147
  gr.Warning('Set this space to GPU config to make it work.')
148
  return None, None
149
+ input_image = noisy_image if denoise_image is None else denoise_image
150
  torch.cuda.set_device(SUPIR_device)
151
  event_id = str(time.time_ns())
152
  event_dict = {'event_id': event_id, 'localtime': time.ctime(), 'prompt': prompt, 'a_prompt': a_prompt,
 
207
  print('Start load_and_reset')
208
  if torch.cuda.device_count() == 0:
209
  gr.Warning('Set this space to GPU config to make it work.')
210
+ return None, None, None, None, None, None, None, None, None, None, None, None, None, None
211
  edm_steps = default_setting.edm_steps
212
  s_stage2 = 1.0
213
  s_stage1 = -1.0
 
226
  if param_setting == "Quality":
227
  s_cfg = default_setting.s_cfg_Quality
228
  spt_linear_CFG = default_setting.spt_linear_CFG_Quality
229
+ model_select = "v0-Q"
230
  elif param_setting == "Fidelity":
231
  s_cfg = default_setting.s_cfg_Fidelity
232
  spt_linear_CFG = default_setting.spt_linear_CFG_Fidelity
233
+ model_select = "v0-F"
234
  else:
235
  raise NotImplementedError
236
  gr.Info('The parameters are reset.')
237
  print('End load_and_reset')
238
  return edm_steps, s_cfg, s_stage2, s_stage1, s_churn, s_noise, a_prompt, n_prompt, color_fix_type, linear_CFG, \
239
+ linear_s_stage2, spt_linear_CFG, spt_linear_s_stage2, model_select
240
 
241
 
242
  def submit_feedback(event_id, fb_score, fb_text):
 
254
 
255
  title_html = """
256
  <h1><center>SUPIR</center></h1>
257
+ <big><center>Upscale your images up to x8 freely, without account, without watermark and download it</center></big>
258
  <br/>
259
 
260
+ <p>SUPIR is a practicing model scaling for photo-realistic image restoration. It is still a research project under tested and is not yet a stable commercial product. LLaVa is not integrated in this demo. If you want to auto-generate the description of your image, use another <a href="https://huggingface.co/spaces/MaziyarPanahi/llava-llama-3-8b">LLaVa space</a>. The content added by SUPIR is imagination, not real-world information. The aim of SUPIR is the beauty and the illustration.
261
 
262
  <p><center><a href="https://arxiv.org/abs/2401.13627">Paper</a> &emsp; <a href="http://supir.xpixel.group/">Project Page</a> &emsp; <a href="https://github.com/Fanghua-Yu/SUPIR/blob/master/assets/DemoGuide.png">How to play</a> &emsp; <a href="https://huggingface.co/blog/MonsterMMORPG/supir-sota-image-upscale-better-than-magnific-ai">Local Install Guide</a></center></p>
263
  """
 
306
  qs = gr.Textbox(label="Question", info="Ask LLaVa what description you want", value="Describe the image and its style in a very detailed manner. The image is a realistic photography, not an art painting.", lines=3)
307
 
308
  with gr.Accordion("Restoring options", open=False):
 
 
309
  upscale = gr.Slider(label="Upscale factor", info="Resolution x1, x2, x3, x4, x5, x6, x7 or x8", minimum=1, maximum=8, value=2, step=1)
 
 
 
 
 
 
 
 
 
310
  a_prompt = gr.Textbox(label="Default Positive Prompt",
311
  info="Describe what the image represents",
312
  value='Cinematic, High Contrast, highly detailed, taken using a Canon EOS R '
 
321
  'worst quality, low quality, frames, watermark, signature, jpeg artifacts, '
322
  'deformed, lowres, over-smooth',
323
  lines=3)
324
+ num_samples = gr.Slider(label="Num Samples", info="Number of generated results; I discourage to increase because the process is limited to 4 min", minimum=1, maximum=4 if not args.use_image_slider else 1
325
+ , value=1, step=1)
326
+ edm_steps = gr.Slider(label="Steps", info="lower=faster, higher=more details", minimum=1, maximum=200, value=default_setting.edm_steps if torch.cuda.device_count() > 0 else 1, step=1)
327
+ with gr.Row():
328
+ with gr.Column():
329
+ model_select = gr.Radio(["v0-Q", "v0-F"], label="Model Selection", info="Q=Quality, F=Fidelity", value="v0-Q",
330
+ interactive=True)
331
+ with gr.Column():
332
+ color_fix_type = gr.Radio(["None", "AdaIn", "Wavelet"], label="Color-Fix Type", info="AdaIn=Adaptive Instance Normalization, Wavelet=For JPEG artifacts", value="Wavelet",
333
+ interactive=True)
334
+ s_cfg = gr.Slider(label="Text Guidance Scale", info="lower=follow the image, higher=follow the prompt", minimum=1.0, maximum=15.0,
335
+ value=default_setting.s_cfg_Quality if torch.cuda.device_count() > 0 else 1.0, step=0.1)
336
+ s_stage2 = gr.Slider(label="Restoring Guidance Strength", minimum=0., maximum=1., value=1., step=0.05)
337
+ s_stage1 = gr.Slider(label="Pre-denoising Guidance Strength", minimum=-1.0, maximum=6.0, value=-1.0, step=1.0)
338
+ s_churn = gr.Slider(label="S-Churn", minimum=0, maximum=40, value=5, step=1)
339
+ s_noise = gr.Slider(label="S-Noise", minimum=1.0, maximum=1.1, value=1.003, step=0.001)
340
  with gr.Row():
341
  with gr.Column():
342
  linear_CFG = gr.Checkbox(label="Linear CFG", value=True)
 
353
  with gr.Column():
354
  ae_dtype = gr.Radio(['fp32', 'bf16'], label="Auto-Encoder Data Type", value="bf16",
355
  interactive=True)
356
+ randomize_seed = gr.Checkbox(label = "\U0001F3B2 Randomize seed", value = True, info = "If checked, result is always different")
357
+ seed = gr.Slider(label="Seed", minimum=0, maximum=2147483647, step=1, randomize=True)
 
 
 
 
358
 
359
  with gr.Column():
360
  gr.Markdown("<center>Restoring Output</center>")
 
366
  with gr.Column(visible=False):
367
  llave_button = gr.Button(value="Generate description by LlaVa (disabled)")
368
  with gr.Column():
369
+ diffusion_button = gr.Button(value="🚀 Upscale/Restore", variant = "primary", elem_id="process_button")
370
  with gr.Row():
371
  with gr.Column():
372
+ param_setting = gr.Radio(["Quality", "Fidelity"], interactive=True, label="Presetting", value="Quality")
373
  with gr.Column():
374
+ restart_button = gr.Button(value="Apply presetting", scale=2)
375
 
376
+ with gr.Accordion("Feedback", open=True, visible=False):
377
  fb_score = gr.Slider(label="Feedback Score", minimum=1, maximum=5, value=3, step=1,
378
  interactive=True)
379
  fb_text = gr.Textbox(label="Feedback Text", value="", placeholder='Please enter your feedback here.')
 
414
  fb_text
415
  ], queue = False, show_progress = False).success(fn=stage2_process, inputs = [
416
  input_image,
417
+ denoise_image,
418
  prompt,
419
  a_prompt,
420
  n_prompt,
 
457
  linear_CFG,
458
  linear_s_stage2,
459
  spt_linear_CFG,
460
+ spt_linear_s_stage2,
461
+ model_select
462
  ])
463
 
464
  submit_button.click(fn = submit_feedback, inputs = [