Add new regression and ensemble experiment configurations for V2-M and OrthoBridge

- Introduced multiple regression experiment configurations targeting vf_md, including:
  - cd_solo_reg_set.json: CD tower only regression setup.
  - img_solo_reg_set.json: Image tower only regression setup.
  - reg_head_epoch_sweep.json: Baseline regression sweeps at different epochs (50, 75, 100).
  - reg_head_set.json: Various regression setups including baseline and OrthoBridge configurations.
  - single_eye_reg.json: Single-eye regression setup for worst-eye aggregation analysis.

- Added ensemble configurations for OrthoBridge with different inner bridges:
  - ortho_alts_ensemble.json: Ensemble tests with ConcatBridge, PairwiseAdditiveBridge, and GatedAdditiveBridge.
  - ortho_alts_tritower.json: Tritower tests with the same inner bridges.

- Created V2-M specific configurations:
  - baseline_reg_nt50.json: Regression baseline with V2-M backbone.
  - geom_vec_gt.json and geom_vec_unet.json: Geometry vector injection experiments with V2-M.
  - single_l1_bridges.json: Single-eye ensemble experiments with various bridge types.
  - tritower_geom_gt.json: Tritower setup with GT contour-rasterized masks.

- Promoted existing experiments to higher repetitions for robustness.
This commit is contained in:
rpotter6298
2026-06-11 15:08:20 +02:00
parent 32a801a572
commit 280060db82
343 changed files with 8558 additions and 57747 deletions
@@ -0,0 +1,230 @@
[
{
"_note": "Bridge attention sweep — gated × mobilenet_v2 (ImageNet, weakest off-the-shelf). Per-sample sigmoid gates expose how much each tower contributes. Tests the hypothesis 'as image tower strengthens, bridge downweights clinical'.",
"run_name": "experiments/bridge_attention/gated_mobilenet_v2",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "mobilenet_v2", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.gated_bridge",
"class": "GatedAdditiveBridge",
"args": { "fusion_dim": 256 }
}
}
},
{
"_note": "Bridge attention sweep — gated × resnet50 (ImageNet weights, NOT refuge-pretrained).",
"run_name": "experiments/bridge_attention/gated_resnet50",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "resnet50", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.gated_bridge",
"class": "GatedAdditiveBridge",
"args": { "fusion_dim": 256 }
}
}
},
{
"_note": "Bridge attention sweep — gated × efficientnet_b0 (ImageNet).",
"run_name": "experiments/bridge_attention/gated_efficientnet_b0",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "efficientnet_b0", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.gated_bridge",
"class": "GatedAdditiveBridge",
"args": { "fusion_dim": 256 }
}
}
},
{
"_note": "Bridge attention sweep — gated × efficientnet_v2_m (ImageNet, strongest off-the-shelf).",
"run_name": "experiments/bridge_attention/gated_efficientnet_v2_m",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "efficientnet_v2_m", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.gated_bridge",
"class": "GatedAdditiveBridge",
"args": { "fusion_dim": 256 }
}
}
},
{
"_note": "Bridge attention sweep — gated × refugelike (resnet50 + REFUGE pretrain). Pairs with refugelike fundus-domain prior; tests whether REFUGE-pretrained image tower shifts the bridge's attention compared to its ImageNet-only counterpart.",
"run_name": "experiments/bridge_attention/gated_refugelike",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "refugelike", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.gated_bridge",
"class": "GatedAdditiveBridge",
"args": { "fusion_dim": 256 }
}
}
},
{
"_note": "Bridge attention sweep — gated × refuge_efficientnet_v2_m (V2-M + REFUGE pretrain, headline production backbone).",
"run_name": "experiments/bridge_attention/gated_refuge_efficientnet_v2_m",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "refuge_efficientnet_v2_m", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.gated_bridge",
"class": "GatedAdditiveBridge",
"args": { "fusion_dim": 256 }
}
}
},
{
"_note": "Bridge attention sweep — ortho_w0.1 × mobilenet_v2 (ImageNet). Orthogonality penalty pushes streams to encode different info; per-stream variance-explained is the attention readout.",
"run_name": "experiments/bridge_attention/ortho_mobilenet_v2",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "mobilenet_v2", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.ortho_bridge",
"class": "OrthoBridge",
"args": {
"fusion_dim": 256,
"ortho_weight": 0.1,
"inner_module": "v4.classes.bridges.fusion_bridge",
"inner_class": "FusionBridge",
"inner_args": { "fusion_dim": 256 }
}
}
}
},
{
"_note": "Bridge attention sweep — ortho_w0.1 × resnet50 (ImageNet).",
"run_name": "experiments/bridge_attention/ortho_resnet50",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "resnet50", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.ortho_bridge",
"class": "OrthoBridge",
"args": {
"fusion_dim": 256,
"ortho_weight": 0.1,
"inner_module": "v4.classes.bridges.fusion_bridge",
"inner_class": "FusionBridge",
"inner_args": { "fusion_dim": 256 }
}
}
}
},
{
"_note": "Bridge attention sweep — ortho_w0.1 × efficientnet_b0 (ImageNet).",
"run_name": "experiments/bridge_attention/ortho_efficientnet_b0",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "efficientnet_b0", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.ortho_bridge",
"class": "OrthoBridge",
"args": {
"fusion_dim": 256,
"ortho_weight": 0.1,
"inner_module": "v4.classes.bridges.fusion_bridge",
"inner_class": "FusionBridge",
"inner_args": { "fusion_dim": 256 }
}
}
}
},
{
"_note": "Bridge attention sweep — ortho_w0.1 × efficientnet_v2_m (ImageNet).",
"run_name": "experiments/bridge_attention/ortho_efficientnet_v2_m",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "efficientnet_v2_m", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.ortho_bridge",
"class": "OrthoBridge",
"args": {
"fusion_dim": 256,
"ortho_weight": 0.1,
"inner_module": "v4.classes.bridges.fusion_bridge",
"inner_class": "FusionBridge",
"inner_args": { "fusion_dim": 256 }
}
}
}
},
{
"_note": "Bridge attention sweep — ortho_w0.1 × refugelike (resnet50 + REFUGE pretrain).",
"run_name": "experiments/bridge_attention/ortho_refugelike",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "refugelike", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.ortho_bridge",
"class": "OrthoBridge",
"args": {
"fusion_dim": 256,
"ortho_weight": 0.1,
"inner_module": "v4.classes.bridges.fusion_bridge",
"inner_class": "FusionBridge",
"inner_args": { "fusion_dim": 256 }
}
}
}
},
{
"_note": "Bridge attention sweep — ortho_w0.1 × refuge_efficientnet_v2_m (V2-M + REFUGE pretrain, headline production backbone).",
"run_name": "experiments/bridge_attention/ortho_refuge_efficientnet_v2_m",
"reps": 10,
"overrides": { "save_checkpoints": true, "save_predictions": true },
"tower_overrides": {
"img": { "args": { "backbone": "refuge_efficientnet_v2_m", "freeze_ratio": 0.0 } }
},
"stage_overrides": {
"nt": {
"module": "v4.classes.bridges.ortho_bridge",
"class": "OrthoBridge",
"args": {
"fusion_dim": 256,
"ortho_weight": 0.1,
"inner_module": "v4.classes.bridges.fusion_bridge",
"inner_class": "FusionBridge",
"inner_args": { "fusion_dim": 256 }
}
}
}
}
]