Jian Shi commited on
Commit
4ed94f8
·
1 Parent(s): ed05f75

Video tab: three temporal clips through the video matchers, mp4 outputs

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. __pycache__/engine.cpython-311.pyc +0 -0
  2. app.py +72 -7
  3. clips/galapagos/left_00.jpg +3 -0
  4. clips/galapagos/left_01.jpg +3 -0
  5. clips/galapagos/left_02.jpg +3 -0
  6. clips/galapagos/left_03.jpg +3 -0
  7. clips/galapagos/left_04.jpg +3 -0
  8. clips/galapagos/left_05.jpg +3 -0
  9. clips/galapagos/left_06.jpg +3 -0
  10. clips/galapagos/left_07.jpg +3 -0
  11. clips/galapagos/left_08.jpg +3 -0
  12. clips/galapagos/left_09.jpg +3 -0
  13. clips/galapagos/left_10.jpg +3 -0
  14. clips/galapagos/left_11.jpg +3 -0
  15. clips/galapagos/right_00.jpg +3 -0
  16. clips/galapagos/right_01.jpg +3 -0
  17. clips/galapagos/right_02.jpg +3 -0
  18. clips/galapagos/right_03.jpg +3 -0
  19. clips/galapagos/right_04.jpg +3 -0
  20. clips/galapagos/right_05.jpg +3 -0
  21. clips/galapagos/right_06.jpg +3 -0
  22. clips/galapagos/right_07.jpg +3 -0
  23. clips/galapagos/right_08.jpg +3 -0
  24. clips/galapagos/right_09.jpg +3 -0
  25. clips/galapagos/right_10.jpg +3 -0
  26. clips/galapagos/right_11.jpg +3 -0
  27. clips/jurassic_world/left_00.jpg +3 -0
  28. clips/jurassic_world/left_01.jpg +3 -0
  29. clips/jurassic_world/left_02.jpg +3 -0
  30. clips/jurassic_world/left_03.jpg +3 -0
  31. clips/jurassic_world/left_04.jpg +3 -0
  32. clips/jurassic_world/left_05.jpg +3 -0
  33. clips/jurassic_world/left_06.jpg +3 -0
  34. clips/jurassic_world/left_07.jpg +3 -0
  35. clips/jurassic_world/left_08.jpg +3 -0
  36. clips/jurassic_world/left_09.jpg +3 -0
  37. clips/jurassic_world/left_10.jpg +3 -0
  38. clips/jurassic_world/left_11.jpg +3 -0
  39. clips/jurassic_world/right_00.jpg +3 -0
  40. clips/jurassic_world/right_01.jpg +3 -0
  41. clips/jurassic_world/right_02.jpg +3 -0
  42. clips/jurassic_world/right_03.jpg +3 -0
  43. clips/jurassic_world/right_04.jpg +3 -0
  44. clips/jurassic_world/right_05.jpg +3 -0
  45. clips/jurassic_world/right_06.jpg +3 -0
  46. clips/jurassic_world/right_07.jpg +3 -0
  47. clips/jurassic_world/right_08.jpg +3 -0
  48. clips/jurassic_world/right_09.jpg +3 -0
  49. clips/jurassic_world/right_10.jpg +3 -0
  50. clips/jurassic_world/right_11.jpg +3 -0
__pycache__/engine.cpython-311.pyc CHANGED
Binary files a/__pycache__/engine.cpython-311.pyc and b/__pycache__/engine.cpython-311.pyc differ
 
app.py CHANGED
@@ -61,6 +61,56 @@ def build_examples():
61
  return rows
62
 
63
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  with gr.Blocks(title="Unmuzzling Stereo") as demo:
65
  gr.Markdown(
66
  "# Unmuzzling Stereo — signed disparity for content behind the screen\n"
@@ -72,21 +122,36 @@ with gr.Blocks(title="Unmuzzling Stereo") as demo:
72
  "models — fine-tuned on horizontally translated SceneFlow only — recover "
73
  "it with no architectural change. Red = in front of the screen plane, "
74
  "blue = behind it.")
