Add causal person fusion and MuVAP stage-3 baselines

This commit is contained in:
Xin Wang
2026-09-10 06:54:22 +08:00
parent 0534c9d3d0
commit d426b4740a
225 changed files with 27716 additions and 119 deletions
+23 -1
View File
@@ -19,6 +19,7 @@ from easycom_head import (
NUM_HORIZONS,
OFFICIAL_TEST_SESSIONS,
STEP_SECONDS,
TRACK_PERSON_FUSION_MODES,
TurnPredictionHead,
average_precision_metrics,
checkpoint_head_config,
@@ -149,7 +150,7 @@ def _predict_states(
start,
min(start + batch_size, len(states)),
)
if head.local_fusion == "track-gru-residual":
if head.local_fusion in TRACK_PERSON_FUSION_MODES:
person_batch, person_mask = local_person_features.padded_history(
rows,
max_observations=head.person_history_frames,
@@ -500,6 +501,14 @@ def main() -> None:
f"{name}: saved pred {predictions.shape}, "
f"causal-valid counts={valid.sum(axis=0).tolist()}"
)
if head.person_adapter_diagnostics():
print(
"person adapter diagnostics: "
+ json.dumps(
head.person_adapter_diagnostics(),
sort_keys=True,
)
)
metrics = _evaluate(session_predictions, session_valid, session_targets)
transition_metrics = (
@@ -532,10 +541,23 @@ def main() -> None:
).get("epochs"),
"checkpoint_train_sessions": checkpoint_payload.get("train_sessions"),
"checkpoint_dev_sessions": checkpoint_payload.get("dev_sessions"),
"initialized_pooled_checkpoint": checkpoint_payload.get(
"training_config", {}
).get("initialize_pooled_checkpoint"),
"initialized_pooled_checkpoint_sha256": checkpoint_payload.get(
"training_config", {}
).get("initialize_pooled_checkpoint_sha256"),
"initialized_pooled_checkpoint_epoch": checkpoint_payload.get(
"training_config", {}
).get("initialize_pooled_checkpoint_epoch"),
"pooled_base_frozen": checkpoint_payload.get(
"training_config", {}
).get("pooled_base_frozen"),
"layer_fusion": head.layer_fusion,
"local_fusion": head.local_fusion,
"local_fusion_scope": LOCAL_FUSION_SCOPES[head.local_fusion],
"person_interaction_gates": head.person_interaction_gates(),
"person_adapter_diagnostics": head.person_adapter_diagnostics(),
"person_history_frames": head.person_history_frames,
"person_track_max_gap_seconds": head.person_track_max_gap_seconds,
"local_contract": local_contract,