ohayonguy commited on
Commit
b1e0e58
1 Parent(s): c64779b

improved interface

Browse files
Files changed (1) hide show
  1. app.py +45 -84
app.py CHANGED
@@ -193,15 +193,14 @@ def inference(
193
  return output, restored_faces if len(restored_faces) > 1 else None
194
 
195
 
 
196
  intro = """
197
- <h1 style="font-weight: 1400; text-align: center; margin-bottom: 7px;">Posterior-Mean Rectified Flow: Towards Minimum MSE Photo-Realistic Image Restoration</h1>
198
  <h3 style="margin-bottom: 10px; text-align: center;">
199
  <a href="https://arxiv.org/abs/2410.00418">[Paper]</a>&nbsp;|&nbsp;
200
  <a href="https://pmrf-ml.github.io/">[Project Page]</a>&nbsp;|&nbsp;
201
  <a href="https://github.com/ohayonguy/PMRF">[Code]</a>
202
  </h3>
203
- """
204
- markdown_top = """
205
  Gradio demo for the blind face image restoration version of [Posterior-Mean Rectified Flow: Towards Minimum MSE Photo-Realistic Image Restoration](https://arxiv.org/abs/2410.00418).
206
  You may use this demo to enhance the quality of any image which contains faces.
207
 
@@ -212,8 +211,6 @@ Please refer to our project's page for more details: https://pmrf-ml.github.io/.
212
  1. Our model is designed to restore aligned face images, where there is *only one* face in the image, and the face is centered and aligned. Here, however, we incorporate mechanisms that allow restoring the quality of *any* image that contains *any* number of faces. Thus, the resulting quality of such general images is not guaranteed.
213
  2. If the faces in your image are not aligned, make sure that the checkbox "The input is an aligned face image" in *not* marked.
214
  3. Too large images may result in out-of-memory error.
215
-
216
- ---
217
  """
218
 
219
  article = r"""
@@ -249,85 +246,49 @@ css = """
249
  }
250
  """
251
 
252
- with gr.Blocks(css=css, theme=gr.themes.Soft()) as demo:
253
- gr.HTML(intro)
254
- gr.Markdown(markdown_top)
255
-
256
- with gr.Column(scale=1):
257
- with gr.Row():
258
- input_im = gr.Image(label="Input", type="filepath", show_label=True)
259
- with gr.Row():
260
- num_inference_steps = gr.Slider(
261
- label="Number of Inference Steps", minimum=1, maximum=200, step=1, value=25, scale=1
262
- )
263
- upscale_factor = gr.Slider(
264
- label="Scale factor (applicable to non-aligned face images)",
265
- minimum=1,
266
- maximum=4,
267
- step=0.1,
268
- value=1,
269
- scale=1,
270
- )
271
- seed = gr.Slider(label="Seed", minimum=0, maximum=MAX_SEED, step=1, value=42, scale=1)
272
- randomize_seed = gr.Checkbox(label="Randomize seed", value=True, scale=1)
273
- aligned = gr.Checkbox(label="The input is an aligned face image", value=False, scale=1)
274
- with gr.Row():
275
- with gr.Column(scale=1):
276
- run_button = gr.Button(value="Submit", variant="primary")
277
- with gr.Column(scale=1):
278
- clear_button = gr.ClearButton(value="Clear")
279
-
280
- with gr.Column(scale=1):
281
- with gr.Row():
282
- result = gr.Image(label="Output", type="numpy", show_label=True, format="png")
283
- with gr.Row():
284
- gallery = gr.Gallery(
285
- label="Restored faces gallery", type="numpy", show_label=True, format="png"
286
- )
287
-
288
- clear_button.add(input_im)
289
- clear_button.add(result)
290
- clear_button.add(gallery)
291
-
292
- with gr.Row():
293
- examples = gr.Examples(
294
- examples=[
295
- [42, False, "examples/01.png", False, 1, 25],
296
- [42, False, "examples/03.jpg", False, 2, 25],
297
- [42, False, "examples/00000055.png", True, 1, 25],
298
- [42, False, "examples/00000085.png", True, 1, 25],
299
- [42, False, "examples/00000113.png", True, 1, 25],
300
- [42, False, "examples/00000137.png", True, 1, 25],
301
- ],
302
- fn=inference,
303
- inputs=[
304
- seed,
305
- randomize_seed,
306
- input_im,
307
- aligned,
308
- upscale_factor,
309
- num_inference_steps,
310
- ],
311
- outputs=[result, gallery],
312
- cache_examples="lazy",
313
- )
314
-
315
- gr.Markdown(article)
316
- gr.on(
317
- [run_button.click],
318
- fn=inference,
319
- inputs=[
320
- seed,
321
- randomize_seed,
322
- input_im,
323
- aligned,
324
- upscale_factor,
325
- num_inference_steps,
326
- ],
327
- outputs=[result, gallery],
328
- # show_api=False,
329
- # show_progress="minimal",
330
- )
331
 
332
  demo.queue()
333
  demo.launch(state_session_capacity=15)
 
193
  return output, restored_faces if len(restored_faces) > 1 else None
194
 
195
 
196
+ title = "Posterior-Mean Rectified Flow: Towards Minimum MSE Photo-Realistic Image Restoration"
197
  intro = """
 