75
- with gr.Row():
 
76
  left = gr.Image(label="Left view", type="numpy")
77
  right = gr.Image(label="Right view", type="numpy")
78
- with gr.Row():
79
  model = gr.Dropdown(CHOICES, value=CHOICES[0], label="Backbone")
80
  show_orig = gr.Checkbox(value=True, label="Also run the released (zero-shot) model")
81
  btn = gr.Button("Run", variant="primary")
82
- with gr.Row():
83
  out_ours = gr.Image(label="Corrected (ours)", interactive=False)
84
  out_zs = gr.Image(label="Zero-shot (released)", interactive=False)
85
- stats = gr.Markdown()
86
- btn.click(run, [left, right, model, show_orig], [out_ours, out_zs, stats])
87
- ex = build_examples()
88
- if ex:
89
  gr.Examples(ex, [left, right, model, show_orig], label="Try a rendered pair (CC-BY Blender open movies)")
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  if __name__ == "__main__":
92
  demo.launch()
 
61
  return rows
62
 
63
 
64
+ CLIP_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "clips")
65
+ VIDEO_CHOICES = [engine.NAMES[k] for k in ("sav", "dynamic", "bida")]
66
+
67
+
68
+ def _load_clip(name):
69
+ import glob
70
+ d = os.path.join(CLIP_DIR, name)
71
+ L = [np.asarray(__import__("PIL.Image", fromlist=["Image"]).open(p))
72
+ for p in sorted(glob.glob(f"{d}/left_*.jpg"))]
73
+ R = [np.asarray(__import__("PIL.Image", fromlist=["Image"]).open(p))
74
+ for p in sorted(glob.glob(f"{d}/right_*.jpg"))]
75
+ return L, R
76
+
77
+
78
+ def _write_video(frames, path, fps=8):
79
+ import imageio.v2 as imageio
80
+ with imageio.get_writer(path, fps=fps, codec="libx264", quality=7) as w:
81
+ for f in frames:
82
+ w.append_data(f)
83
+ return path
84
+
85
+
86
+ @_gpu
87
+ def run_video(clip_name, model_name, show_orig):
88
+ import tempfile
89
+ fam = KEY[model_name]
90
+ L, R = _load_clip(clip_name)
91
+ if not L:
92
+ raise gr.Error(f"clip {clip_name} not found")
93
+ tmp = tempfile.mkdtemp()
94
+ _write_video(L, f"{tmp}/input.mp4")
95
+ d_ours = engine.predict_clip(fam, "ours", L, R)
96
+ vmax = max(8.0, float(np.percentile(np.abs(d_ours), 99)))
97
+ behind = 100.0 * float((d_ours < -0.5).mean())
98
+ _write_video([engine.colorize(f, vmax) for f in d_ours], f"{tmp}/ours.mp4")
99
+ md = (f"**{model_name} (corrected)** — {len(L)} frames, range "
100
+ f"[{d_ours.min():.1f}, {d_ours.max():.1f}] px, {behind:.0f}% behind the "
101
+ f"screen. Shared color scale ±{vmax:.0f} px.")
102
+ if show_orig:
103
+ d_zs = engine.predict_clip(fam, "zs", L, R)
104
+ _write_video([engine.colorize(f, vmax) for f in d_zs], f"{tmp}/zs.mp4")
105
+ zs = gr.update(value=f"{tmp}/zs.mp4", visible=True,
106
+ label=f"{model_name} zero-shot (released)")
107
+ md += (f"\n\n**Zero-shot** — range [{d_zs.min():.1f}, {d_zs.max():.1f}] px.")
108
+ else:
109
+ zs = gr.update(value=None, visible=False)
110
+ return f"{tmp}/input.mp4", gr.update(value=f"{tmp}/ours.mp4",
111
+ label=f"{model_name} + ours — {behind:.0f}% behind"), zs, md
112
+
113
+
114
  with gr.Blocks(title="Unmuzzling Stereo") as demo:
