reab5555 commited on
Commit
42597fe
·
verified ·
1 Parent(s): 5e4991f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -20
app.py CHANGED
@@ -20,14 +20,12 @@ import tempfile
20
  import shutil
21
  import subprocess
22
  import fractions
23
- import spaces
24
 
25
  # Suppress TensorFlow warnings
26
  os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
27
  import tensorflow as tf
28
  tf.get_logger().setLevel('ERROR')
29
 
30
-
31
  # Initialize models and other global variables
32
  device = 'cuda' if torch.cuda.is_available() else 'cpu'
33
 
@@ -93,12 +91,6 @@ def extract_frames(video_path, output_folder, fps):
93
  '-vf', f'fps={fps}',
94
  f'{output_folder}/frame_%04d.jpg'
95
  ]
96
-
97
- print(f"FFmpeg command: {command}")
98
-
99
- if any(arg is None for arg in command):
100
- raise ValueError(f"None value found in FFmpeg command: {command}")
101
-
102
  try:
103
  result = subprocess.run(command, check=True, capture_output=True, text=True)
104
  print(f"FFmpeg stdout: {result.stdout}")
@@ -339,6 +331,8 @@ def plot_emotion(df, emotion, num_anomalies, color):
339
  plt.tight_layout()
340
  return fig
341
 
 
 
342
  def get_random_face_sample(organized_faces_folder, largest_cluster, output_folder):
343
  person_folder = os.path.join(organized_faces_folder, f"person_{largest_cluster}")
344
  face_files = [f for f in os.listdir(person_folder) if f.endswith('.jpg')]
@@ -349,22 +343,13 @@ def get_random_face_sample(organized_faces_folder, largest_cluster, output_folde
349
 
350
  # Read the image and resize it to be smaller
351
  face_img = cv2.imread(face_path)
352
- small_face = cv2.resize(face_img, (100, 100)) # Resize to 100x100 pixels
353
  cv2.imwrite(output_path, small_face)
354
 
355
  return output_path
356
  return None
357
 
358
  def process_video(video_path, num_anomalies, num_components, desired_fps, batch_size, progress=gr.Progress()):
359
- print(f"Video path: {video_path}")
360
- print(f"Num anomalies: {num_anomalies}")
361
- print(f"Num components: {num_components}")
362
- print(f"Desired FPS: {desired_fps}")
363
- print(f"Batch size: {batch_size}")
364
-
365
- if not os.path.exists(video_path):
366
- raise FileNotFoundError(f"Video file not found: {video_path}")
367
-
368
  output_folder = "output"
369
  os.makedirs(output_folder, exist_ok=True)
370
 
@@ -405,7 +390,7 @@ def process_video(video_path, num_anomalies, num_components, desired_fps, batch_
405
  try:
406
  anomalies_all, anomaly_scores_all, top_indices_all, anomalies_comp, anomaly_scores_comp, top_indices_comp, _ = lstm_anomaly_detection(X, feature_columns, num_anomalies=num_anomalies, batch_size=batch_size)
407
  except Exception as e:
408
- print(f"Error in anomaly detection: {str(e)}")
409
  print(f"X shape: {X.shape}")
410
  print(f"X dtype: {X.dtype}")
411
  return f"Error in anomaly detection: {str(e)}", None, None, None, None, None, None
@@ -425,6 +410,7 @@ def process_video(video_path, num_anomalies, num_components, desired_fps, batch_
425
  except Exception as e:
426
  return f"Error generating plots: {str(e)}", None, None, None, None, None, None, None, None, None
427
 
 
428
  # Get a random face sample
429
  face_sample = get_random_face_sample(organized_faces_folder, largest_cluster, output_folder)
430
 
@@ -442,7 +428,7 @@ def process_video(video_path, num_anomalies, num_components, desired_fps, batch_
442
  results += "\n".join([f"{df[emotion].iloc[i]:.4f} at {df['Timecode'].iloc[i]}" for i in top_indices])
443
 
444
  return results, face_sample, anomaly_plot_all, anomaly_plot_comp, *emotion_plots
445
-
446
  # Gradio interface
447
  iface = gr.Interface(
448
  fn=process_video,
 
20
  import shutil
21
  import subprocess
22
  import fractions
 
23
 
24
  # Suppress TensorFlow warnings
25
  os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
26
  import tensorflow as tf
27
  tf.get_logger().setLevel('ERROR')
28
 
 
29
  # Initialize models and other global variables
30
  device = 'cuda' if torch.cuda.is_available() else 'cpu'
31
 
 
91
  '-vf', f'fps={fps}',
92
  f'{output_folder}/frame_%04d.jpg'
93
  ]
 
 
 
 
 
 
94
  try:
95
  result = subprocess.run(command, check=True, capture_output=True, text=True)
96
  print(f"FFmpeg stdout: {result.stdout}")
 
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')]
 
343
 
344
  # Read the image and resize it to be smaller
345
  face_img = cv2.imread(face_path)
346
+ small_face = cv2.resize(face_img, (100, 100)) # Resize to NxN pixels
347
  cv2.imwrite(output_path, small_face)
348
 
349
  return output_path
350
  return None
351
 
352
  def process_video(video_path, num_anomalies, num_components, desired_fps, batch_size, progress=gr.Progress()):
 
 
 
 
 
 
 
 
 
353
  output_folder = "output"
354
  os.makedirs(output_folder, exist_ok=True)
355
 
 
390
  try:
391
  anomalies_all, anomaly_scores_all, top_indices_all, anomalies_comp, anomaly_scores_comp, top_indices_comp, _ = lstm_anomaly_detection(X, feature_columns, num_anomalies=num_anomalies, batch_size=batch_size)
392
  except Exception as e:
393
+ print(f"Error details: {str(e)}")
394
  print(f"X shape: {X.shape}")
395
  print(f"X dtype: {X.dtype}")
396
  return f"Error in anomaly detection: {str(e)}", None, None, None, None, None, None
 
410
  except Exception as e:
411
  return f"Error generating plots: {str(e)}", None, None, None, None, None, None, None, None, None
412
 
413
+
414
  # Get a random face sample
415
  face_sample = get_random_face_sample(organized_faces_folder, largest_cluster, output_folder)
416
 
 
428
  results += "\n".join([f"{df[emotion].iloc[i]:.4f} at {df['Timecode'].iloc[i]}" for i in top_indices])
429
 
430
  return results, face_sample, anomaly_plot_all, anomaly_plot_comp, *emotion_plots
431
+
432
  # Gradio interface
433
  iface = gr.Interface(
434
  fn=process_video,