Research & engineering dossier · Confidential

Making chest‑X‑ray AI that survives contact with a new hospital

An iterative program on Chikitsa — a CPU‑first, multi‑reader CXR interpretation pipeline. This is the honest record: every hypothesis we tested, what the data accepted or rejected, and where we deliberately stopped.

15
public datasets · 6 countries · 2 labelling regimes
5
frozen foundation encoders benchmarked head-to-head
15
hypotheses tested — several rejected on the data
<$40
total GPU spend (SDK-free SageMaker harness)
00

Executive summary

We set out to raise cross‑hospital accuracy of a deployed CXR reader ensemble. The work repeatedly overturned the obvious levers and converged on an unglamorous truth: label quality and encoder generalisation — not model size or more data — are what govern real‑world performance.

Headline outcome
Swapped the deployed encoder from research‑licensed RAD‑DINO to MedImageInsight (MIT‑licensed) — the best cross‑dataset generaliser and commercially clean. Live in production — and the data‑side provenance gap is now largely closed too: a five‑finding clean core validated on open sources, with TB and cardiomegaly already shipping on clean weights.
Method that paid off
Measure before building. Multiple “obvious” improvements (bigger backbone, better head, pooling more data) were tested and rejected before we spent engineering on them.
Core scientific finding
A per‑(dataset, finding) label‑reliability matrix, anchored to radiologist labels, separates “noisy label” from “intrinsically hard” — and tells you exactly which data to trust.
01

The system under study

Chikitsa runs a panel of independent “readers” whose outputs are combined by tiered consensus with per‑finding provenance. It fails open (a crashed reader never silently reads as “normal”), normalises scanner variation on input, and flags when a new scanner needs calibration. A single frozen foundation embedding is computed once per scan and reused by the specialist readers below.

ENCODER
Frozen foundation embedding
one forward / scan → 1024-dim
A · B · C
Broad classifiers + zero-shot
TorchXRayVision, X-Raydar, CheXzero
D · F · G
Anatomy & trained specialists
CTR, pneumothorax, pneumonia
H · I · J · K
Embedding-probe readers
TB, consolidation, atelectasis, effusion
N + OOD
Triage gate + new-scanner advisory
abnormal priority · Mahalanobis OOD
Cross‑machine doctrine (all three layers necessary): ① normalise the input (modality LUT → VOI windowing → percentile scaling); ② train on multiple sources for discrimination; ③ calibrate the operating point per deployment site. Calibration corrects the threshold, never the discrimination — AUC is threshold‑free and a low‑AUC reader can’t be calibrated into working.
Data foundation — 15 public datasets across 6 countries, 2 labelling regimes. United States (NIH ChestX‑ray14, CheXpert, ChestX‑Det, RSNA, Montgomery, Indiana/Open‑i, ReXGradient), Spain (PadChest), Vietnam (VinDr), China (Shenzhen, TBX11K, Guangzhou), Japan (JSRT), and India — the INTBCXR tuberculosis cohort from the National Institute for Research in Tuberculosis (NIRT), Chennai. TB screening was in fact the first trained reader (H): built by pulling the NIRT batches directly to the training box and incrementally fine‑tuning a RAD‑DINO probe on an ephemeral GPU — the effort that seeded the whole cross‑site programme. (The deployed TB probe later ran on darthPanda, honestly flagged as single‑source, and now runs clean cross‑site on Montgomery + Shenzhen.)
02

The research, step by step

Each step is a hypothesis, the test, the result, and an explicit verdict. Rejections are the point — they’re where the money and time were saved.

Accepted / adopted Rejected on the data Refined / partially held Deferred / not pursued
1Pneumonia

Is the cross‑site pneumonia collapse an age / population gap?

Rejected3-source matrix · RAD-DINO probe
Hypothesis
Pneumonia doesn’t transfer because Guangzhou is pediatric and CheXpert is adult.
Test
Add adult darthPanda as a 3rd source; measure all pairwise transfer.
Result
Guangzhou ↔ darthPanda transfer 0.99 — across the age divide. CheXpert stands alone (0.33–0.54).

