reab5555 commited on
Commit
5f8442e
·
verified ·
1 Parent(s): 7e53804

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -5
app.py CHANGED
@@ -331,16 +331,23 @@ def plot_emotion(df, emotion, num_anomalies, color):
331
  plt.tight_layout()
332
  return fig
333
 
334
- def get_random_face_sample(organized_faces_folder, largest_cluster):
 
 
335
  person_folder = os.path.join(organized_faces_folder, f"person_{largest_cluster}")
336
  face_files = [f for f in os.listdir(person_folder) if f.endswith('.jpg')]
337
  if face_files:
338
  random_face = np.random.choice(face_files)
339
  face_path = os.path.join(person_folder, random_face)
340
- return face_path
 
 
341
  return None
342
 
343
  def process_video(video_path, num_anomalies, num_components, desired_fps, batch_size, progress=gr.Progress()):
 
 
 
344
  with tempfile.TemporaryDirectory() as temp_dir:
345
  aligned_faces_folder = os.path.join(temp_dir, 'aligned_faces')
346
  organized_faces_folder = os.path.join(temp_dir, 'organized_faces')
@@ -396,8 +403,8 @@ def process_video(video_path, num_anomalies, num_components, desired_fps, batch_
396
  return f"Error generating plots: {str(e)}", None, None, None, None, None, None
397
 
398
  # Get a random face sample
399
- face_sample = get_random_face_sample(organized_faces_folder, largest_cluster)
400
-
401
  progress(1.0, "Preparing results")
402
  results = f"Top {num_anomalies} anomalies (All Features):\n"
403
  results += "\n".join([f"{score:.4f} at {timecode}" for score, timecode in
@@ -425,7 +432,7 @@ iface = gr.Interface(
425
  ],
426
  outputs=[
427
  gr.Textbox(label="Anomaly Detection Results"),
428
- gr.Image(label="Random Face Sample of Most Frequent Person"),
429
  gr.Plot(label="Anomaly Scores (All Features)"),
430
  gr.Plot(label="Anomaly Scores (Components Only)"),
431
  gr.Plot(label="Fear Scores"),
 
331
  plt.tight_layout()
332
  return fig
333
 
334
+ import base64
335
+
336
+ def get_random_face_sample(organized_faces_folder, largest_cluster, output_folder):
337
  person_folder = os.path.join(organized_faces_folder, f"person_{largest_cluster}")
338
  face_files = [f for f in os.listdir(person_folder) if f.endswith('.jpg')]
339
  if face_files:
340
  random_face = np.random.choice(face_files)
341
  face_path = os.path.join(person_folder, random_face)
342
+ output_path = os.path.join(output_folder, "random_face_sample.jpg")
343
+ shutil.copy(face_path, output_path)
344
+ return output_path
345
  return None
346
 
347
  def process_video(video_path, num_anomalies, num_components, desired_fps, batch_size, progress=gr.Progress()):
348
+ output_folder = "output"
349
+ os.makedirs(output_folder, exist_ok=True)
350
+
351
  with tempfile.TemporaryDirectory() as temp_dir:
352
  aligned_faces_folder = os.path.join(temp_dir, 'aligned_faces')
353
  organized_faces_folder = os.path.join(temp_dir, 'organized_faces')
 
403
  return f"Error generating plots: {str(e)}", None, None, None, None, None, None
404
 
405
  # Get a random face sample
406
+ face_sample = get_random_face_sample(organized_faces_folder, largest_cluster, output_folder)
407
+
408
  progress(1.0, "Preparing results")
409
  results = f"Top {num_anomalies} anomalies (All Features):\n"
410
  results += "\n".join([f"{score:.4f} at {timecode}" for score, timecode in
 
432
  ],
433
  outputs=[
434
  gr.Textbox(label="Anomaly Detection Results"),
435
+ gr.Image(type="filepath", label="Random Face Sample of Most Frequent Person"),
436
  gr.Plot(label="Anomaly Scores (All Features)"),
437
  gr.Plot(label="Anomaly Scores (Components Only)"),
438
  gr.Plot(label="Fear Scores"),