Nekochu commited on
Commit
d041804
·
1 Parent(s): 40a8177

fix gradio cache_examples None output crash

Browse files
Files changed (1) hide show
  1. app.py +18 -1
app.py CHANGED
@@ -27,6 +27,15 @@ import numpy as np
27
  import cv2
28
  import gradio as gr
29
  import onnxruntime as ort
 
 
 
 
 
 
 
 
 
30
  from huggingface_hub import hf_hub_download
31
 
32
  cv2.setNumThreads(2)
@@ -495,6 +504,10 @@ def process_video(video_path, resolution, despill_val, mask_mode,
495
  # Gradio UI
496
  # ---------------------------------------------------------------------------
497
 
 
 
 
 
498
  if HAS_CUDA:
499
  DESCRIPTION = "# CorridorKey Green Screen Matting\nRemove green backgrounds from video. Based on [CorridorKey](https://www.youtube.com/watch?v=3Ploi723hg4) by Corridor Digital. GPU mode: max {max_dur}s / {max_frames} frames.".format(max_dur=MAX_DURATION_GPU, max_frames=MAX_FRAMES)
500
  else:
@@ -559,7 +572,11 @@ with gr.Blocks(title="CorridorKey") as demo:
559
  ["examples/corridor_greenscreen_demo.mp4", "1024", 5, "Hybrid (auto)", True, 400, "Composite on checkerboard (MP4)"],
560
  ],
561
  inputs=[input_video, resolution, despill_slider, mask_mode, despeckle_check, despeckle_size, output_mode],
562
- label="Examples"
 
 
 
 
563
  )
564
 
565
  process_btn.click(
 
27
  import cv2
28
  import gradio as gr
29
  import onnxruntime as ort
30
+
31
+ # Workaround: Gradio cache_examples bug with None outputs.
32
+ # CSVLogger.flag() writes "" for None, read_from_flag("") calls json.loads("") -> crash.
33
+ _original_read_from_flag = gr.components.Component.read_from_flag
34
+ def _patched_read_from_flag(self, payload):
35
+ if payload is None or (isinstance(payload, str) and payload.strip() == ""):
36
+ return None
37
+ return _original_read_from_flag(self, payload)
38
+ gr.components.Component.read_from_flag = _patched_read_from_flag
39
  from huggingface_hub import hf_hub_download
40
 
41
  cv2.setNumThreads(2)
 
504
  # Gradio UI
505
  # ---------------------------------------------------------------------------
506
 
507
+ def process_example(video_path, resolution, despill, mask_mode, despeckle, despeckle_size, output_mode):
508
+ return process_video(video_path, resolution, despill, mask_mode, despeckle, despeckle_size, output_mode)
509
+
510
+
511
  if HAS_CUDA:
512
  DESCRIPTION = "# CorridorKey Green Screen Matting\nRemove green backgrounds from video. Based on [CorridorKey](https://www.youtube.com/watch?v=3Ploi723hg4) by Corridor Digital. GPU mode: max {max_dur}s / {max_frames} frames.".format(max_dur=MAX_DURATION_GPU, max_frames=MAX_FRAMES)
513
  else:
 
572
  ["examples/corridor_greenscreen_demo.mp4", "1024", 5, "Hybrid (auto)", True, 400, "Composite on checkerboard (MP4)"],
573
  ],
574
  inputs=[input_video, resolution, despill_slider, mask_mode, despeckle_check, despeckle_size, output_mode],
575
+ outputs=[output_video, output_file, status_text],
576
+ fn=process_example,
577
+ cache_examples=True,
578
+ cache_mode="lazy",
579
+ label="Examples (click to load)"
580
  )
581
 
582
  process_btn.click(