→ Not a population gap. The fault line is CheXpert’s report‑mined labels, which reframed the entire program toward label quality.

2Backbones

Will a stronger backbone lift accuracy?

Partly rejectedGPU bake-off · CheXpert within-site
Test
RAD-DINO vs EVA-X vs general DINOv2, frozen features + probe.
Result
RAD-DINO 0.785 ≈ EVA-X 0.784 ≫ DINOv2 0.714. Medical pretraining worth ~5–6 pts; among medical backbones a tie.
Verdict
Backbone is not the bottleneck. Cross‑site pneumonia collapse persisted across all backbones — confirming it’s a data problem.
3Head tweaks

Can a better head / features / uncertain‑label policy squeeze more out?

Rejected

Tested MLP & gradient‑boosting heads, RAD‑DINO×EVA‑X feature fusion, and U‑Ones/U‑Zeros uncertain‑label policies. Net gain: +0.035 AUC — not worth shipping. The bottleneck was elsewhere. This is where we pivoted to the label investigation.

4Literature

What does the proven, deployable pipeline actually look like?

Adopted as doctrine3-thread evidence review
  • Full fine‑tuning on 1–2 datasets is +2% in‑distribution but −7% out‑of‑distribution (Kumar et al.) → prefer frozen / LoRA / LP‑FT.
  • Balanced multi‑source pooling is the biggest reliable OOD lever (~+4 AUC) — when sources are label‑consistent.
  • Cross‑site failure is “a shift in the labels, not the images” (Cohen et al.).
  • Commercial bar = 6–7 figures of multi‑site data + independent external validation. Flagged: RAD‑DINO ships under a research‑only license.
5Cross-site

First real multi‑finding external validation (CheXpert ↔ NIH)

Baseline established

Mean external AUC 0.70. The structural findings transfer (effusion, pneumothorax, cardiomegaly ≈ 0.75–0.77); the label‑ambiguous ones don’t (consolidation, pneumonia ≈ 0.59–0.64) — exactly the split the label thesis predicts.

6Pooling

Does balanced multi‑source pooling give the promised +4 AUC?

Refined
Test
Pneumonia leave‑one‑site‑out across 4 sites; balanced pool vs best single source.
Result
−0.012 — pooling did not beat the best single source.
Why
Pooling label‑inconsistent sources dilutes a clean one. The literature’s +4 was on label‑consistent findings.
7Ark+

Is Ark+ (supervised transfer leader) a better encoder than RAD‑DINO?

Rejectedconfound caught by external test

On home‑turf CheXpert/NIH, Ark+ led by +0.037. But CheXpert & NIH are in Ark+’s pretraining set. On truly‑external PadChest it lost by −0.014. Supervised pretraining overfit its training distributions. Rejected — and a reminder that in‑domain wins can be a mirage.

8Label audit

Can we measure which (dataset, finding) labels are noise?

Accepted — core methodcross-dataset learnability + Confident Learning

Yes. A finding’s best within‑site AUC across datasets is its “learnable‑when‑clean” ceiling; a dataset far below it is contributing label noise, not difficulty. Pneumonia is perfectly learnable (0.998 on curated Guangzhou/darthPanda) — so CheXpert’s 0.645 and NIH’s 0.636 are proven noise. Corroborated with cleanlab.

9Clean anchors

Anchor the reliability matrix to radiologist labels (VinDr → PadChest → ChestX‑Det)

Accepted

One radiologist cohort (VinDr) suggested consolidation is easy‑when‑clean (0.934); a second (PadChest) disagreed (0.748). A third (ChestX‑Det, NIH re‑annotated by 3 radiologists) broke the tie at 0.849 — the honest clean ceiling. Lesson recorded: one clean anchor can mislead; use ≥ 2.

10Payoff test

Does dropping noisy labels actually help?

Refined — “add clean, don’t remove noisy”
Confirmed
A small clean set crushes a big noisy one on a trustworthy test: +0.06 to +0.43 AUC.
Corrected
But pooling clean + noisy ≈ or beats clean‑only. Noisy labels are weak signal, not anti‑signal.
Doctrine
The fix is to guarantee a clean source in the mix for every finding — not to delete the noisy data.
11Specialists

