Skip to content

Commit faf003b

Browse files
author
arch
committed
add additional points repetitions
1 parent 1fc7c5d commit faf003b

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed

funscript_editor/algorithms/signal.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class SignalParameter:
2020
distance_minimization_threshold: float = float(HYPERPARAMETER['signal']['distance_minimization_threshold'])
2121
high_second_derivative_points_threshold: float = float(HYPERPARAMETER['signal']['high_second_derivative_points_threshold'])
2222
direction_change_filter_len: int = int(HYPERPARAMETER['signal']['direction_change_filter_len'])
23+
additional_points_repetitions: int = int(HYPERPARAMETER['signal']['additional_points_repetitions'])
2324

2425

2526
class Signal:
@@ -570,16 +571,23 @@ def decimate(self,
570571
else:
571572
raise NotImplementedError("Selected Base Point Algorithm is not implemented")
572573

573-
for algo in additional_points_algorithms:
574-
if algo == self.AdditionalPointAlgorithm.high_second_derivative:
575-
additional_indexes = self.get_high_second_derivative_points(signal, alpha = self.params.high_second_derivative_points_threshold)
576-
elif algo == self.AdditionalPointAlgorithm.distance_minimization:
577-
additional_indexes = self.get_edge_points(signal, decimated_indexes, threshold = self.params.distance_minimization_threshold)
578-
else:
579-
raise NotImplementedError("Selected Additional Points Algorithm is not implemented")
574+
for run_idx in range(self.params.additional_points_repetitions):
575+
self.logger.info("Run Additional Points Algorithms #%d", run_idx+1)
576+
len_before_merge = len(decimated_indexes)
577+
for algo in additional_points_algorithms:
578+
if algo == self.AdditionalPointAlgorithm.high_second_derivative:
579+
additional_indexes = self.get_high_second_derivative_points(signal, alpha = self.params.high_second_derivative_points_threshold)
580+
elif algo == self.AdditionalPointAlgorithm.distance_minimization:
581+
additional_indexes = self.get_edge_points(signal, decimated_indexes, threshold = self.params.distance_minimization_threshold)
582+
else:
583+
raise NotImplementedError("Selected Additional Points Algorithm is not implemented")
584+
585+
if len(additional_indexes) > 0:
586+
decimated_indexes = self.merge_points(signal, decimated_indexes, additional_indexes)
580587

581-
if len(additional_indexes) > 0:
582-
decimated_indexes = self.merge_points(signal, decimated_indexes, additional_indexes)
588+
if len_before_merge >= len(decimated_indexes):
589+
self.logger.info("Additional Points Early Stop")
590+
break
583591

584592
if len(decimated_indexes) == 0 and len(signal) > 100:
585593
self.logger.info("Insert start and end point")

funscript_editor/config/hyperparameter.yaml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ signal:
2323
avg_sec_for_local_min_max_extraction: 2.0
2424

2525
# threshold value to predict an distance minimization point candidate
26-
distance_minimization_threshold: 20.0
26+
distance_minimization_threshold: 16.0
2727

2828
# threshold value tor get additional points by comparing second derivative with the rolling standard deviation and given threshold
2929
high_second_derivative_points_threshold: 1.2
@@ -32,10 +32,13 @@ signal:
3232
direction_change_filter_len: 3
3333

3434
# threshold value in milliseconds to merge additional points
35-
additional_points_merge_time_threshold_in_ms: 70
35+
additional_points_merge_time_threshold_in_ms: 60
3636

3737
# threshold value to merge additional points
38-
additional_points_merge_distance_threshold: 10.0
38+
additional_points_merge_distance_threshold: 8.0
39+
40+
# number of runs for the additional points algorithm (max number of points that will be insert between 2 base points)
41+
additional_points_repetitions: 2
3942

4043

4144
# Scene Detector Hyperparameter

0 commit comments

Comments
 (0)