Maksym-Lysyi commited on
Commit
d34196f
·
1 Parent(s): e3641b1

add download button for logs

Browse files
Files changed (4) hide show
  1. .gitignore +3 -0
  2. app.py +5 -2
  3. main_func.py +41 -7
  4. utils.py +2 -2
.gitignore CHANGED
@@ -2,4 +2,7 @@ __pycache__
2
  pose_env_1
3
  testing
4
  vit_env
 
5
  test_vit_model.ipynb
 
 
 
2
  pose_env_1
3
  testing
4
  vit_env
5
+ models
6
  test_vit_model.ipynb
7
+ logs/*.txt
8
+ videos/*.mp4
app.py CHANGED
@@ -104,12 +104,15 @@ with gr.Blocks() as demo:
104
  output_merged = gr.Video(show_download_button=True)
105
 
106
  with gr.Row():
107
- general_log = gr.TextArea(lines=10, max_lines=9999, label="Error log")
 
 
 
108
 
109
  gr_button.click(
110
  fn=video_identity,
111
  inputs=[dtw_mean, dtw_filter, angles_sensitive, angles_common, angles_insensitive, trigger_state, input_teacher, input_student],
112
- outputs=[output_merged, general_log]
113
  )
114
 
115
 
 
104
  output_merged = gr.Video(show_download_button=True)
105
 
106
  with gr.Row():
107
+ general_log = gr.TextArea(lines=10, label="Error log", scale=3)
108
+ text_log=gr.File(label="Download logs and settings", scale=1)
109
+
110
+
111
 
112
  gr_button.click(
113
  fn=video_identity,
114
  inputs=[dtw_mean, dtw_filter, angles_sensitive, angles_common, angles_insensitive, trigger_state, input_teacher, input_student],
115
+ outputs=[output_merged, general_log, text_log]
116
  )
117
 
118
 
main_func.py CHANGED
@@ -21,6 +21,7 @@ from dtaidistance import dtw
21
  import numpy as np
22
  from scipy.signal import savgol_filter
23
  from scipy.stats import mstats
 
24
  from datetime import timedelta
25
  import cv2
26
 
@@ -31,15 +32,15 @@ def video_identity(dtw_mean, dtw_filter, angles_sensitive, angles_common, angles
31
 
32
  detection_result_teacher = predict_keypoints_vitpose(
33
  video_path=video_teacher,
34
- model_path="models/vitpose-l-wholebody.pth",
35
- model_name="l",
36
  detector_path="models/yolov8s.pt"
37
  )
38
 
39
  detection_result_student = predict_keypoints_vitpose(
40
  video_path=video_student,
41
- model_path="models/vitpose-l-wholebody.pth",
42
- model_name="l",
43
  detector_path="models/yolov8s.pt"
44
  )
45
 
@@ -143,10 +144,13 @@ def video_identity(dtw_mean, dtw_filter, angles_sensitive, angles_common, angles
143
 
144
 
145
  concat_video = np.concatenate((save_teacher_frames_resized, save_student_frames_resized), axis=2)
146
-
147
  concat_video = np.array(concat_video)
148
 
149
- out = cv2.VideoWriter("videos/concat_modified.mp4", cv2.VideoWriter_fourcc(*'mp4v'), 30, (1280*2, 720))
 
 
 
 
150
  for frame in concat_video:
151
  out.write(frame)
152
  out.release()
@@ -164,6 +168,36 @@ def video_identity(dtw_mean, dtw_filter, angles_sensitive, angles_common, angles
164
 
165
  general_summary.append(f"{comment} on frame {frame}. Video time: {str(timedelta(seconds=total_seconds))[3:-4]}")
166
 
 
167
  general_summary = "\n".join(general_summary)
168
 
169
- return "videos/concat_modified.mp4", general_summary
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  import numpy as np
22
  from scipy.signal import savgol_filter
23
  from scipy.stats import mstats
24
+ import datetime
25
  from datetime import timedelta
26
  import cv2
27
 
 
32
 
33
  detection_result_teacher = predict_keypoints_vitpose(
34
  video_path=video_teacher,
35
+ model_path="models/vitpose-b-wholebody.pth",
36
+ model_name="b",
37
  detector_path="models/yolov8s.pt"
38
  )
39
 
40
  detection_result_student = predict_keypoints_vitpose(
41
  video_path=video_student,
42
+ model_path="models/vitpose-b-wholebody.pth",
43
+ model_name="b",
44
  detector_path="models/yolov8s.pt"
45
  )
46
 
 
144
 
145
 
146
  concat_video = np.concatenate((save_teacher_frames_resized, save_student_frames_resized), axis=2)
 
147
  concat_video = np.array(concat_video)
148
 
149
+ current_time = datetime.datetime.now()
150
+ timestamp_str = current_time.strftime("%Y_%m-%d_%H_%M_%S")
151
+ video_path = f"videos/pose_{timestamp_str}.mp4"
152
+
153
+ out = cv2.VideoWriter(video_path, cv2.VideoWriter_fourcc(*'mp4v'), 30, (1280*2, 720))
154
  for frame in concat_video:
155
  out.write(frame)
156
  out.release()
 
168
 
169
  general_summary.append(f"{comment} on frame {frame}. Video time: {str(timedelta(seconds=total_seconds))[3:-4]}")
170
 
171
+
172
  general_summary = "\n".join(general_summary)
173
 
174
+ log_path = f"logs/log_{timestamp_str}.txt"
175
+
176
+
177
+ content = f"""
178
+ Settings:
179
+
180
+ Dynamic Time Warping:
181
+ - Winsorize mean: {dtw_mean}
182
+ - Savitzky-Golay Filter: {dtw_filter}
183
+
184
+ Thresholds:
185
+ - Sensitive: {angles_sensitive}
186
+ - Standart: {angles_common}
187
+ - Insensitive: {angles_insensitive}
188
+
189
+ Patience:
190
+ - trigger count: {trigger_state}
191
+
192
+
193
+ Error logs:
194
+
195
+ {general_summary}
196
+ """
197
+
198
+ with open(log_path, "w") as file:
199
+ file.write(content)
200
+
201
+
202
+
203
+ return video_path, general_summary, log_path
utils.py CHANGED
@@ -393,10 +393,10 @@ def download_file(url, save_path):
393
 
394
  def check_and_download_models():
395
 
396
- vit_model_url = "https://huggingface.co/JunkyByte/easy_ViTPose/resolve/main/torch/wholebody/vitpose-l-wholebody.pth?download=true"
397
  yolo_model_url = "https://huggingface.co/JunkyByte/easy_ViTPose/resolve/main/yolov8/yolov8s.pt?download=true"
398
 
399
- vit_model_path = "models/vitpose-l-wholebody.pth"
400
 
401
  yolo_model_path = "models/yolov8s.pt"
402
 
 
393
 
394
  def check_and_download_models():
395
 
396
+ vit_model_url = "https://huggingface.co/JunkyByte/easy_ViTPose/resolve/main/torch/wholebody/vitpose-b-wholebody.pth?download=true"
397
  yolo_model_url = "https://huggingface.co/JunkyByte/easy_ViTPose/resolve/main/yolov8/yolov8s.pt?download=true"
398
 
399
+ vit_model_path = "models/vitpose-b-wholebody.pth"
400
 
401
  yolo_model_path = "models/yolov8s.pt"
402