Deploy clean‑anchored specialist readers (I · J · K · N)

Shipped

Built consolidation, atelectasis, effusion and a normal/abnormal triage gate as clean‑anchored probes, trained on three radiologist cohorts + report‑mined coverage, validated leave‑one‑cohort‑out. Effusion is robust (~0.88 across cohorts). Atelectasis settled as intrinsically ~0.77–0.82 — three radiologist cohorts agree it caps there, so the reader isn’t underperforming; the finding is just hard. Knowing where to stop is a result.

12Licensing

Can the stack be commercially clean?

Adopted

Audit found most public CXR data and the deployed RAD‑DINO encoder are research‑only. Two MIT‑licensed medical encoders exist: EVA‑X (lightweight) and MedImageInsight (Microsoft). The knowledge (reliability matrix, ceilings, architecture) is unlicensed and carries over regardless.

13Final bake-off

Which commercially‑usable encoder generalises best?

MedImageInsight adopted5-dataset leave-one-dataset-out

Across 5 datasets / 3 countries / 2 labelling regimes: MedImageInsight 0.797 > EVA‑X 0.756 > RAD‑DINO 0.700. The research‑licensed RAD‑DINO is the worst cross‑dataset generaliser — so going commercial is an accuracy upgrade, not a trade‑off. (Full chart below.)

14Deploy

Migrate the whole ensemble to MedImageInsight

Live in production

Retrained all embedding readers (H/I/J/K/N) on MedImageInsight, refit the OOD reference in its embedding space, benchmarked the CPU cost (1.8× RAD‑DINO, ~5.9 s/scan — acceptable for non‑real‑time reads), built a one‑env‑var encoder switch (instant rollback), smoke‑tested end‑to‑end, and deployed. Healthy, no degraded readers.

15Clean + wider

Widen the panel, then prove & deploy commercially‑clean weights

ShippedGPU‑free · cached features
Widen
Regenerated labels for 11 more findings against the cached embeddings; three cleared the proven‑capability floor and shipped as Readers T·U·V (emphysema, mass, diaphragmatic hernia) — panel now 15.
Prove clean
Retrained the probes on open sources only; a five‑finding core (cardiomegaly, pneumothorax, effusion, atelectasis, TB) holds cross‑site with no annotation pass — the provenance blocker, largely closed.
Deploy clean
TB + cardiomegaly swapped to clean weights in production; TB’s honest 0.72 (Montgomery+Shenzhen) replaced a misleading single‑source 0.995.

→ The commercial‑data provenance issue — the one red flag left in “where it stands” — went from must‑fix to largely solved, for the cost of CPU time on already‑cached features.

03

Headline results

Encoder generalisation — 5‑dataset leave‑one‑out AUC

Train on four datasets, test on the held‑out fifth. This is the deployment‑relevant number. Higher = generalises better to an unseen hospital.

Finding (held-out mean)RAD-DINO · researchEVA-X · MITMedImageInsight · MIT
Pleural Effusion 0.816 0.830 0.870
Consolidation 0.681 0.723 0.759
Atelectasis 0.602 0.639 0.724
Cardiomegaly 0.773 0.831 0.845
Pneumothorax 0.628 0.756 0.787
MEAN — generalisation 0.7000.7560.797

Fast estimate (4k random samples/dataset, single split). Absolute values are conservative; the ranking is stable across all five findings and both metrics. Datasets: CheXpert & NIH (US, report‑mined), VinDr (Vietnam), PadChest (Spain), ChestX‑Det (US, radiologist).

Label reliability — clean anchor vs report‑mined

Within‑site AUC (RAD‑DINO probe). A radiologist ceiling far above the report‑mined value = the labels are noise.

FindingRadiologist*CheXpertNIH
Pneumonia0.9980.6450.636
Consolidation0.9340.7070.737
Atelectasis0.8990.6920.801
Pleural Effusion0.9210.8620.848
Cardiomegaly0.9610.8280.892
Pneumothorax0.8780.8580.843

