Beyond Benchmark Scores: Auditing Medical Vision-Language Models for Chest X-Ray Tuberculosis Screening
Organizations: Department of Mathematics, Indian Institute of Technology Indore, India
Abstract
A medical model's benchmark score does not establish that the same conclusion holds under a different evaluation. This study tests whether claims about model ranking, score reliability and screening performance survive changes in cohort, prompt, negative spectrum, specified prevalence and operating threshold. We audit three medical vision-language models (BioMedCLIP, CheXficient, and MedSigLIP) and a general-domain OpenCLIP comparator on 12,200 chest radiograph records from four datasets (Montgomery, Shenzhen, TBX11K, and VinDr-CXR). Five fixed prompt families yield 244,000 model--image--prompt scores. No model leads every cohort and reliability criterion. Prompt-family changes alter AUROC in 21 of 48 multiplicity-controlled comparisons. Replacing healthy controls with sick non-tuberculosis controls reduces AUROC by 0.075--0.306 across all four models. On VinDr-CXR, the three medical models distinguish tuberculosis from no-finding controls substantially better than from pneumonia or lung tumor; their AUROC point estimates for both named diseases fall below 0.5. CheXficient has documented VinDr-CXR pretraining exposure, which limits the interpretation of its results. Thresholds chosen for 95% sensitivity on TBX11K training retain that constraint by point estimate in only four of sixteen target evaluations. A five-seed supervised source model reaches 0.999 AUROC on TBX11K validation but 0.629 on each of two external cohorts. Conservative exclusion of perceptual-overlap candidates narrows this gap without closing it. These retrospective, single-task results show that discrimination, score reliability and threshold retention support different portability claims. Evidence for chest X-ray tuberculosis screening should identify the complete evaluation specification rather than attribute clinical portability to a checkpoint alone.
Figures & tables
| Cohort | Non-TB composition | TB | Non-TB | TB (%) | Role |
|---|---|---|---|---|---|
| Montgomery | Normal | 58 | 80 | 42.0 | External comparison |
| Shenzhen | Normal | 336 | 326 | 50.8 | External comparison |
| TBX11K validation | 800 healthy; 800 sick | 200 | 1,600 | 11.1 | Primary benchmark |
| TBX11K training | 3,000 healthy; 3,000 sick | 600 | 6,000 | 9.1 | Source and replication |
| VinDr-CXR test | No finding; other findings | 164 | 2,836 | 5.5 | Named-spectrum extension |
| Model | Checkpoint and representation | Pretraining context and exposure qualification |
|---|---|---|
| OpenCLIP | ViT-B/32; laion2b_s34b_b79k ; input | General image–text training on LAION-2B. No documented direct dataset exposure in the examined documentation; web-image overlap remains unresolved [ 18 ] . |
| BioMedCLIP | microsoft/BiomedCLIP- PubMedBERT_256-vit_base_ patch16_224 ; input | Biomedical figure–caption training on PMC-15M. Scientific-figure reuse prevents certification of image-level independence [ 3 ] . |
| CheXficient | StanfordAIMI/CheXficient ; DINOv2-base and BioClinicalBERT; checkpoint image processor | CXR-specific training. VinDr-CXR is a documented training source; TBX11K is described as unseen in the model report. The VinDr experiment is a within-dataset stress test, not independent external validation [ 19 ] . |
| MedSigLIP | google/medsiglip-448 ; medical SigLIP image and text encoders; input | Medical training across specialties, including public and non-public sources. No documented direct exposure to the evaluated datasets; absence of exposure is not established [ 20 , 21 ] . |
| Family | TB text | Non-TB text |
|---|---|---|
| Clinical | a chest x-ray showing pulmonary tuberculosis a chest radiograph with tuberculosis a chest x-ray with findings compatible with tuberculosis a frontal chest radiograph showing active tuberculosis | a normal chest x-ray without tuberculosis a chest radiograph with no evidence of tuberculosis a chest x-ray without pulmonary tuberculosis a frontal chest radiograph without signs of tuberculosis |
| Photo | this is a photo of a chest X-ray showing pulmonary tuberculosis | this is a photo of a chest X-ray without pulmonary tuberculosis |
| Report | chest radiograph findings are compatible with pulmonary tuberculosis | no radiographic evidence of pulmonary tuberculosis |
| Presence | pulmonary tuberculosis is present on this chest radiograph | pulmonary tuberculosis is absent on this chest radiograph |
| Normal | a chest radiograph showing pulmonary tuberculosis | a normal chest radiograph |
| Cohort | Model | AUROC [95% CI] | AUPRC | Brier | ECE 15 | AURC |
|---|---|---|---|---|---|---|
| Montgomery | CheXficient | 0.969 [0.925, 0.998] | 0.976 | 0.133 | 0.183 | 0.081 |
| Montgomery | MedSigLIP | 0.976 [0.945, 0.998] | 0.979 | 0.101 | 0.181 | 0.039 |
| Montgomery | BioMedCLIP | 0.890 [0.826, 0.947] | 0.905 | 0.173 | 0.200 | 0.108 |
| Montgomery | OpenCLIP | 0.610 [0.515, 0.706] | 0.522 | 0.293 | 0.232 | 0.501 |
| Shenzhen | CheXficient | 0.950 [0.932, 0.965] | 0.959 | 0.197 | 0.247 | 0.120 |
| Shenzhen | MedSigLIP | 0.907 [0.884, 0.928] | 0.921 | 0.157 | 0.148 | 0.104 |
| Cohort | Model | Se at 95% Sp | Sp at 95% Se | Risk at 80% | Risk at 90% |
|---|---|---|---|---|---|
| Montgomery | CheXficient | 0.948 | 0.938 | 0.117 | 0.152 |
| Montgomery | MedSigLIP | 0.914 | 0.787 | 0.072 | 0.112 |
| Montgomery | BioMedCLIP | 0.741 | 0.200 | 0.153 | 0.184 |
| Montgomery | OpenCLIP | 0.138 | 0.075 | 0.577 | 0.568 |
| Shenzhen | CheXficient | 0.839 | 0.644 | 0.208 | 0.247 |
| Shenzhen | MedSigLIP | 0.670 | 0.521 | 0.181 | 0.206 |
| Cohort | Model | Clinical | Photo | Report | Presence | Normal |
|---|---|---|---|---|---|---|
| Montgomery | CheXficient | 0.969 | 0.978 | 0.972 | 0.909 | 0.947 |
| Montgomery | MedSigLIP | 0.976 | 0.976 | 0.976 | 0.940 | 0.974 |
| Montgomery | BioMedCLIP | 0.890 | 0.873 | 0.903 | 0.893 | 0.903 |
| Montgomery | OpenCLIP | 0.610 | 0.543 | 0.494 | 0.514 | 0.459 |
| Shenzhen | CheXficient | 0.950 | 0.945 | 0.925 | 0.927 | 0.939 |
| Shenzhen | MedSigLIP | 0.907 | 0.892 | 0.874 | 0.890 | 0.878 |
| Cohort | Model | AUROC [95% CI] | Brier [95% CI] |
|---|---|---|---|
| Montgomery | CheXficient | 0.005 [0.000, 0.014] | -0.017 [-0.024, -0.012] |
| Montgomery | MedSigLIP | 0.003 [-0.002, 0.009] | 0.014 [0.011, 0.017] |
| Montgomery | BioMedCLIP | 0.010 [-0.009, 0.032] | 0.002 [-0.003, 0.007] |
| Montgomery | OpenCLIP | -0.076 [-0.152, 0.002] | -0.028 [-0.032, -0.024] |
| Shenzhen | CheXficient | -0.007 [-0.011, -0.003] | -0.047 [-0.054, -0.041] |
| Shenzhen | MedSigLIP | -0.014 [-0.018, -0.011] | 0.016 [0.015, 0.018] |
| Component | AUROC (%) | Brier (%) | ECE 15 (%) |
|---|---|---|---|
| Model | 76.6 | 37.7 | 10.3 |
| Cohort | 10.9 | 3.0 | 7.0 |
| Prompt | 0.8 | 5.8 | 5.6 |
| Model cohort | 5.8 | 5.9 | 17.8 |
| Model prompt | 1.9 | 24.4 | 30.0 |
| Cohort prompt | 0.2 | 11.9 | 14.8 |
| Model | Healthy | Sick non-TB | AUROC loss [95% CI] | Holm |
|---|---|---|---|---|
| CheXficient | 0.865 | 0.725 | 0.140 [0.117, 0.163] | 0.0004 |
| MedSigLIP | 0.953 | 0.647 | 0.306 [0.271, 0.344] | 0.0004 |
| BioMedCLIP | 0.872 | 0.611 | 0.261 [0.231, 0.292] | 0.0004 |
| OpenCLIP | 0.602 | 0.527 | 0.075 [0.048, 0.103] | 0.0004 |
| Model | No finding [95% CI] | Pneumonia [95% CI] | Lung tumor [95% CI] |
|---|---|---|---|
| CheXficient ∗ | 0.945 [0.924, 0.964] | 0.466 [0.404, 0.524] | 0.372 [0.302, 0.444] |
| MedSigLIP | 0.918 [0.893, 0.942] | 0.331 [0.277, 0.388] | 0.380 [0.311, 0.451] |
| BioMedCLIP | 0.780 [0.741, 0.819] | 0.334 [0.275, 0.392] | 0.306 [0.237, 0.380] |
| OpenCLIP | 0.525 [0.481, 0.571] | 0.535 [0.474, 0.590] | 0.550 [0.468, 0.628] |
| Model | Pneumonia minus no finding | Lung tumor minus no finding |
|---|---|---|
| CheXficient ∗ | -0.479 [-0.533, -0.426] | -0.573 [-0.640, -0.505] |
| MedSigLIP | -0.586 [-0.634, -0.535] | -0.537 [-0.606, -0.470] |
| BioMedCLIP | -0.446 [-0.492, -0.402] | -0.474 [-0.537, -0.408] |
| OpenCLIP | 0.010 [-0.033, 0.051] | 0.024 [-0.048, 0.099] |
| Cohort | Model | Prevalences (%) | First | Second | Third |
|---|---|---|---|---|---|
| Montgomery | CheXficient | 10/20/50 | 0.032 | 0.064 | 0.159 |
| Montgomery | MedSigLIP | 10/20/50 | 0.039 | 0.058 | 0.116 |
| Montgomery | BioMedCLIP | 10/20/50 | 0.042 | 0.083 | 0.205 |
| Montgomery | OpenCLIP | 10/20/50 | 0.390 | 0.359 | 0.269 |
| Shenzhen | CheXficient | 10/20/50 | 0.042 | 0.080 | 0.194 |
| Shenzhen | MedSigLIP | 10/20/50 | 0.071 | 0.092 | 0.156 |
| Cohort | Model | ECE 15 [95% CI] | Log loss [95% CI] | |
|---|---|---|---|---|
| Montgomery | CheXficient | 0.50 | 0.221 [0.180, 0.264] | 0.517 [0.372, 0.681] |
| Montgomery | MedSigLIP | 0.50 | 0.198 [0.157, 0.243] | 0.376 [0.313, 0.446] |
| Montgomery | BioMedCLIP | 0.50 | 0.241 [0.190, 0.291] | 0.801 [0.583, 1.049] |
| Montgomery | OpenCLIP | 0.50 | 0.153 [0.148, 0.193] | 0.732 [0.720, 0.745] |
| Shenzhen | CheXficient | 0.50 | 0.243 [0.226, 0.261] | 0.615 [0.555, 0.679] |
| Shenzhen | MedSigLIP | 0.50 | 0.146 [0.127, 0.171] | 0.476 [0.446, 0.508] |
| Model | Source constraint | Threshold | Source Se | Source Sp |
|---|---|---|---|---|
| CheXficient | 95% sensitivity | 0.032724 | 0.950 | 0.172 |
| CheXficient | 95% specificity | 0.685756 | 0.392 | 0.950 |
| MedSigLIP | 95% sensitivity | 0.225860 | 0.950 | 0.478 |
| MedSigLIP | 95% specificity | 0.830078 | 0.272 | 0.950 |
| BioMedCLIP | 95% sensitivity | 0.017594 | 0.950 | 0.279 |
| BioMedCLIP | 95% specificity | 0.921753 | 0.212 | 0.950 |
| Target | Model | Sensitivity [95% CI] | Specificity [95% CI] | Retains |
|---|---|---|---|---|
| Montgomery | CheXficient | 0.966 [0.914, 1.000] | 0.863 [0.787, 0.963] | Yes |
| Montgomery | MedSigLIP | 0.914 [0.845, 0.983] | 0.938 [0.863, 1.000] | No |
| Montgomery | BioMedCLIP | 0.879 [0.776, 0.948] | 0.738 [0.613, 0.838] | No |
| Montgomery | OpenCLIP | 0.931 [0.828, 1.000] | 0.075 [0.025, 0.188] | No |
| Shenzhen | CheXficient | 0.932 [0.884, 0.958] | 0.764 [0.690, 0.853] | No |
| Shenzhen | MedSigLIP | 0.872 [0.830, 0.926] | 0.745 [0.641, 0.816] | No |
| Target | Model | Threshold | Sensitivity [95% CI] | Specificity |
|---|---|---|---|---|
| Montgomery | BioMedCLIP | 0.00694 | 0.914 [0.828, 0.983] | 0.438 |
| TBX11K val. | BioMedCLIP | 0.00694 | 0.985 [0.965, 1.000] | 0.095 |
| Montgomery | CheXficient | 0.02426 | 0.966 [0.914, 1.000] | 0.812 |
| TBX11K val. | CheXficient | 0.02426 | 0.955 [0.910, 0.985] | 0.072 |
| Montgomery | MedSigLIP | 0.17374 | 0.948 [0.897, 1.000] | 0.800 |
| TBX11K val. | MedSigLIP | 0.17374 | 0.975 [0.930, 0.995] | 0.311 |
| Target | Model | Sensitivity | Specificity | Retains specificity |
|---|---|---|---|---|
| Montgomery | CheXficient | 0.379 | 1.000 | Yes |
| Montgomery | MedSigLIP | 0.241 | 1.000 | Yes |
| Montgomery | BioMedCLIP | 0.293 | 1.000 | Yes |
| Montgomery | OpenCLIP | 0.000 | 0.988 | Yes |
| Shenzhen | CheXficient | 0.369 | 1.000 | Yes |
| Shenzhen | MedSigLIP | 0.190 | 1.000 | Yes |
| Cohort | Seed AUROC mean SD | Ensemble AUROC | AUPRC | Brier | AURC |
|---|---|---|---|---|---|
| TBX11K val. | 0.997 0.001 | 0.999 | 0.993 | 0.008 | 0.000 |
| Shenzhen | 0.630 0.075 | 0.629 | 0.691 | 0.402 | 0.346 |
| Montgomery | 0.615 0.035 | 0.629 | 0.583 | 0.269 | 0.323 |
| Cohort | Original | Excluded | Retained | TB retained | Non-TB retained |
|---|---|---|---|---|---|
| Montgomery | 138 | 1 | 137 | 58 | 79 |
| Shenzhen | 662 | 109 | 553 | 284 | 269 |
| TBX11K train | 6600 | 166 | 6434 | 589 | 5845 |
| TBX11K val. | 1800 | 37 | 1763 | 197 | 1566 |
| Cohort | Original retained | Retrained | Ensemble [95% CI] | Seed mean SD |
|---|---|---|---|---|
| TBX11K val. | 0.9989 | 0.9991 | 0.0002 [-0.0003, 0.0008] | -0.001 0.001 |
| Shenzhen | 0.6329 | 0.7335 | 0.1006 [0.0732, 0.1282] | 0.075 0.130 |
| Montgomery | 0.6266 | 0.6779 | 0.0513 [0.0024, 0.1041] | 0.033 0.077 |
| Claim component | Question to state explicitly | Evidence from this audit |
|---|---|---|
| Implementation | Which weights, processor, score map and text define the classifier? | Prompt-family effects occur on identical images; a model name alone is incomplete. |
| Population and endpoint | Which setting and reference labels support the result? | Cohort ranking changes, and dataset TB labels do not share a verified common microbiological standard. |
| Negative spectrum | Are controls healthy, broadly abnormal or a named competing disease? | AUROC falls for all models on sick controls; named alternatives expose larger medical-model failures. |
| Score interpretation | Which prevalence and reliability measure support the claim? | Class weighting changes Brier comparisons without changing score ordering. |
| Operating rule | Does an unchanged source threshold retain sensitivity and acceptable specificity? | Only four of sixteen sensitivity constraints survive by point estimate; retention can coexist with near-zero specificity. |
| Uncertainty and provenance | What is resampled, what remains fixed, and what exposure is known? | Image-level intervals, seed variability and documented pretraining exposure support different inferences. |
Medical VLMs
Medical vision-language models connect clinical images with text for diagnosis, reporting, question answering, and image grounding.
See all 475 papers