Add no-box full-frame Qwen AV baselines
This commit is contained in:
+27
-11
@@ -24,6 +24,8 @@ from tqdm.auto import tqdm
|
||||
from easycom_head import (
|
||||
CLASS_NAMES,
|
||||
DATASET_NAMES,
|
||||
FULLFRAME_FUSION_MODES,
|
||||
HISTORY_VISUAL_SET_FUSION_MODES,
|
||||
HIGHRATE_PERSON_AV_FUSION_MODES,
|
||||
LAYER_FUSION_MODES,
|
||||
LOCAL_FUSION_MODES,
|
||||
@@ -87,6 +89,9 @@ def parse_args() -> argparse.Namespace:
|
||||
"highrate-person-av-attention lets global Omni plus one shared "
|
||||
"traditional CPC audio stream query causal 25 Hz person visual/ASD "
|
||||
"states sampled at the 5 Hz cutoffs; "
|
||||
"fullframe-spatial-attention is F2 over the latest strictly "
|
||||
"pre-cutoff full-frame grid; fullframe-spatiotemporal-attention "
|
||||
"is F3 with a shared causal grid-position GRU; "
|
||||
"audio-person-frame-set and gated-person-state-adapter are "
|
||||
"current-sidecar F5/F6 screening variants, not full F5/F6."
|
||||
),
|
||||
@@ -237,7 +242,7 @@ def _validate_args(args: argparse.Namespace) -> None:
|
||||
args.local_feature_root is None or args.local_modalities != "av"
|
||||
):
|
||||
raise ValueError(
|
||||
"Person-set --local-fusion modes require --local-feature-root and "
|
||||
"Set/token --local-fusion modes require --local-feature-root and "
|
||||
"--local-modalities av"
|
||||
)
|
||||
if args.local_fusion in INITIALIZED_PERSON_RESIDUAL_MODES:
|
||||
@@ -528,7 +533,7 @@ def _evaluate_valid_horizons(
|
||||
person_mask = None
|
||||
if people is not None:
|
||||
rows = torch.arange(start, min(start + batch_size, len(states)))
|
||||
if head.local_fusion in TRACK_PERSON_FUSION_MODES:
|
||||
if head.local_fusion in HISTORY_VISUAL_SET_FUSION_MODES:
|
||||
person_batch, person_mask = people.padded_history(
|
||||
rows,
|
||||
max_observations=head.person_history_frames,
|
||||
@@ -1004,14 +1009,25 @@ def main() -> None:
|
||||
f"projection={args.local_projection_dim or 'identity'}"
|
||||
)
|
||||
if person_features is not None:
|
||||
print(
|
||||
"frame sets: "
|
||||
f"{len(person_features.frame_offsets) - 1} source frames, "
|
||||
f"{len(person_features.features)} person observations, "
|
||||
f"max_people={person_features.max_people}, "
|
||||
f"attention={args.person_attention_dim}D/"
|
||||
f"{args.person_attention_heads} heads"
|
||||
)
|
||||
if args.local_fusion in FULLFRAME_FUSION_MODES:
|
||||
print(
|
||||
"full-frame token sets: "
|
||||
f"{len(person_features.frame_offsets) - 1} source frames, "
|
||||
f"{len(person_features.features)} spatial tokens, "
|
||||
f"max_tokens_per_frame={person_features.max_people}, "
|
||||
f"history_frames={args.person_history_frames}, "
|
||||
f"attention={args.person_attention_dim}D/"
|
||||
f"{args.person_attention_heads} heads"
|
||||
)
|
||||
else:
|
||||
print(
|
||||
"frame sets: "
|
||||
f"{len(person_features.frame_offsets) - 1} source frames, "
|
||||
f"{len(person_features.features)} person observations, "
|
||||
f"max_people={person_features.max_people}, "
|
||||
f"attention={args.person_attention_dim}D/"
|
||||
f"{args.person_attention_heads} heads"
|
||||
)
|
||||
trainable_parameters = sum(
|
||||
parameter.numel() for parameter in head.parameters() if parameter.requires_grad
|
||||
)
|
||||
@@ -1132,7 +1148,7 @@ def main() -> None:
|
||||
person_batch = None
|
||||
person_mask = None
|
||||
if person_features is not None:
|
||||
if head.local_fusion in TRACK_PERSON_FUSION_MODES:
|
||||
if head.local_fusion in HISTORY_VISUAL_SET_FUSION_MODES:
|
||||
person_batch, person_mask = person_features.padded_history(
|
||||
example_index_batch,
|
||||
max_observations=head.person_history_frames,
|
||||
|
||||
Reference in New Issue
Block a user