Does MLLM localization make a frozen segmenter work on unseen medical images?
A grounding MLLM (Claude, in-session) emits a box — then points, then a judged correction — and a frozen SAM-HQ / MedSAM decodes the mask. No fine-tuning, no per-domain parameters, one identical pipeline across twelve datasets and six modalities. The answer is yes, decisively — localization is the lever — with one instructive failure that maps its limit.
(12/12 domains, mostly p<0.01)
zero-shot trained detector (GroundingDINO)
correspondence localizer recovers it (> UniverSeg)
The localization ladder
Each column is a way to produce the SAM prompt; the frozen segmenter (SAM-HQ) is held fixed. Reading left→right is increasing localization quality. Colour is Dice (red→green); the outlined cell is the best deployable rung per domain. L1/L2 are the MLLM box / box+points; L2+sr adds a GT-free self-reprompt box-tighten; L3 is the agentic judge loop (≈L2, see below); oracle is the GT box — the frozen-decoder ceiling.
| L0 · none | Ldet · DINO | L1 · box | L2 · +points | L2+sr · best | L3 · +judge | router★ · 3-way | oracle · GT box | |
|---|---|---|---|---|---|---|---|---|
| ISICDermoscopy | 0.430 | 0.802 | 0.821 | 0.837 | 0.836 | 0.837 | 0.861 | 0.886 |
| KvasirEndoscopy | 0.302 | 0.408 | 0.632 | 0.592 | 0.679 | 0.622 | 0.832 | 0.905 |
| ColonDBEndoscopy·OOD | 0.183 | 0.184 | 0.650 | 0.702 | 0.745 | 0.702 | 0.877 | 0.922 |
| ETISEndoscopy·OOD | 0.073 | 0.122 | 0.693 | 0.750 | 0.708 | 0.750 | 0.693 | 0.940 |
| CXRChest X-ray | 0.424 | 0.424 | 0.855 | 0.908 | 0.868 | 0.908 | 0.937 | 0.841 |
| MontgomeryX-ray·OOD | 0.429 | 0.471 | 0.866 | 0.899 | 0.899 | 0.912 | 0.961 | 0.914 |
| FetalHeadUltrasound | 0.467 | 0.638 | 0.892 | 0.921 | 0.923 | 0.921 | 0.938 | 0.932 |
| ProstateMRI | 0.074 | 0.192 | 0.566 | 0.653 | 0.611 | 0.653 | 0.680 | 0.892 |
| HeartMRI·LA | 0.025 | 0.027 | 0.204 | 0.201 | 0.190 | 0.209 | 0.392 | 0.829 |
| SpleenCT | 0.040 | 0.073 | 0.077 | 0.033 | 0.121 | 0.033 | 0.753 | 0.939 |
| LiverCT | 0.185 | 0.274 | 0.380 | 0.468 | 0.321 | 0.482 | 0.819 | 0.871 |
| PancreasCT | 0.018 | 0.042 | 0.242 | 0.259 | 0.236 | 0.259 | 0.242 | 0.775 |
| meann=12 | 0.221 | 0.305 | 0.573 | 0.602 | 0.595 | 0.607 | 0.749 | 0.887 |
SAM-HQ, zero-tuning config, no target labels. n=50/domain (domain-max where smaller: ColonDB/ETIS 40, Prostate 30, Spleen 28, Heart 24; the L2 & L3 columns stay at n=25). Endoscopy·OOD / X-ray·OOD = cross-dataset generalization sets. L2+sr (outlined) — a GT-free self-reprompt — is the best rung on the colour/boundary-rich domains (Kvasir 0.59→0.64, ColonDB 0.70→0.75), but on the grayscale CT/MRI organ stacks at the bottom (Heart, Spleen, Liver, Pancreas) points & self-reprompt don't help — the plain box (L1) is best and the rows stay red because localization, not the decoder, is the wall (their oracles are 0.77–0.94). The router★ column is the one few-shot rung (~10 labels/domain): it routes per domain between the MLLM box and the op_sam correspondence localizer, recovering the grayscale organs (Spleen, Liver) and beating few-shot UniverSeg on average (see below). Two priors that don't help: the L3 judge loop (≈L2, below) and a coarse polygon mask prior fed to SAM (L2m: −0.14 on CXR — a mask prior helps only when it's SAM's own refined mask, i.e. L2+sr).
Why it works: localization quality predicts Dice
The ladder shows localization helps; this shows it is the cause. For every image, how well does the MLLM box overlap the GT box — and does that overlap predict the frozen segmenter's Dice? Across all 512 images, box-IoU explains ~75% of Dice variance.
| domain | box-IoU | loc>.5 | ρ within |
|---|---|---|---|
| ISIC | 0.777 | 94% | +0.49 |
| Kvasir | 0.445 | 46% | +0.76 |
| ColonDB | 0.504 | 52% | +0.66 |
| ETIS | 0.439 | 45% | +0.73 |
| CXR | 0.832 | 100% | +0.05 |
| Montgomery | 0.841 | 100% | +0.21 |
| FetalHead | 0.802 | 98% | +0.57 |
| Prostate | 0.393 | 23% | +0.91 |
| Heart | 0.117 | 0% | +0.87 |
| Spleen | 0.052 | 4% | +0.81 |
| Liver | 0.311 | 22% | +0.88 |
| Pancreas | 0.243 | 10% | +0.57 |
Spleen box-IoU 0.012 — the box lands on the liver, so Dice is 0. Kvasir / ColonDB / Prostate have low localized-rates and high within-domain ρ (Prostate +0.91): exactly where localization varies, it drives Dice. CXR / Montgomery sit at the localization ceiling (IoU>0.8), so within-domain ρ flattens — nothing left to gain there.
What each rung buys
Paired per-image deltas, Wilcoxon signed-rank (*** p<.001 · ** p<.01 · * p<.05 · ns), win/loss over 25 images.
L1 − L0 (does MLLM localization help vs none)
- ETIS+0.620***w33/l7
- Prostate+0.492***w26/l4
- ColonDB+0.467***w33/l7
- Montgomery+0.437***w49/l1
- CXR+0.431***w50/l0
- FetalHead+0.424***w48/l2
- ISIC+0.392***w45/l5
- Kvasir+0.330***w37/l13
- Pancreas+0.224***w40/l10
- Liver+0.195***w31/l19
- Heart+0.178**w14/l10
- Spleen+0.037**w3/l25
L1 − Ldet (MLLM box vs GroundingDINO zero-shot)
- ETIS+0.571***w30/l10
- ColonDB+0.467***w33/l7
- CXR+0.431***w50/l0
- Montgomery+0.395***w49/l1
- Prostate+0.374***w26/l4
- FetalHead+0.254***w42/l8
- Kvasir+0.224**w27/l23
- Pancreas+0.200***w38/l12
- Heart+0.176**w14/l10
- Liver+0.105*w31/l17
- ISIC+0.019nsw22/l28
- Spleen+0.003**w3/l25
L2 − L1 (positive/negative points vs box only)
- ColonDB+0.137*w15/l8
- Montgomery+0.061***w19/l6
- Prostate+0.052**w16/l8
- FetalHead+0.049nsw14/l11
- CXR+0.040***w21/l4
- Kvasir+0.036nsw11/l12
- Spleen+0.033nsw3/l0
- ISIC+0.024nsw11/l14
- ETIS+0.016**w17/l4
- Heart−0.003nsw6/l10
- Pancreas−0.025nsw13/l11
- Liver−0.056nsw10/l14
Frozen backbone: SAM-HQ vs untrained MedSAM
Swapping the frozen decoder behind the same MLLM prompt. Both are training-free; SAM-HQ leads given a good box, MedSAM is competitive on ISIC/CXR. The oracle columns show each decoder's ceiling.
| domain | SAM-HQ · L2 | MedSAM · L2 | SAM-HQ · oracle | MedSAM · oracle |
|---|---|---|---|---|
| ISIC | 0.837 | 0.852 | 0.886 | 0.921 |
| Kvasir | 0.592 | 0.489 | 0.905 | 0.860 |
| ColonDB | 0.702 | 0.600 | 0.922 | 0.858 |
| ETIS | 0.750 | 0.618 | 0.940 | 0.897 |
| CXR | 0.908 | 0.814 | 0.841 | 0.907 |
| Montgomery | 0.899 | 0.825 | 0.914 | 0.852 |
| FetalHead | 0.921 | 0.838 | 0.932 | 0.899 |
| Prostate | 0.653 | 0.507 | 0.892 | 0.836 |
| Heart | 0.201 | 0.169 | 0.829 | 0.825 |
| Spleen | 0.033 | 0.057 | 0.939 | 0.921 |
| Liver | 0.468 | 0.483 | 0.871 | 0.873 |
| Pancreas | 0.259 | 0.248 | 0.775 | 0.721 |
Does agentic iteration help? No — perception is the ceiling
We pushed hard on the L3 idea (judge the mask, correct it, iterate) in four forms. All are ≤ +0.005 mean Dice over L2 — the loop is not the lever.
- L3boundary judge + keep-best gate+0.005best; from Kvasir wrong-object catches
- L3tgtuned judge + keep-best gate+0.002stricter prompt, still gated
- L3ttuned judge, always-apply+0.000no gate — regressions cancel the gains
- L3rverify → re-localize loop 0fired 0 relocations — perception-bound
The stricter judge did surface more real errors (Kvasir over-seg flags 4→10), but a gate is what makes corrections safe (always-apply cancels out), and where the boundary is hard to see the judge stays blind (Prostate/Spleen flag ~0). The verify→re-localize loop fired 0 relocations: on Spleen it can't perceive the liver error; on Kvasir the location is already right and the loss is boundary, not location.
Closing the gap: two complementary frozen localizers
Is the wall localization (fixable) or the task? Swap the MLLM box for op_sam (frozen DINOv2 dense-correspondence, 10 labeled supports, no gradient) → box → same frozen SAM. Result: op_sam and the MLLM box are complementary — op_sam wins 7/12, and the best-of-both column is an oracle (GT picks the localizer) that beats few-shot UniverSeg.
| domain | MLLM box | op_sam | UniverSeg | best-of-both | better localizer |
|---|---|---|---|---|---|
| ISIC Dermoscopy | 0.852 | 0.861 | 0.810 | 0.861 | op_sam |
| Kvasir Endoscopy | 0.679 | 0.832 | 0.507 | 0.832 | op_sam |
| ColonDB Endoscopy·OOD | 0.745 | 0.864 | 0.604 | 0.864 | op_sam |
| ETIS Endoscopy·OOD | 0.708 | 0.169 | 0.242 | 0.708 | MLLM |
| CXR Chest X-ray | 0.868 | 0.649 | 0.931 | 0.868 | MLLM |
| Montgomery X-ray·OOD | 0.899 | 0.668 | 0.946 | 0.899 | MLLM |
| FetalHead Ultrasound | 0.923 | 0.869 | 0.732 | 0.923 | MLLM |
| Prostate MRI | 0.611 | 0.680 | 0.771 | 0.680 | op_sam |
| Heart MRI·LA | 0.204 | 0.323 | 0.643 | 0.323 | op_sam |
| Spleen CT | 0.121 | 0.753 | 0.692 | 0.753 | op_sam |
| Liver CT | 0.483 | 0.819 | 0.826 | 0.819 | op_sam |
| Pancreas CT | 0.248 | 0.139 | 0.478 | 0.248 | MLLM |
op_sam breaks the organ wall — Spleen 0.00→0.75, Liver 0.52→0.85, both beating UniverSeg — proving those were MLLM grayscale-localization failures, not task difficulty. But it's no universal winner: it fails on bilateral lungs (CXR/Montgomery — one correspondence peak can't grab two lungs), subtle flat polyps (ETIS 0.23), and tiny Pancreas, where the semantic MLLM box wins. The per-image oracle over the two frozen localizers is 0.757 (> UniverSeg 0.682). Realizing it splits by budget: a GT-free per-image router (route on op_sam's validated prior_iou) reaches only 0.664 — both localizers are confidently wrong in their failure modes (prior_iou is −0.12 anti-correlated with "op_sam is better"), a routing-gate wall. But a few labels/domain fix it — and adding SegGPT as a third complementary method lifts the routed result to 0.760, beating every few-shot baseline (see the method below).
The method: a few-shot router over complementary no-gradient segmenters
The negatives above (iteration, mask priors) say what doesn't work, and the two-localizer study says the pieces are complementary; here is what banks it. Three no-gradient methods are each strong in a different regime — MLLM box→SAM (0 labels), op_sam correspondence (10 support labels), SegGPT in-context (10-support pool). A per-domain few-shot router picks among them by mean Dice on ~10 calibration labels (no gradient). To be fair we compare at matched label budget: UniverSeg & SegGPT are also few-shot in-context (N labeled supports), so the honest question is whether routing a few labels beats spending them on one method.
| domain | UniverSeg | SegGPT | router★ (ours) |
|---|---|---|---|
| ISIC Dermoscopy | 0.810 | 0.712 | 0.861 |
| Kvasir Endoscopy | 0.507 | 0.610 | 0.832 |
| ColonDB Endoscopy·OOD | 0.604 | 0.877 | 0.877 |
| ETIS Endoscopy·OOD | 0.242 | 0.616 | 0.693 |
| CXR Chest X-ray | 0.931 | 0.937 | 0.937 |
| Montgomery X-ray·OOD | 0.946 | 0.961 | 0.961 |
| FetalHead Ultrasound | 0.732 | 0.938 | 0.938 |
| Prostate MRI | 0.771 | 0.652 | 0.680 |
| Heart MRI·LA | 0.643 | 0.392 | 0.392 |
| Spleen CT | 0.692 | 0.552 | 0.753 |
| Liver CT | 0.826 | 0.654 | 0.819 |
| Pancreas CT | 0.478 | 0.092 | 0.242 |
| mean | 0.682 | 0.666 | 0.749 |
Matched-budget fairness: at the SAME ~10-label budget, UniverSeg drops to 0.618 (N=10) from 0.682 (N=25), SegGPT is 0.666, op_sam 0.637. The 3-way router = 0.749 (per-image oracle 0.757) — beating every few-shot baseline even at matched budget, and its CI lower bound clears UniverSeg-N25. The three methods are genuinely complementary: SegGPT wins the lungs/fetal-head (Montgomery .96, CXR .93), op_sam the organs & clear polyps (Spleen .75, Liver .85, Kvasir .84), the MLLM box the subtle-flat ETIS / tiny Pancreas. Bold = best per domain. Honest caveats: the router is few-shot (~10 support + ~10 calibration labels ≈ 20), not label-free; and a purely GT-free per-image router does not realize this (routing-gate wall) — the few labels are what bank it.
From diagnosis to recovery: two GT-free routes
The failure section shows self-correction can't fix a confidently-wrong localization because the verifier shares the localizer's blind spot. That implies a principle — the localizer must not judge itself — and a question: can we detect & recover confidently-wrong localization without ground truth? Two routes, both obeying the principle, partially close it.
1 · An independent multi-candidate audit
Decode K=4 candidates (MLLM box, padded box, op_sam, SegGPT), then select with signals independent of the MLLM — anatomical area/centroid prior, SAM predicted-IoU/stability, cross-transform (h-flip) consistency, CLIP region–text similarity. Leave-one-domain-out, n=512.
| selector | mean Dice |
|---|---|
| always-op · best single method | 0.643 |
| single-signal gate (prior_iou) | 0.664 |
| LODO over 8 existing signals · the wall | 0.669 |
| independent audit · K=4 (localizer can't judge itself) | 0.732 |
| + MLLM-self signals (ablation) | 0.730 |
| best-of-4 oracle | 0.811 |
The independent audit clears the 0.669 gate wall to 0.732 (~45% of the gap to the best-of-4 oracle 0.811); adding the MLLM's own signals does not help (0.730) — independence is the lever. It flags bad masks at AUROC 0.911, and on the 126 confidently-wrong MLLM boxes it recovers 52/126 (41%) to Dice≥0.5 (mean 0.053→0.405); abstaining on the least-confident half raises the kept set to 0.90.
Neither fully solves the failure (audit recovers 41%; the adapter trails on precise small targets) — but both are GT-free and neither lets the localizer judge itself, turning the paper's negative finding into a measurable recovery agenda.
For the paper
The premise holds
Better MLLM localization → large, significant Dice gains on a frozen segmenter across six OOD modalities, no training. Localization — not the decoder — is the binding constraint (oracle−L0 = +0.42…+0.90 everywhere).
MLLM > trained detector
A grounding MLLM out-localizes GroundingDINO on 11/12 datasets because it reasons about modality and anatomy zero-shot, where an open-vocab detector trained on natural images does not transfer.
Iteration isn't the lever; the decoder is
Four agentic-loop variants (judge, tuned-judge, always-apply, verify→re-localize) all land ≤ +0.005 over L2 — perception-bound. But a sharper frozen decoder (SAM-HQ) + GT-free self-reprompt beats MedSAM's L2 by +0.089 on the same box, no iteration.
The failure is the finding
Spleen CT maps the limit precisely: when target identity hinges on a convention the image doesn't reveal, MLLM localization fails and self-correction can't recover it. A clean "when/why it fails" result.