*Best of VinDr / PadChest / ChestX‑Det. Pneumonia clean ceiling from curated Guangzhou/darthPanda.

Readers retrained on the new encoder

Leave‑one‑anchor‑out AUC of the deployed specialist probes. MedImageInsight wins every reader.

ReaderRAD-DINOEVA-XMedImgIns
I · Consolidation0.8520.7950.821
J · Atelectasis0.7680.6730.817
K · Pleural Effusion0.8800.8710.904
N · Triage (abnormal)0.7560.7820.853
H · TB screen0.9960.9970.999

TB is same‑source (darthPanda) — optimistic; cross‑site TB is a known future validation.

CPU cost of the swap

Encoderms / scandim
RAD-DINO (86M ViT)3,353768
MedImageInsight (360M DaViT)5,8891024

1.8× — tolerable for non‑real‑time interpretation.

04

Path to commercial parity

The gap to a good commercial CXR product is not model accuracy — on the findings we cover, our cross‑site generalisation already sits in the published vendor band. The gap is productisation and evidence: named operating points, breadth of findings, localisation, integration, and regulatory clearance. Most of that is engineering and data work our architecture absorbs directly; the rest is exactly what a partner is meant to fund. This section is the live status of closing it.

The operating‑point datasheet

Every reader now ships two named operating points — a high‑sensitivity and a high‑specificity threshold — with the sensitivity/specificity you actually get at each. Thresholds are chosen leave‑site‑out (picked on other cohorts, reported on an unseen one), the format a partner lines up against a Qure or Lunit datasheet. This is the deliverable a raw AUC cannot replace.

Reader · findingAUC High‑sens
sens / spec
High‑spec
sens / spec
NPV*Validation
K · Pleural effusion0.9100.90 / 0.730.76 / 0.900.95cross‑site (3 cohorts)
M · Pneumothorax new0.8970.90 / 0.620.76 / 0.900.99cross‑site (3 cohorts)
L · Cardiomegaly0.850.90 / 0.660.68 / 0.900.95clean · livecommercial‑clean (NIH+ChestX‑Det)
N · Triage (abnormal)0.8950.90 / 0.700.66 / 0.900.748 training cohorts; held-out VinDr+PadChest
J · Atelectasis0.8350.90 / 0.530.55 / 0.900.97cross‑site (3 cohorts)
I · Consolidation0.7520.90 / 0.280.43 / 0.900.90cross‑site — label‑capped
H · Tuberculosis0.720.90 / 0.750.81 / 0.900.99clean · livecross‑site (Montgomery+Shenzhen) — replaced single‑source 0.995
P · Aortic enlargement new0.9690.90 / 0.910.91 / 0.900.98single‑source (VinDr) — optimistic ⚠
R · Pulmonary fibrosis new0.7630.90 / 0.410.39 / 0.900.92cross‑site (VinDr+ChestX‑Det)
S · Calcification new0.7510.90 / 0.310.43 / 0.900.98cross‑site (VinDr+ChestX‑Det)
Q · Pleural thickening new0.7380.90 / 0.410.31 / 0.900.90cross‑site (VinDr+ChestX‑Det)
O · Nodule / mass detector0.872RetinaNet (BSD) — real bounding boxes; in‑domain (VinDr val), cross‑cohort TBD
V · Diaphragmatic hernia new0.9210.90 / 0.750.85 / 0.901.00cross‑site (NIH+PadChest)
U · Mass new0.7220.57 / 0.900.99cross‑site (NIH+PadChest) — modest, advisory weight
T · Emphysema new0.7120.52 / 0.900.99cross‑site (NIH+PadChest) — modest, advisory weight

*NPV at the high‑specificity point, at the cohort’s observed prevalence. Leave‑site‑out rotation with 95% bootstrap CIs; full per‑site tables in vendor/reader_*/opdx.json. Effusion is the lead finding; TB’s 0.995 is single‑source (darthPanda) and is honestly flagged — a second TB cohort is required for a real number.

The delta, graded

What separates us from an incumbent datasheet, and who closes each gap.