198
  <h3 style="margin-bottom: 10px; text-align: center;">
199
  <a href="https://arxiv.org/abs/2410.00418">[Paper]</a>&nbsp;|&nbsp;
200
  <a href="https://pmrf-ml.github.io/">[Project Page]</a>&nbsp;|&nbsp;
201
  <a href="https://github.com/ohayonguy/PMRF">[Code]</a>
202
  </h3>
203
+
 
204
  Gradio demo for the blind face image restoration version of [Posterior-Mean Rectified Flow: Towards Minimum MSE Photo-Realistic Image Restoration](https://arxiv.org/abs/2410.00418).
205
  You may use this demo to enhance the quality of any image which contains faces.
206
 
 
211
  1. Our model is designed to restore aligned face images, where there is *only one* face in the image, and the face is centered and aligned. Here, however, we incorporate mechanisms that allow restoring the quality of *any* image that contains *any* number of faces. Thus, the resulting quality of such general images is not guaranteed.
212
  2. If the faces in your image are not aligned, make sure that the checkbox "The input is an aligned face image" in *not* marked.
213
  3. Too large images may result in out-of-memory error.
 
 
214
  """
215
 
216
  article = r"""
 
246
  }
247
  """
248
 
249
+ demo = gr.Interface(
250
+ inference,
251
+ [
252
+ gr.Image(label="Input", type="filepath", show_label=True),
253
+ gr.Checkbox(label="Randomize seed", value=True),
254
+ gr.Checkbox(label="The input is an aligned face image", value=False),
255
+ gr.Slider(
256
+ label="Number of Inference Steps",
257
+ minimum=1,
258
+ maximum=200,
259
+ step=1,
260
+ value=25,
261
+ scale=1,
262
+ ),
263
+ gr.Slider(
264
+ label="Scale factor (applicable to non-aligned face images)",
265
+ minimum=1,
266
+ maximum=4,
267
+ step=0.1,
268
+ value=1,
269
+ scale=1,
270
+ ),
271
+ gr.Slider(label="Seed", minimum=0, maximum=MAX_SEED, step=1, value=42, scale=1),
272
+ ],
273
+ [
274
+ gr.Image(label="Output", type="numpy", show_label=True, format="png"),
275
+ gr.Gallery(
276
+ label="Restored faces gallery", type="numpy", show_label=True, format="png",
277
+ ),
278
+ ],
279
+ title=title,
280
+ description=intro,
281
+ article=article,
282
+ examples=[
283
+ [42, False, "examples/01.png", False, 1, 25],
284
+ [42, False, "examples/03.jpg", False, 2, 25],
285
+ [42, False, "examples/00000055.png", True, 1, 25],
286
+ [42, False, "examples/00000085.png", True, 1, 25],
287
+ [42, False, "examples/00000113.png", True, 1, 25],
288
+ [42, False, "examples/00000137.png", True, 1, 25],
289
+ ],
290
+ theme=gr.themes.Soft(),
291
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
292
 
293
  demo.queue()
294
  demo.launch(state_session_capacity=15)