@@ -75,30 +75,7 @@ class FunscriptGeneratorParameter:
7575 max_threshold : float = float (HYPERPARAMETER ['max_threshold' ])
7676
7777
78- def merge_score (item : list , number_of_trackers : int ) -> list :
79- """ Merge score for given number of trackers
8078
81- Note:
82- Python multiprocessing methods use a mp.SimpleQueue to pass tasks to the worker processes.
83- Everything that goes through the mp.SimpleQueue must be pickable.
84- In python functions are only picklable if they are defined at the top-level of a module.
85-
86- Args:
87- item (list): score for each tracker
88- number_of_trackers (int): number of used tracker (pairs)
89-
90- Returns:
91- list: merged score
92- """
93- if number_of_trackers == 1 :
94- return item [0 ] if len (item ) > 0 else []
95- else :
96- max_frame_number = max ([len (item [i ]) for i in range (number_of_trackers )])
97- arr = np .ma .empty ((max_frame_number ,number_of_trackers ))
98- arr .mask = True
99- for tracker_number in range (number_of_trackers ):
100- arr [:item [tracker_number ].shape [0 ],tracker_number ] = item [tracker_number ]
101- return list (filter (None .__ne__ , arr .mean (axis = 1 ).tolist ()))
10279
10380
10481class FunscriptGeneratorThread (QtCore .QThread ):
@@ -413,17 +390,26 @@ def calculate_score(self, bboxes) -> None:
413390 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 ]])
414391
415392 self .logger .info ("Merge Scores" )
416- """
417- pool, queue = {}, {}
418- for metric in score.keys():
419- queue[metric] = mp.Queue()
420- pool[metric] = threading.Thread(target=merge_score, args=(score[metric], self.params.number_of_trackers, queue[metric], ))
421- pool[metric].start()
422393
423- for metric in score.keys():
424- pool[metric].join()
425- score[metric] = queue[metric].get()
426- """
394+ def merge_score (item : list , number_of_trackers : int ) -> list :
395+ """ Merge score for given number of trackers
396+
397+ Args:
398+ item (list): score for each tracker
399+ number_of_trackers (int): number of used tracker (pairs)
400+
401+ Returns:
402+ list: merged score
403+ """
404+ if number_of_trackers == 1 :
405+ return item [0 ] if len (item ) > 0 else []
406+ else :
407+ max_frame_number = max ([len (item [i ]) for i in range (number_of_trackers )])
408+ arr = np .ma .empty ((max_frame_number ,number_of_trackers ))
409+ arr .mask = True
410+ for tracker_number in range (number_of_trackers ):
411+ arr [:item [tracker_number ].shape [0 ],tracker_number ] = item [tracker_number ]
412+ return list (filter (None .__ne__ , arr .mean (axis = 1 ).tolist ()))
427413
428414 for metric in score .keys ():
429415 score [metric ] = merge_score (score [metric ], self .params .number_of_trackers )
0 commit comments