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.
MAI/track_score_policy.py

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)
)