chris10 commited on
Commit
6e677b9
1 Parent(s): bdb99e6

updated app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -16
app.py CHANGED
@@ -49,18 +49,19 @@ def get_frames(video_in, trim_in):
49
  return frames, fps
50
 
51
 
52
- def change_model(model_slider, files):
53
- if files is None:
54
  return None, None
55
 
56
- if model_slider >= len(files):
57
- model_slider = len(files)
58
 
59
  idx = int(model_slider - 1)
60
 
61
- mesh_path = files[idx]
 
62
 
63
- return model_slider, mesh_path
64
 
65
 
66
  def infer(video_inp, trim_in, threshold):
@@ -81,10 +82,10 @@ def infer(video_inp, trim_in, threshold):
81
 
82
  temp_folder = f'temp/{next(tempfile._get_candidate_names())}'
83
 
84
- event_frame_vid_path = f'{temp_folder}/event_video.mp4'
85
  mesh_folder = f'{temp_folder}/meshes'
86
 
87
- os.makedirs(temp_folder, exist_ok=True)
88
  os.makedirs(mesh_folder, exist_ok=True)
89
 
90
  mesh_paths = list()
@@ -109,11 +110,13 @@ def infer(video_inp, trim_in, threshold):
109
  mesh_paths.append(mesh_path)
110
 
111
  event_frame = data['event_frame'].cpu().numpy().astype(dtype=np.uint8)
112
- event_frames.append(event_frame)
 
 
113
 
114
- create_video(event_frames, fps, event_frame_vid_path)
115
 
116
- return event_frame_vid_path, mesh_paths, mesh_paths[0]
117
 
118
 
119
  with gr.Blocks(css='style.css') as demo:
@@ -125,6 +128,15 @@ with gr.Blocks(css='style.css') as demo:
125
  </div>
126
  """
127
  )
 
 
 
 
 
 
 
 
 
128
  gr.Markdown(
129
  """
130
  <p align="center">
@@ -154,7 +166,7 @@ with gr.Blocks(css='style.css') as demo:
154
  video_inp = gr.Video(label="Video source", elem_id="input-vid")
155
  with gr.Row():
156
  trim_in = gr.Slider(label="Cut video at (s)", minimum=1, maximum=5, step=1, value=1)
157
- threshold = gr.Slider(label="Event Threshold", minimum=0.1, maximum=1, step=0.05, value=0.5)
158
 
159
  gr.Examples(
160
  examples=[os.path.join(os.path.dirname(__file__), "examples/video.mp4")],
@@ -163,9 +175,10 @@ with gr.Blocks(css='style.css') as demo:
163
 
164
 
165
  with gr.Column():
166
- event_frame_out = gr.Video(label="Event Frame", elem_id="video-output")
 
167
 
168
- files = gr.Files(visible=False, label='3D Mesh Files')
169
  prediction_out = gr.Model3D(clear_color=[0.0, 0.0, 0.0, 0.0], label="Ev2Hands result")
170
  model_slider = gr.Slider(minimum=1, step=1, label="Frame Number")
171
 
@@ -177,9 +190,9 @@ with gr.Blocks(css='style.css') as demo:
177
  submit_btn = gr.Button("Run Ev2Hands")
178
 
179
  inputs = [video_inp, trim_in, threshold]
180
- outputs = [event_frame_out, files, prediction_out]
181
 
182
  submit_btn.click(infer, inputs, outputs)
183
- model_slider.change(change_model, [model_slider, files], [model_slider, prediction_out])
184
 
185
  demo.queue(max_size=12).launch(server_name="0.0.0.0", server_port=7860)
 
49
  return frames, fps
50
 
51
 
52
+ def change_model(model_slider, eventframe_files, mesh_files):
53
+ if mesh_files is None:
54
  return None, None
55
 
56
+ if model_slider >= len(mesh_files):
57
+ model_slider = len(mesh_files)
58
 
59
  idx = int(model_slider - 1)
60
 
61
+ event_frame_path = eventframe_files[idx]
62
+ mesh_path = mesh_files[idx]
63
 
64
+ return model_slider, event_frame_path, mesh_path
65
 
66
 
67
  def infer(video_inp, trim_in, threshold):
 
82
 
83
  temp_folder = f'temp/{next(tempfile._get_candidate_names())}'
84
 
85
+ event_frame_folder = f'{temp_folder}/event_frames'
86
  mesh_folder = f'{temp_folder}/meshes'
87
 
88
+ os.makedirs(event_frame_folder, exist_ok=True)
89
  os.makedirs(mesh_folder, exist_ok=True)
90
 
91
  mesh_paths = list()
 
110
  mesh_paths.append(mesh_path)
111
 
112
  event_frame = data['event_frame'].cpu().numpy().astype(dtype=np.uint8)
113
+
114
+ event_frame_path = f'{event_frame_folder}/{idx}.jpg'
115
+ cv2.imwrite(event_frame_path, event_frame)
116
 
117
+ event_frames.append(event_frame_path)
118
 
119
+ return event_frames, event_frames[0], mesh_paths, mesh_paths[0]
120
 
121
 
122
  with gr.Blocks(css='style.css') as demo:
 
128
  </div>
129
  """
130
  )
131
+ gr.Markdown(
132
+ """
133
+ <div align="center">
134
+ <h4>
135
+ Note: The model's performance may be suboptimal as the Event Stream derived from the input video inadequately reflects the characteristics of an event stream generated by an event camera. 🚫📹
136
+ </h4>
137
+ </div>
138
+ """
139
+ )
140
  gr.Markdown(
141
  """
142
  <p align="center">
 
166
  video_inp = gr.Video(label="Video source", elem_id="input-vid")
167
  with gr.Row():
168
  trim_in = gr.Slider(label="Cut video at (s)", minimum=1, maximum=5, step=1, value=1)
169
+ threshold = gr.Slider(label="Event Threshold", minimum=0.1, maximum=1, step=0.05, value=0.8)
170
 
171
  gr.Examples(
172
  examples=[os.path.join(os.path.dirname(__file__), "examples/video.mp4")],
 
175
 
176
 
177
  with gr.Column():
178
+ eventframe_files = gr.Files(visible=False, label='Event frame paths')
179
+ mesh_files = gr.Files(visible=False, label='3D Mesh Files')
180
 
181
+ event_frame = gr.Image(label="Event Frame")
182
  prediction_out = gr.Model3D(clear_color=[0.0, 0.0, 0.0, 0.0], label="Ev2Hands result")
183
  model_slider = gr.Slider(minimum=1, step=1, label="Frame Number")
184
 
 
190
  submit_btn = gr.Button("Run Ev2Hands")
191
 
192
  inputs = [video_inp, trim_in, threshold]
193
+ outputs = [eventframe_files, event_frame, mesh_files, prediction_out]
194
 
195
  submit_btn.click(infer, inputs, outputs)
196
+ model_slider.change(change_model, [model_slider, eventframe_files, mesh_files], [model_slider, event_frame, prediction_out])
197
 
198
  demo.queue(max_size=12).launch(server_name="0.0.0.0", server_port=7860)