280060db82
- 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.
231 lines
8.2 KiB
JSON
231 lines
8.2 KiB
JSON
[
|
||
{
|
||
"_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 }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
]
|