GapCan we fill it?
Named operating points (sens/spec)Done
Breadth of findingsIn progress
High‑specificity normal rule‑outReframe
Image‑quality / view gateOur stack
Localisation / heatmapsDeployed
External / prospective validationWith a partner
DICOM / PACS / RIS integrationEngineering
FDA / CE clearanceCapital + partner

The un‑fillable‑alone rows (clearance, prospective trial, PACS) are the partner ask — the science is de‑risked; those are funded, not researched.

Build sequence

One GPU dependency total; the rest runs CPU‑only on the frozen embedding.

  • Phase 0 — Operating‑point harness. Done Leave‑site‑out sens/spec/PPV/NPV with CIs for every live reader; wired into the API so each response is self‑documenting.
  • Phase 1 — Breadth (now 12 findings). Live Wave 1 (cardiomegaly, pneumothorax) then wave 2 (nodule/mass, aortic enlargement, pleural thickening, pulmonary fibrosis, calcification) — all clean‑anchored MII probes that cleared the proven‑capability floor, and all GPU‑free: the extra radiologist labels were regenerated from VinDr + ChestX‑Det and validated row‑for‑row (0 mismatches) against the already‑cached features. Nodule/mass now runs as a trained RetinaNet detector (torchvision/BSD — deliberately not AGPL YOLO, for commercial cleanliness) on VinDr radiologist boxes: real bounding boxes + image‑level AUC 0.87 in‑domain, superseding the localisation‑limited probe. It drives the nodule consensus vote and joins the rule‑out veto.
  • Phase 2a — Normal-label expansion. Done — yield ~2× Added clean-normal cohorts from China (Shenzhen), US-Maryland (Montgomery) and a US community hospital (Indiana). Reader N's safe auto‑clear yield (at 98% abnormal-sensitivity) rose from 24% → 44% on held-out sites — N was data-limited on clean normals, not at its ceiling. Live.
  • Phase 2b — More open normals (RSNA + JSRT). Done — +2 pts Added RSNA (large clean-normal volume) and JSRT (Japan), validated leakage-safe on VinDr+PadChest (ChestX-Det held out of test — it shares NIH images with RSNA). Yield 43%→46%, AUC 0.885→0.895 — a real but small gain: diminishing returns, because RSNA is the same US population as our NIH (volume, not new geography). Live.
  • Phase 2c — Rule‑out advisory. Done — live The ≥98%-sensitivity-for-abnormal auto‑clear point (threshold 0.12) is wired as an advisory: a study is flagged “high-confidence normal, eligible for worklist deprioritisation” only when Reader N is below threshold and no STAT reader (pneumothorax / effusion / consolidation / cardiomegaly / TB) fires. Clears ~46% of normals (~24% of all studies) at a 2% abnormal-miss rate; the multi-reader veto is the safety net. Advisory only — never an autonomous normal report.
  • Phase 2d — Credentialed data. Next The next real yield lever is a new large population — MIMIC-CXR / BRAX — via PhysioNet credentialing, not more open scraping.
  • Phase 3 — Quality / view gate. Next A cheap probe on the same embedding; upgrades every downstream reader’s trust.
  • Phase 4 — Localisation heatmaps. Done — live A linear‑probe class‑activation map on the DaViT pre‑pool tokens (u = γ·Wproj·(w/σ)) — no retrain, captured by a forward‑hook on the same embedding pass, so ~zero extra compute. Validated on VinDr radiologist boxes (pointing‑game: cardiomegaly 0.78, effusion 0.31, nodule 0.22; CAM‑inside‑box ~2× outside): reliable for large / structural findings, coarse for small / diffuse ones — so shipped as an advisory ROI overlay with a per‑finding toggle in the reader UI, while the RetinaNet detector keeps ownership of precise nodule boxes.
  • Phase 5 — Multi‑finding detector. In progress Extending the nodule RetinaNet to the five other VinDr box findings (effusion, consolidation, pleural thickening, aortic enlargement, cardiomegaly) to replace the coarse CAM with real boxes wherever radiologist boxes exist. Loader + 7‑class head validated (CPU pre‑flight); full training pending on‑demand GPU capacity. Reports per‑class AUC and a pointing‑game directly comparable to the CAM baseline it upgrades.
