Skip to content

Commit e8afc9c

Browse files
author
arch
committed
improve process speed for 1 tracker
1 parent a3a7857 commit e8afc9c

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

funscript_editor/algorithms/funscriptgenerator.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -383,18 +383,21 @@ def calculate_score(self, bboxes) -> None:
383383
score['x'][tracker_number] = np.array([w[0] - min([x[0] for x in bboxes['Woman'][tracker_number]]) for w in bboxes['Woman'][tracker_number]])
384384
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]])
385385

386-
def get_mean(item):
387-
max_frame_number = max([len(item[i]) for i in range(self.params.number_of_trackers)])
388-
arr = np.ma.empty((max_frame_number,self.params.number_of_trackers))
389-
arr.mask = True
390-
for tracker_number in range(self.params.number_of_trackers):
391-
arr[:item[tracker_number].shape[0],tracker_number] = item[tracker_number]
392-
return list(filter(None.__ne__, arr.mean(axis=1).tolist()))
393-
394-
self.score['x'] = sp.scale_signal(get_mean(score['x']), 0, 100)
395-
self.score['y'] = sp.scale_signal(get_mean(score['y']), 0, 100)
396-
self.score['distance'] = sp.scale_signal(get_mean(score['distance']), 0, 100)
397-
self.score['roll'] = sp.scale_signal(get_mean(score['roll']), 0, 100)
386+
def get_mean(item, number_of_trackers) -> list:
387+
if number_of_trackers == 1:
388+
return item[0] if len(item) > 0 else []
389+
else:
390+
max_frame_number = max([len(item[i]) for i in range(number_of_trackers)])
391+
arr = np.ma.empty((max_frame_number,number_of_trackers))
392+
arr.mask = True
393+
for tracker_number in range(number_of_trackers):
394+
arr[:item[tracker_number].shape[0],tracker_number] = item[tracker_number]
395+
return list(filter(None.__ne__, arr.mean(axis=1).tolist()))
396+
397+
self.score['x'] = sp.scale_signal(get_mean(score['x'], self.params.number_of_trackers), 0, 100)
398+
self.score['y'] = sp.scale_signal(get_mean(score['y'], self.params.number_of_trackers), 0, 100)
399+
self.score['distance'] = sp.scale_signal(get_mean(score['distance'], self.params.number_of_trackers), 0, 100)
400+
self.score['roll'] = sp.scale_signal(get_mean(score['roll'], self.params.number_of_trackers), 0, 100)
398401

399402

400403
def scale_score(self, status: str, metric : str = 'y') -> None:

0 commit comments

Comments
 (0)