115
  gr.Markdown(
116
  "# Unmuzzling Stereo — signed disparity for content behind the screen\n"
 
122
  "models — fine-tuned on horizontally translated SceneFlow only — recover "
123
  "it with no architectural change. Red = in front of the screen plane, "
124
  "blue = behind it.")
125
+ with gr.Tab("Image matchers"):
126
+ with gr.Row():
127
  left = gr.Image(label="Left view", type="numpy")
128
  right = gr.Image(label="Right view", type="numpy")
129
+ with gr.Row():
130
  model = gr.Dropdown(CHOICES, value=CHOICES[0], label="Backbone")
131
  show_orig = gr.Checkbox(value=True, label="Also run the released (zero-shot) model")
132
  btn = gr.Button("Run", variant="primary")
133
+ with gr.Row():
134
  out_ours = gr.Image(label="Corrected (ours)", interactive=False)
135
  out_zs = gr.Image(label="Zero-shot (released)", interactive=False)
136
+ stats = gr.Markdown()
137
+ btn.click(run, [left, right, model, show_orig], [out_ours, out_zs, stats])
138
+ ex = build_examples()
139
+ if ex:
140
  gr.Examples(ex, [left, right, model, show_orig], label="Try a rendered pair (CC-BY Blender open movies)")
141
 
142
+ with gr.Tab("Video matchers"):
143
+ clips = sorted(os.listdir(CLIP_DIR)) if os.path.isdir(CLIP_DIR) else []
144
+ with gr.Row():
145
+ clip_sel = gr.Dropdown(clips, value=clips[0] if clips else None, label="Clip")
146
+ vmodel = gr.Dropdown(VIDEO_CHOICES, value=VIDEO_CHOICES[0], label="Video backbone")
147
+ vshow = gr.Checkbox(value=True, label="Also run the released (zero-shot) model")
148
+ vbtn = gr.Button("Run clip", variant="primary")
149
+ with gr.Row():
150
+ v_in = gr.Video(label="Input (left view)", interactive=False)
151
+ v_ours = gr.Video(label="Corrected (ours)", interactive=False)
152
+ v_zs = gr.Video(label="Zero-shot (released)", interactive=False)
153
+ vstats = gr.Markdown()
154
+ vbtn.click(run_video, [clip_sel, vmodel, vshow], [v_in, v_ours, v_zs, vstats])
155
+
156
  if __name__ == "__main__":
157
  demo.launch()
clips/galapagos/left_00.jpg ADDED

Git LFS Details

  • SHA256: ed7e70f83c48911ce25f9706658f4637a0503a7d24a1fe18fe36acf0d5a84007
  • Pointer size: 130 Bytes
  • Size of remote file: 46.5 kB
clips/galapagos/left_01.jpg ADDED

Git LFS Details

  • SHA256: 2e026eb217c1ad9a08873c1c360659c1576679ae1cdadb0b0172c4e77a5f923f
  • Pointer size: 130 Bytes
  • Size of remote file: 46.8 kB
clips/galapagos/left_02.jpg ADDED

Git LFS Details

  • SHA256: 510c7e564c4df416b4cfadc8ea562a273e057b29f6aafc558be89e033fc14143
  • Pointer size: 130 Bytes
  • Size of remote file: 46.7 kB
clips/galapagos/left_03.jpg ADDED

Git LFS Details

  • SHA256: b2b6c9f0ddeada44e545a75b5d7104da3690f303e698994a16293a472c1e654b
  • Pointer size: 130 Bytes
  • Size of remote file: 46.2 kB
clips/galapagos/left_04.jpg ADDED

Git LFS Details

  • SHA256: d847e2eb532ea5737b9478b3372d1c2e6456d6495d0b6350d361c6bca7565d0f
  • Pointer size: 130 Bytes
  • Size of remote file: 46.2 kB
clips/galapagos/left_05.jpg ADDED