Live today: a fifteen‑finding reader panel — effusion, pneumothorax, cardiomegaly, consolidation, atelectasis, nodule/mass, aortic enlargement, pleural thickening, pulmonary fibrosis, calcification, emphysema, mass, diaphragmatic hernia, TB screen and an abnormal‑triage gate with a rule‑out advisory — each returning a named operating point with measured sensitivity and specificity, running CPU‑first on a commercially‑clean (MIT) encoder, with TB and cardiomegaly already on commercial-clean weights. The remaining parity gaps are productisation and evidence, not unsolved modelling.
05

What we tested and rejected

For a partner, the rejections are the credibility. Each one is an experiment that changed our direction rather than a claim we asserted.

HypothesisVerdictEvidence
A bigger / better backbone lifts accuracyRejectedMedical backbones tie (0.785 ≈ 0.784); bottleneck is labels, not features
Better head / feature fusion / uncertain‑label policy helpsRejected+0.035 AUC — insignificant
Balanced pooling always adds ~+4 AUCRefined−0.012 on pneumonia; needs label‑consistent sources
Ark+ is a stronger encoderRejected+0.037 in‑domain but −0.014 external (pretraining overlap)
Consolidation is intrinsically hardRejected0.93 with clean labels — it was label noise
Atelectasis can be pushed past ~0.82 cross‑siteRejected3 radiologist cohorts agree on an intrinsic ceiling
“Exclude noisy labels” is the fixRefined“Add a clean source” — noisy data is weak, not harmful, signal
Full fine‑tuning on our dataNot pursuedLiterature: distorts features, −7% OOD; frozen/LoRA preferred
06

Promising directions we did not pursue

Genuine, evidence‑backed openings — recorded so a partner can pick them up. Most are gated on data access or compute we chose not to spend yet.

  • LoRA / LP‑FT scored out‑of‑distribution. Parameter‑efficient adaptation of the frozen encoder — the one adaptation the literature says can help OOD. Designed, not yet run.
  • MIMIC‑CXR & BRAX external validation. Large US‑academic and Brazilian cohorts on PhysioNet — the credentialed access to test every finding on new populations (credentialing in progress).
  • A clean‑label edema source. Edema has no open radiologist‑labelled dataset; every candidate is report‑mined or too small. It is the one finding we cannot yet clean‑anchor.
  • Reader H (TB) cross‑site validation. Done The same‑source 0.999 (darthPanda) is retired — the TB reader now runs a clean two‑cohort probe (Montgomery+Shenzhen), honest cross‑site 0.72, live in production.
  • Cardiomegaly & pneumothorax specialists. Now shipped Built as Readers L & M (leave‑one‑anchor‑out 0.90 / 0.88); see the parity datasheet above. Recorded here as the worked example of the breadth recipe.
  • Mass / nodule reader from VinDr. Radiologist box labels exist; a global embedding probe is localisation‑limited, so it needs a detection head, not a probe.
  • Full‑scale CheXpert (223k). We used ~20k of 224k; more positives would firm up the rare findings — a bounded, cheap GPU run.
  • Per‑site calibration in production. The calibration + OOD machinery is built and dormant; wiring the threshold‑at‑specificity loop per deployment site is the last step to a truly site‑robust product.
07

Independent external validation

We stress-tested the deployed readers on a large, unseen US multi‑site cohort (ReXGradient‑160K — ~6,000 adult studies drawn as a random slice, 79 sites) that shares no data with training. The point was not just a number, but a protocol that separates a real generalisation failure from a measurement artifact — because they demand opposite responses. Two further never‑trained cohorts — Indiana/OpenI (a US community hospital) and JSRT (Japan) — corroborate the result: the featured panel holds at Indiana (effusion 0.95, cardiomegaly 0.93, pneumothorax 0.95, consolidation 0.96, atelectasis 0.84).

Process integrity, first: the first pass showed every reader at ~0.50 (chance). Rather than report “our models fail,” we recognised a uniform collapse as the signature of a systematic artifact, traced it to 16‑bit image preprocessing, fixed it, and re‑ran. The same self‑critical reflex that earlier caught our own detector being weaker cross‑cohort.

