Commit
Β·
2db5685
1
Parent(s):
007e35f
Summary
Browse files- app.py +10 -1
- app/app_utils.py +10 -7
app.py
CHANGED
|
@@ -53,7 +53,16 @@ with gr.Blocks(css="app.css") as demo:
|
|
| 53 |
output_statistics = gr.Plot(label="Statistics of emotions", elem_classes="stat")
|
| 54 |
gr.Examples(
|
| 55 |
["videos/video1.mp4",
|
| 56 |
-
"videos/video2.mp4"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
[input_video],
|
| 58 |
)
|
| 59 |
|
|
|
|
| 53 |
output_statistics = gr.Plot(label="Statistics of emotions", elem_classes="stat")
|
| 54 |
gr.Examples(
|
| 55 |
["videos/video1.mp4",
|
| 56 |
+
"videos/video2.mp4",
|
| 57 |
+
"new_videos/01.mp4",
|
| 58 |
+
"new_videos/02.mp4",
|
| 59 |
+
"new_videos/14.mp4",
|
| 60 |
+
"new_videos/16.mp4",
|
| 61 |
+
"new_videos/20.mp4",
|
| 62 |
+
"new_videos/36.mp4",
|
| 63 |
+
"new_videos/38.mp4",
|
| 64 |
+
"new_videos/45.mp4",
|
| 65 |
+
],
|
| 66 |
[input_video],
|
| 67 |
)
|
| 68 |
|
app/app_utils.py
CHANGED
|
@@ -44,11 +44,12 @@ def preprocess_image_and_predict(inp):
|
|
| 44 |
startX, startY, endX, endY = get_box(fl, w, h)
|
| 45 |
cur_face = inp[startY:endY, startX:endX]
|
| 46 |
cur_face_n = pth_processing(Image.fromarray(cur_face))
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
|
|
|
| 52 |
confidences = {DICT_EMO[i]: float(prediction[i]) for i in range(7)}
|
| 53 |
grayscale_cam = cam(input_tensor=cur_face_n)
|
| 54 |
grayscale_cam = grayscale_cam[0, :]
|
|
@@ -104,7 +105,8 @@ def preprocess_video_and_predict(video):
|
|
| 104 |
|
| 105 |
if count_face%config_data.FRAME_DOWNSAMPLING == 0:
|
| 106 |
cur_face_copy = pth_processing(Image.fromarray(cur_face))
|
| 107 |
-
|
|
|
|
| 108 |
|
| 109 |
grayscale_cam = cam(input_tensor=cur_face_copy)
|
| 110 |
grayscale_cam = grayscale_cam[0, :]
|
|
@@ -120,7 +122,8 @@ def preprocess_video_and_predict(video):
|
|
| 120 |
|
| 121 |
lstm_f = torch.from_numpy(np.vstack(lstm_features))
|
| 122 |
lstm_f = torch.unsqueeze(lstm_f, 0)
|
| 123 |
-
|
|
|
|
| 124 |
last_output = output
|
| 125 |
|
| 126 |
if count_face == 0:
|
|
|
|
| 44 |
startX, startY, endX, endY = get_box(fl, w, h)
|
| 45 |
cur_face = inp[startY:endY, startX:endX]
|
| 46 |
cur_face_n = pth_processing(Image.fromarray(cur_face))
|
| 47 |
+
with torch.no_grad():
|
| 48 |
+
prediction = (
|
| 49 |
+
torch.nn.functional.softmax(pth_model_static(cur_face_n), dim=1)
|
| 50 |
+
.detach()
|
| 51 |
+
.numpy()[0]
|
| 52 |
+
)
|
| 53 |
confidences = {DICT_EMO[i]: float(prediction[i]) for i in range(7)}
|
| 54 |
grayscale_cam = cam(input_tensor=cur_face_n)
|
| 55 |
grayscale_cam = grayscale_cam[0, :]
|
|
|
|
| 105 |
|
| 106 |
if count_face%config_data.FRAME_DOWNSAMPLING == 0:
|
| 107 |
cur_face_copy = pth_processing(Image.fromarray(cur_face))
|
| 108 |
+
with torch.no_grad():
|
| 109 |
+
features = torch.nn.functional.relu(pth_model_static.extract_features(cur_face_copy)).detach().numpy()
|
| 110 |
|
| 111 |
grayscale_cam = cam(input_tensor=cur_face_copy)
|
| 112 |
grayscale_cam = grayscale_cam[0, :]
|
|
|
|
| 122 |
|
| 123 |
lstm_f = torch.from_numpy(np.vstack(lstm_features))
|
| 124 |
lstm_f = torch.unsqueeze(lstm_f, 0)
|
| 125 |
+
with torch.no_grad():
|
| 126 |
+
output = pth_model_dynamic(lstm_f).detach().numpy()
|
| 127 |
last_output = output
|
| 128 |
|
| 129 |
if count_face == 0:
|