Git LFS Details

  • SHA256: fb2e11e39f37048ec7ae2a7765878f6fc7fde20dc3e796176b80ac9027eb0c0c
  • Pointer size: 130 Bytes
  • Size of remote file: 46.6 kB
clips/galapagos/left_06.jpg ADDED

Git LFS Details

  • SHA256: eb0dafeb235a97788c6a725c6cefe20234471c5090f087948f2fb9b4002282a2
  • Pointer size: 130 Bytes
  • Size of remote file: 46.8 kB
clips/galapagos/left_07.jpg ADDED

Git LFS Details

  • SHA256: 84765cd61d6b67695ea3872b11895678ace4fa139be612c6f3255d86e2a087a7
  • Pointer size: 130 Bytes
  • Size of remote file: 46.7 kB
clips/galapagos/left_08.jpg ADDED

Git LFS Details

  • SHA256: 61c52e9691e62a738e29ef75e417e137aab0d05095003fbeca74a0859a610a45
  • Pointer size: 130 Bytes
  • Size of remote file: 46.7 kB
clips/galapagos/left_09.jpg ADDED

Git LFS Details

  • SHA256: 3c44c688a5bcc4cdd714a034aec4726fdbe3f55bfc19bd266e6e29725f2bea54
  • Pointer size: 130 Bytes
  • Size of remote file: 46.2 kB
clips/galapagos/left_10.jpg ADDED

Git LFS Details

  • SHA256: 197fecf98cfc1cbf9c3dbeeb6494567ab6454117f673dd35c791ae31663960e3
  • Pointer size: 130 Bytes
  • Size of remote file: 46.2 kB
clips/galapagos/left_11.jpg ADDED

Git LFS Details

  • SHA256: b6b8484f91a37042264d91f81cda301d8637a7f525fb299ec2821cf92abbbf3f
  • Pointer size: 130 Bytes
  • Size of remote file: 46.6 kB
clips/galapagos/right_00.jpg ADDED

Git LFS Details

  • SHA256: bd995a7edad7442e5b49026d879dc922d5c6d08abb7323099d0ac17ae133f452
  • Pointer size: 130 Bytes
  • Size of remote file: 46.6 kB
clips/galapagos/right_01.jpg ADDED

Git LFS Details

  • SHA256: 949e3fe57435216b65c2e473a519f3e556a3d0ed42689fcb5d2f515497744d08
  • Pointer size: 130 Bytes
  • Size of remote file: 46.7 kB
clips/galapagos/right_02.jpg ADDED

Git LFS Details

  • SHA256: b733f82b73f2f74459fbd89a362cfb919942414f89d5f166ef50c0f6540bfff1
  • Pointer size: 130 Bytes
  • Size of remote file: 46.6 kB
clips/galapagos/right_03.jpg ADDED

Git LFS Details

  • SHA256: be1d0fd4a2adba053fc88e7fd57c14e5079500fbcd59273c116d4072cbda7bc2
  • Pointer size: 130 Bytes
  • Size of remote file: 46.3 kB
clips/galapagos/right_04.jpg ADDED

Git LFS Details

  • SHA256: 3d07b673552b8db2f6fb94184a24b86d49599c58bc4b716caa2738140a3249c7
  • Pointer size: 130 Bytes
  • Size of remote file: 46.4 kB
clips/galapagos/right_05.jpg ADDED

Git LFS Details

  • SHA256: 3fd8279acba4382f36ad40e6da5123726dc13745c975810889d21e97d5312378
  • Pointer size: 130 Bytes
  • Size of remote file: 46.4 kB
clips/galapagos/right_06.jpg ADDED

Git LFS Details

  • SHA256: 1888ff0896097f59ee2f4d1366ea78731938776775f99f08137768dd3692b6e8
  • Pointer size: 130 Bytes
  • Size of remote file: 46.7 kB
clips/galapagos/right_07.jpg ADDED

Git LFS Details

  • SHA256: da3a6fa940ab054f81f7b3e1d71adc6303e3d3fd14d8a3d65ca744ba53b103d6
  • Pointer size: 130 Bytes
  • Size of remote file: 46.8 kB
