3232
3333import funscript_editor .algorithms .signalprocessing as sp
3434import numpy as np
35- import multiprocessing as mp
36- import threading
3735
3836@dataclass
3937class FunscriptGeneratorParameter :
@@ -77,7 +75,7 @@ class FunscriptGeneratorParameter:
7775 max_threshold : float = float (HYPERPARAMETER ['max_threshold' ])
7876
7977
80- def merge_score (item : list , number_of_trackers : int , return_queue : mp . Queue ) -> None :
78+ def merge_score (item : list , number_of_trackers : int ) -> list :
8179 """ Merge score for given number of trackers
8280
8381 Note:
@@ -88,20 +86,19 @@ def merge_score(item: list, number_of_trackers: int, return_queue: mp.Queue) ->
8886 Args:
8987 item (list): score for each tracker
9088 number_of_trackers (int): number of used tracker (pairs)
91- return_queue (mp.Queue): queue for return value
9289
9390 Returns:
9491 list: merged score
9592 """
9693 if number_of_trackers == 1 :
97- return_queue . put ( item [0 ] if len (item ) > 0 else [])
94+ return item [0 ] if len (item ) > 0 else []
9895 else :
9996 max_frame_number = max ([len (item [i ]) for i in range (number_of_trackers )])
10097 arr = np .ma .empty ((max_frame_number ,number_of_trackers ))
10198 arr .mask = True
10299 for tracker_number in range (number_of_trackers ):
103100 arr [:item [tracker_number ].shape [0 ],tracker_number ] = item [tracker_number ]
104- return_queue . put ( list (filter (None .__ne__ , arr .mean (axis = 1 ).tolist () )))
101+ return list (filter (None .__ne__ , arr .mean (axis = 1 ).tolist ()))
105102
106103
107104class FunscriptGeneratorThread (QtCore .QThread ):
@@ -416,6 +413,7 @@ def calculate_score(self, bboxes) -> None:
416413 score ['y' ][tracker_number ] = np .array ([max ([x [1 ] for x in bboxes ['Woman' ][tracker_number ]]) - w [1 ] for w in bboxes ['Woman' ][tracker_number ]])
417414
418415 self .logger .info ("Merge Scores" )
416+ """
419417 pool, queue = {}, {}
420418 for metric in score.keys():
421419 queue[metric] = mp.Queue()
@@ -425,6 +423,10 @@ def calculate_score(self, bboxes) -> None:
425423 for metric in score.keys():
426424 pool[metric].join()
427425 score[metric] = queue[metric].get()
426+ """
427+
428+ for metric in score .keys ():
429+ score [metric ] = merge_score (score [metric ], self .params .number_of_trackers )
428430
429431 self .logger .info ("Scale Score to 0 - 100" )
430432 for metric in score .keys ():
@@ -989,6 +991,11 @@ def tracking(self) -> str:
989991 if video .isTimeout ():
990992 status = "Reach a corrupt video frame"
991993
994+ for i in range (self .params .number_of_trackers ):
995+ trackers_woman [i ].stop ()
996+ if self .params .track_men :
997+ trackers_men [i ].stop ()
998+
992999 self .__show_loading_screen (first_frame .shape )
9931000 self .logger .info ("Raw tracking data: %d Tracking points for %d seconds of the video" , len (bboxes ["Woman" ]), int (len (bboxes ["Woman" ])* (self .params .skip_frames + 1 )/ self .video_info .fps ))
9941001 video .stop ()
0 commit comments