Add causal oracle person information screen
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
# EasyCom causal oracle-person information screen
|
||||
|
||||
## Question
|
||||
|
||||
Before training a heavier visual grounding model, test whether perfect
|
||||
participant-resolved **past** speaking activity contains useful information for
|
||||
future wearer activity beyond the frozen Omni state and recent mixed audio.
|
||||
This is an information upper-bound experiment, not a deployable input setting.
|
||||
|
||||
## Causal contract
|
||||
|
||||
- The task grid remains 5 Hz. State row `t` has cutoff `(t+1)/5` seconds.
|
||||
- Oracle bin `t` summarizes transcript frames in
|
||||
`[t/5,(t+1)/5)` and is therefore completely observed at that cutoff.
|
||||
- Each person vector stores the last 2 seconds of binary activity followed by
|
||||
a visibility/availability mask. Activity is exposed only in bins where that
|
||||
participant was visible according to the provided boxes. No future bin,
|
||||
future wearer state, transcript text or `Target_of_Speech` value is input.
|
||||
- Only non-wearer participant IDs present in the latest provided-box frame
|
||||
strictly before the cutoff receive slots. IDs route annotations during
|
||||
preparation but are not exposed as embeddings to the head.
|
||||
- Transcript-derived wearer/others activity must match `target_perframe` by
|
||||
default. Any mismatch fails closed instead of being silently tolerated.
|
||||
- Oracle sidecars use `easycom-oracle-person-history-v1` and are accepted only
|
||||
by the explicit `oracle-frame-set-attention` mode. Normal local-feature
|
||||
loading rejects them because they use speech labels.
|
||||
|
||||
## Conditions
|
||||
|
||||
| Condition | Information exposed | Purpose |
|
||||
|---|---|---|
|
||||
| `audio` | Omni `G` plus the existing recent local audio `A` | deployable baseline |
|
||||
| `visibility-only` | current visible-person set, but all activity bits are zero | parameter/person-count control |
|
||||
| `aggregate-visible` | one OR-pooled history over currently visible people | aggregate floor-information upper bound |
|
||||
| `per-person` | one correct activity history per currently visible participant | main oracle information test |
|
||||
| `shuffled-id` | preserves the number active at every lag but independently reassigns activity between people | destroys identity continuity |
|
||||
| `delayed` | correct per-person histories delayed by 1 second | destroys current temporal alignment without future leakage |
|
||||
|
||||
The decisive comparison is `per-person` against `aggregate-visible`,
|
||||
`shuffled-id` and `delayed`, not only against `audio`. A gain over `audio` alone
|
||||
could come from perfect aggregate VAD rather than person continuity.
|
||||
|
||||
## Remote preparation and one-seed Session-12 screen
|
||||
|
||||
The source local sidecars provide only mixed audio and the visibility/box
|
||||
timeline. Their learned visual vectors are not copied into the oracle input.
|
||||
|
||||
```bash
|
||||
cd /data1/yfzx/wangx/Code/icassp2027-experiment
|
||||
|
||||
export DATASET_ROOT=/data1/yfzx/wangx/Datasets/easycom/extracted_easycom
|
||||
export FEATURE_ROOT=/data1/yfzx/wangx/Datasets/easycom/omni_features/open_stream_2fps_8s_last4_stack
|
||||
export TARGET_ROOT=/data1/yfzx/wangx/Datasets/easycom/easycom_target_frame
|
||||
export LOCAL_ROOT=/data1/yfzx/wangx/Datasets/easycom/omni_features/local_qwen_1s_encoded_tf4576
|
||||
export ORACLE_ROOT=/data1/yfzx/wangx/Datasets/easycom/omni_features/oracle_person_history_2s
|
||||
export CHECKPOINT_ROOT=checkpoints/easycom_oracle_information_4ep
|
||||
export RESULT_ROOT=results/easycom_oracle_information_4ep
|
||||
|
||||
CUDA_VISIBLE_DEVICES=0 bash run_easycom_oracle_information.sh all 0
|
||||
```
|
||||
|
||||
`all` prepares the five oracle conditions, trains on Sessions 4--11, selects
|
||||
the checkpoint on Session 12, runs Session-12 inference and prints the standard
|
||||
dense AP/mAP screen. It deliberately does not run Sessions 1--3.
|
||||
|
||||
If preparation reports any transcript/target mismatch, stop and inspect it.
|
||||
Do not raise `--max-label-mismatch-rows` merely to make the run continue.
|
||||
|
||||
## Follow-up
|
||||
|
||||
If `per-person` is consistently better on Session 12, add seeds 1 and 2 using
|
||||
the already prepared sidecars:
|
||||
|
||||
```bash
|
||||
CUDA_VISIBLE_DEVICES=0 bash run_easycom_oracle_information.sh screen 1 2
|
||||
```
|
||||
|
||||
Only after freezing the method and event evaluator should selected variants be
|
||||
run once on Sessions 1--3:
|
||||
|
||||
```bash
|
||||
VARIANTS="audio aggregate-visible per-person shuffled-id delayed" \
|
||||
CUDA_VISIBLE_DEVICES=0 \
|
||||
bash run_easycom_oracle_information.sh test 0 1 2
|
||||
```
|
||||
|
||||
## Interpretation
|
||||
|
||||
- `per-person > aggregate-visible` and `per-person > shuffled-id`: speaker
|
||||
continuity has information value; proceed to learned causal ASD/tracks.
|
||||
- `aggregate-visible > audio`, but no per-person advantage: perfect aggregate
|
||||
activity helps, but the current target does not justify an identity claim.
|
||||
- oracle conditions do not improve: do not spend the main GPU budget on a more
|
||||
complex person encoder until the task/head/evaluator is reconsidered.
|
||||
- oracle improves but learned Qwen face features do not: this supports a
|
||||
speaker-grounding bottleneck and motivates EgoASD-like AV evidence.
|
||||
|
||||
Dense 10-horizon mAP is only a screening signal. The publication claim still
|
||||
requires the frozen competing-risk-censored entry/yield evaluator and matched
|
||||
wearer-onset-recall false-entry analysis.
|
||||
Reference in New Issue
Block a user