Corrected benchmark — readers on the unseen cohort

Labels here are report‑mined (noisy), so every number is a conservative floor. Most of the panel holds at or above its cross‑site figure.

Findingunseen cohortcross‑siteread
Cardiomegaly0.8890.883held perfectly
Atelectasis0.8030.835held
Pulmonary fibrosis0.8030.763held (↑)
Consolidation0.7820.752held (↑)
Abnormal triage0.7780.895solid
Pleural effusion0.7280.910flagged → investigated
Pneumothorax0.5470.897flagged → investigated

Scientific attribution of the two flags

A pre‑registered protocol: (A) stratify by view to isolate domain shift, (B) purify the labels to impression‑level, negation‑ and treatment‑aware, to isolate label noise, (C) Confident‑Learning to quantify the label‑error rate.

Findingreport‑minedA: view splitB: purified labelsC: label errorverdict
Pleural effusion0.721no portable penalty0.92413.4%label noise — resolved
Pneumothorax0.547no portable penalty0.874 (76 pos)label noise — resolved

Effusion recovers to 0.924 on clean impression‑level labels — matching its cross‑site 0.91; the “drop” was the 13.4% error in report‑mined labels. Pneumothorax’s near‑chance value was pure label noise: a later re‑audit pinned the exact mechanism — the label extractor’s negation check spanned only 40 characters, so listed negations (“no effusion, or pneumothorax”) registered as positives (351 of 427 “positives” were negated mentions). A full‑sentence negation pass across all findings, on the identical deployed probe, lifted pneumothorax to 0.874 and effusion to 0.922 — both matching their internal figures. Neither was ever a model failure.

Conclusion. The readers do generalise to a large unseen US cohort; the apparent failures were measurement artifacts that a rigorous protocol exposed. Report‑mined benchmarks systematically understate true performance — the very label‑reliability thesis this project is built on, now demonstrated on a fresh cohort. The one honestly‑open item: a small, radiologist‑labelled pneumothorax sample to pin its exact number. Cost of the whole study: ~$2 of compute.

08

Where it stands

Deployed
Live pipeline running on MedImageInsight (MIT) — all readers, healthy, RAD‑DINO one env‑var away for rollback.
Commercially clean encoder
The single biggest licensing blocker is removed — and the swap improved generalisation.
Reusable assets
SDK‑free GPU harness, the label‑reliability method, per‑finding clean ceilings, and a validated multi‑encoder switch.
What a partner gets: a validated, safety‑conscious CXR pipeline; a rigorous, reproducible method for judging label quality and encoder generalisation; and a de‑risked roadmap where the expensive dead‑ends have already been walked and documented. The remaining upside — MIMIC/BRAX validation, LoRA adaptation, edema data, site calibration — is gated mostly on credentialed data access, not on unsolved research.
Commercial-data provenance — largely resolved 2026-07-26
The encoder was already MIT; the readers were the data-side twin — several trained on non-commercial research data (VinDr, CheXpert-derived, PadChest). We retrained the specialist probes on commercial-clean open sources only (NIH-14, ChestX-Det/Apache, TBX11K/CC-BY, NLM Montgomery+Shenzhen), GPU-free from cached features, and validated leave-site-out: Cardiomegaly 0.87, Pneumothorax 0.85, Pleural effusion 0.81, Atelectasis 0.76, TB 0.76 all hold cross-site — a shippable clean core of five, and no radiologist annotation pass was needed after all. Deployed: TB and Cardiomegaly now run on clean weights in production (TB's clean 0.72 across Montgomery+Shenzhen replaced a misleading single-source 0.995); the remaining featured readers keep research weights in the demo build for peak accuracy, with clean variants reserved for a separate commercial-clean build. Residual gaps, honestly: Aortic enlargement has no open clean source (VinDr-only), and seven findings (hernia, emphysema, mass, fibrosis, pleural‑thickening, nodule, edema) are clean on a single cohort and want a second. ReXGradient is research/eval only and is used for validation, never training.