clips/galapagos/right_08.jpg ADDED

Git LFS Details

  • SHA256: 956e148129b9784a178c0993940e330cdb01f277785339039f01889000984093
  • Pointer size: 130 Bytes
  • Size of remote file: 46.4 kB
clips/galapagos/right_09.jpg ADDED

Git LFS Details

  • SHA256: af3ca0906c6e184ceeef7cca8b42312b7fcee59ca972a99b64d61e22c719cb68
  • Pointer size: 130 Bytes
  • Size of remote file: 46.3 kB
clips/galapagos/right_10.jpg ADDED

Git LFS Details

  • SHA256: c86c348431e1861f6000fbf78a2fdabd4434256cf3e30c98599dc9e9203a42bb
  • Pointer size: 130 Bytes
  • Size of remote file: 45.9 kB
clips/galapagos/right_11.jpg ADDED

Git LFS Details

  • SHA256: 777dc7929792156eb11c82d8c02ad22cec263fdc7c8b740d90fb0e018b7cf894
  • Pointer size: 130 Bytes
  • Size of remote file: 46.3 kB
clips/jurassic_world/left_00.jpg ADDED

Git LFS Details

  • SHA256: aee359909be3f3d5399869be968b3e8e842e606985bf769360fbdfdd9c27cadf
  • Pointer size: 130 Bytes
  • Size of remote file: 86 kB
clips/jurassic_world/left_01.jpg ADDED

Git LFS Details

  • SHA256: 95e41f18a2cd43734fb75531ca809e0960fff7c085fc22934a03fff9110bd220
  • Pointer size: 130 Bytes
  • Size of remote file: 84.8 kB
clips/jurassic_world/left_02.jpg ADDED

Git LFS Details

  • SHA256: 900c95e12740e4d8d23df130e3ad581e32a2a6ebd9a4e839167419405600d22b
  • Pointer size: 131 Bytes
  • Size of remote file: 135 kB
clips/jurassic_world/left_03.jpg ADDED

Git LFS Details

  • SHA256: adda4f6b89a603d3b38d55ea10ff78bf7c2ed55e01209475b9de70f122e0d7a2
  • Pointer size: 131 Bytes
  • Size of remote file: 130 kB
clips/jurassic_world/left_04.jpg ADDED

Git LFS Details

  • SHA256: 8e73f69bebc0d2521d1673bb7c1d673bd45b2291fe996e8ff360bbd1dfbcfc04
  • Pointer size: 131 Bytes
  • Size of remote file: 125 kB
clips/jurassic_world/left_05.jpg ADDED

Git LFS Details

  • SHA256: bb0e9f8ea7ab00e9e8bd119b37ddcfc2af8e04a8aa1ece744b2b7c61176681be
  • Pointer size: 131 Bytes
  • Size of remote file: 120 kB
clips/jurassic_world/left_06.jpg ADDED

Git LFS Details

  • SHA256: c1538e8e785b4fce95ae3043a8d054ef9b6713c27aae8715e3d943d20819f60b
  • Pointer size: 131 Bytes
  • Size of remote file: 119 kB
clips/jurassic_world/left_07.jpg ADDED

Git LFS Details

  • SHA256: 38a4e1d57f1b0aaa6e1e0087a6013703c43b1f150e4633843763c0ac86b0f620
  • Pointer size: 131 Bytes
  • Size of remote file: 121 kB
clips/jurassic_world/left_08.jpg ADDED

Git LFS Details

  • SHA256: d4187984da9c3433f71ca8c7d2c46ba36b5a23c22394e8df4bc05816682e64a7
  • Pointer size: 131 Bytes
  • Size of remote file: 122 kB
clips/jurassic_world/left_09.jpg ADDED

Git LFS Details

  • SHA256: 8e01864d7efa27b411cbb46b635d8db8bba92490201d6bd4bbd6836b05040771
  • Pointer size: 131 Bytes
  • Size of remote file: 123 kB
