Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -331,16 +331,23 @@ def plot_emotion(df, emotion, num_anomalies, color):
|
|
| 331 |
plt.tight_layout()
|
| 332 |
return fig
|
| 333 |
|
| 334 |
-
|
|
|
|
|
|
|
| 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 |
-
|
|
|
|
|
|
|
| 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"),
|