You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.3 KiB
Python
59 lines
1.3 KiB
Python
def required_track_score(
|
|
*,
|
|
confirmed,
|
|
is_switch_candidate,
|
|
weak_reacq_guard,
|
|
acquire_floor=0.08,
|
|
reacquire_floor=0.07,
|
|
switch_floor=0.10,
|
|
):
|
|
if not confirmed:
|
|
return float(acquire_floor)
|
|
|
|
floor = float(reacquire_floor)
|
|
if weak_reacq_guard:
|
|
floor = max(floor, float(reacquire_floor))
|
|
if is_switch_candidate:
|
|
floor = max(floor, float(switch_floor))
|
|
return float(floor)
|
|
|
|
|
|
def track_passes_score_gate(
|
|
*,
|
|
track_score,
|
|
confirmed,
|
|
is_switch_candidate,
|
|
weak_reacq_guard,
|
|
acquire_floor=0.08,
|
|
reacquire_floor=0.07,
|
|
switch_floor=0.10,
|
|
):
|
|
return float(track_score) >= required_track_score(
|
|
confirmed=confirmed,
|
|
is_switch_candidate=is_switch_candidate,
|
|
weak_reacq_guard=weak_reacq_guard,
|
|
acquire_floor=acquire_floor,
|
|
reacquire_floor=reacquire_floor,
|
|
switch_floor=switch_floor,
|
|
)
|
|
|
|
|
|
def initial_candidate_score(
|
|
*,
|
|
track_score,
|
|
track_hits,
|
|
residual_motion,
|
|
appearance=0.0,
|
|
wavelet_bonus=0.0,
|
|
physics_bonus=0.0,
|
|
):
|
|
persistence = min(max(int(track_hits) - 1, 0), 5) / 5.0
|
|
return (
|
|
0.55 * float(track_score)
|
|
+ 0.15 * persistence
|
|
+ 0.12 * float(bool(residual_motion))
|
|
+ 0.90 * float(appearance)
|
|
+ float(wavelet_bonus)
|
|
+ float(physics_bonus)
|
|
)
|