clips/jurassic_world/left_10.jpg ADDED

Git LFS Details

  • SHA256: 7c725a6a27dadbbb8e61995197c58ffed6fd7113dc3e0c57e26172d4073a7a05
  • Pointer size: 131 Bytes
  • Size of remote file: 125 kB
clips/jurassic_world/left_11.jpg ADDED

Git LFS Details

  • SHA256: 6757dccea22c35ba9f02a164972a9bda928c5d94906531a9f683b39b39efa0a1
  • Pointer size: 131 Bytes
  • Size of remote file: 128 kB
clips/jurassic_world/right_00.jpg ADDED

Git LFS Details

  • SHA256: 1382f6e8f946994d57410665d3c4c2fa9c37069de5a2e30d4a8bc0e37c4d7f08
  • Pointer size: 130 Bytes
  • Size of remote file: 85.3 kB
clips/jurassic_world/right_01.jpg ADDED

Git LFS Details

  • SHA256: e48a016a0bab31823d373dd6a04c37d30731aca44c57985046ff93b269d53beb
  • Pointer size: 130 Bytes
  • Size of remote file: 84.5 kB
clips/jurassic_world/right_02.jpg ADDED

Git LFS Details

  • SHA256: 39dfdf5c2901148958ebcc6e30aa2c098f3373f419103e79eabaf7e81272063e
  • Pointer size: 131 Bytes
  • Size of remote file: 135 kB
clips/jurassic_world/right_03.jpg ADDED

Git LFS Details

  • SHA256: 9de90e5c67b5be11a9fe9d9a2d7f560e1f8084cde3cd08c368e75d7be3ec58aa
  • Pointer size: 131 Bytes
  • Size of remote file: 129 kB
clips/jurassic_world/right_04.jpg ADDED

Git LFS Details

  • SHA256: a9db918f5d9020c4fc3783d9eeac6bba83c3990a2faca5e0878fcc8bba8eef82
  • Pointer size: 131 Bytes
  • Size of remote file: 125 kB
clips/jurassic_world/right_05.jpg ADDED

Git LFS Details

  • SHA256: 96807912a65c09cae7a3724b562091b7ae2ed3f715240618eb327a65cbff6c83
  • Pointer size: 131 Bytes
  • Size of remote file: 120 kB
clips/jurassic_world/right_06.jpg ADDED

Git LFS Details

  • SHA256: 92c8b12034b71d371b1a7b781984abf25f8e60ecbc29b07d4f4e790c634ae545
  • Pointer size: 131 Bytes
  • Size of remote file: 118 kB
clips/jurassic_world/right_07.jpg ADDED

Git LFS Details

  • SHA256: 01fc46f82ae6f5d5b62e5302cb6c05efee72e40cc1259e14d0ca2e2be9ee9120
  • Pointer size: 131 Bytes
  • Size of remote file: 121 kB
clips/jurassic_world/right_08.jpg ADDED

Git LFS Details

  • SHA256: 4d9b160f71283521046a11119802660e0f0000e30e3674975d7f302d800e303b
  • Pointer size: 131 Bytes
  • Size of remote file: 122 kB
clips/jurassic_world/right_09.jpg ADDED

Git LFS Details

  • SHA256: 9c1b495da1aee84b694118927cfce2d8f02fbe5ef304a30584bb575635a157f2
  • Pointer size: 131 Bytes
  • Size of remote file: 123 kB
clips/jurassic_world/right_10.jpg ADDED

Git LFS Details

  • SHA256: b546a6827b13afb960f359da727f372e3c9cba661e6acbc4426cd94bde9cbb30
  • Pointer size: 131 Bytes
  • Size of remote file: 126 kB
clips/jurassic_world/right_11.jpg ADDED

Git LFS Details

  • SHA256: ae68ab15ae8b6e5abdb0942c33d9f8110084a6e30854551d697399fff400aa84
  • Pointer size: 131 Bytes
  • Size of remote file: 129 kB