UR-MLLM: Uncertainty-aware Revisit Reasoning in Multimodal Large Language Models for Radiology Report Generation
Organizations: MedVisAI Lab · Lee Kong Chian School of Medicine, Nanyang Technological University, Singapore · Centre of AI in Medicine, Singapore · Institute of Advanced Intelligence and Computing (IAIC), A*STAR, Singapore · AI Thrust, The Hong Kong University of Science and Technology (Guangzhou) · Ruijin Hospital, Shanghai Jiao Tong University School of Medicine, China
Abstract
Radiologists generate diagnostic reports through iterative and selective revisiting of suspicious regions to refine their interpretations. Recent multimodal large language models (MLLMs) for radiology report generation (RRG) have shifted from text-only reasoning toward a ``Thinking-with-Images'' paradigm, incorporating visual evidence into the reasoning process. However, existing methods provide static visual evidence without a dynamic revisit mechanism during reasoning, neglecting how radiologists re-examine uncertain observations. To this end, we propose an Uncertainty-aware Revisit Reasoning MLLM (UR-MLLM) framework that dynamically revisits uncertain regions during reasoning for RRG. UR-MLLM is first equipped with uncertainty perception by training on an uncertainty-aware dataset. We then construct a multimodal reasoning trajectory dataset together with a detect-and-copy mechanism, which guides when and where to revisit. Finally, a visual grounding reward refines this behavior through reinforcement learning, aligning the revisited regions with corresponding anatomical structures. Experiments on MIMIC-CXR and IU-Xray show that UR-MLLM achieves state-of-the-art performance, highlighting the value of uncertainty-aware visual revisit reasoning for reliable and clinically aligned report generation.
Figures & tables
| Model | BLEU-1 | BLEU-2 | BLEU-3 | BLEU-4 | METEOR | ROUGE-L |
|---|---|---|---|---|---|---|
| LLaVA-1.5-7B 17 | 19.09 | 7.46 | 2.81 | 1.25 | 19.16 | 18.36 |
| LLaVA-1.5-7B-SFT-CXR | 22.58 | 15.06 | 9.43 | 6.13 | 25.71 | 28.09 |
| HuatuoGPT-Vision-7B 3 | 19.33 | 9.42 | 4.64 | 1.93 | 26.01 | 20.78 |
| MAIRA-2 2 | 24.94 | 14.12 | 9.01 | 6.14 | 26.78 | 28.65 |
| Qwen2.5-VL-3B 29 | 13.09 | 5.42 | 2.08 | 0.89 | 20.81 | 15.23 |
| Gemini 2.5 Pro 28 | 12.54 | 5.20 | 2.25 | 1.05 | 21.19 | 15.01 |
| Model | CheXbert | RadGraph | |||
|---|---|---|---|---|---|
| Acc. | Ma-F1 | Mi-F1 | Ent.F1 | F1 | |
| LLaVA-1.5-7B | 63.25 | 4.94 | 38.54 | 7.61 | 4.95 |
| LLaVA-1.5-7B-SFT-CXR | 72.72 | 5.00 | 51.51 | 17.57 | 13.06 |
| HuatuoGPT-Vision-7B | 71.15 | 5.34 | 48.62 | 15.92 | 9.06 |
| MAIRA-2 | 67.39 | 6.34 | 46.53 | 25.01 | 17.05 |
| Qwen2.5-VL-3B | 67.78 | 4.75 | 37.66 | 9.46 | 4.66 |
| Model | BLEU-1 | BLEU-2 | BLEU-3 | BLEU-4 | METEOR | ROUGE-L |
|---|---|---|---|---|---|---|
| LLaVA-1.5-7B | 16.52 | 6.60 | 3.00 | 1.40 | 19.65 | 17.48 |
| LLaVA-1.5-7B-SFT-CXR | 21.42 | 12.95 | 8.03 | 5.20 | 23.24 | 26.40 |
| HuatuoGPT-Vision-7B | 19.33 | 10.70 | 6.28 | 2.81 | 31.02 | 23.42 |
| MAIRA-2 | 26.37 | 15.60 | 9.64 | 6.03 | 25.52 | 31.18 |
| Qwen2.5-VL-3B | 11.38 | 5.05 | 2.28 | 1.05 | 21.65 | 15.01 |
| CURV | 29.23 | 18.76 | 12.08 | 6.86 | 38.30 | 39.08 |
| Model | CheXbert | RadGraph | |||
|---|---|---|---|---|---|
| Acc. | Ma-F1 | Mi-F1 | Ent.F1 | F1 | |
| LLaVA-1.5-7B | 72.03 | 4.66 | 46.81 | 13.37 | 8.76 |
| LLaVA-1.5-SFT | 76.34 | 5.84 | 53.33 | 16.19 | 10.31 |
| HuatuoGPT-V-7B | 89.89 | 5.57 | 67.07 | 22.98 | 13.96 |
| MAIRA-2 | 88.74 | 6.22 | 70.75 | 34.53 | 24.01 |
| Qwen2.5-VL-3B | 80.64 | 4.92 | 49.47 | 12.70 | 6.26 |
| Model | NLG | CE | |||||||
|---|---|---|---|---|---|---|---|---|---|
| BL-1 | BL-2 | BL-3 | BL-4 | MTR | RG-L | F1 | Rec. | Prec. | |
| Base (Qwen2.5-VL-3B) | 13.09 | 5.42 | 2.08 | 0.89 | 20.81 | 15.23 | 4.75 | - | - |
| + S1 | 9.88 | 4.31 | 1.91 | 1.02 | 20.33 | 10.74 | 12.35 | 28.06 | 13.47 |
| + S2 | 23.66 | 13.88 | 8.91 | 5.96 | 21.77 | 18.69 | 11.66 | 24.50 | 14.68 |
| + S1 + S2 (w/o visual revisit) | 10.72 | 5.22 | 2.43 | 1.10 | 18.57 | 14.59 | 3.87 | - | - |
| + S1 + S2 (w/ static vision) | 16.13 | 5.01 | 5.19 | 1.98 | 17.10 | 14.97 | 6.13 | 21.30 | 14.96 |
Appendix figures & tables16 assets
Supplementary material from the paper’s appendix.
Appendix
| Dataset | Split | Image-level | Item-level |
|---|---|---|---|
| Stage 1 SFT data | |||
| uncertainty-aware dataset | full | 101,457 images | 542,834 bbox items |
| ( 5.35 bbox / image, median 4, max 39) | — | — | — |
| Stage 2 SFT data | |||
| multimodal_reasoning_trajectory | full | 1,909 images | 3,172 revisit anchors |
| Type A (with detect() calls) | — | 1,292 images | 3,172 anchors |
| (a) Variant: impression label only — look for unlabelled findings content | |
|---|---|
| system content | You are a radiology report parser. The report below has a labeled IMPRESSION section but no labeled FINDINGS section. Determine whether the report also contains radiographic observations (findings content)—any text that describes the appearance of anatomical structures (e.g. lungs, heart, bones, pleura) using imaging language. Answer YES (true) if the report contains any of the following outside the IMPRESSION section: — one or more sentences describing the appearance of anatomical structures; — observations using terms like “clear”, “normal”, “enlarged”, “opacity”, “effusion”, “no evidence of”, “stable”, “unchanged”, etc.; — a descriptive paragraph providing detail beyond the impression summary. Answer NO (false) only if the report contains nothing but the IMPRESSION section and possibly a brief technique / clinical-history note with no imaging observations whatsoever. Reply only with JSON: {"has_findings": true} or {"has_findings": false} . No explanation. |
| (b) Variant: findings label only — look for unlabelled impression / conclusion | |
| system content | You are a radiology report parser. The report below has a labeled FINDINGS section but no labeled IMPRESSION section. Determine whether the report also contains an impression or conclusion—any text that provides a clinical interpretation, summary, or diagnosis based on the findings. Answer YES (true) if the report contains any of the following: — one or more sentences summarising the overall clinical interpretation; — a concluding statement giving a diagnosis or differential; — a final paragraph or sentence that reads as a summary / conclusion rather than a detailed observation. Answer NO (false) only if the report ends with detailed findings observations and contains no interpretive summary or conclusion anywhere. Reply only with JSON: {"has_impression": true} or {"has_impression": false} . No explanation. |
| (c) Variant: no header labels — look for findings and impression jointly | |
| system content | You are a radiology report parser. The report below has no labeled FINDINGS or IMPRESSION sections. Determine whether the report contains both types of content, even without labels: A) findings content: text describing the radiographic appearance of anatomical structures (lungs, heart, bones, …); B) impression / conclusion content: text that summarises the overall clinical interpretation, diagnosis, or conclusion. Answer YES (true) if you can identify both types of content in the report, even if they are not in separate paragraphs. Answer NO (false) if the report contains only one type of content, or if it is too brief to clearly contain both. Reply only with JSON: {"has_both": true} or {"has_both": false} . No explanation. |
| User content (shared across all three variants) | |
| system content | You are a medical text analysis expert specialising in uncertainty detection. Analyse the provided radiology report section and identify all uncertainty expressions—words or phrases that indicate diagnostic uncertainty, probability, or hedging (e.g. likely, possibly, may, consistent with, cannot exclude, suspicious for). |
| user content | Analyse the following radiology report section and identify uncertainty expressions. Text: ‘‘{text}’’ Respond with a JSON object containing exactly these keys: "uncertainty_phrases" : list of uncertainty expressions found (strings); "confidence_level" : "high" , "medium" , or "low" ; "uncertainty_type" : "structural" , "semantic" , or "both" ; "reasoning" : one-sentence explanation. If no uncertainty expressions are found, return {"uncertainty_phrases": [], "confidence_level": "low", "uncertainty_type": "structural", "reasoning": "No uncertainty found."} |
| system content | You are a radiology NLP expert. Decide whether a radiology report sentence expresses diagnostic uncertainty about a finding. Uncertainty markers include: likely, may, might, could, possibly, probably, suspicious, suggestive of, cannot exclude, consistent with, versus, questionable, equivocal, appears, consider, reflect, represent , etc. Reply only with a JSON object: {"is_uncertain": true} or {"is_uncertain": false} . No explanation. |
| user content | Sentence: ‘‘{phrase}’’ |
| (a) Initial call: hedging rewrite + visual-revisit summary (temperature ) | |
|---|---|
| system content | You rewrite a single radiology-reasoning sentence and emit a short visual-revisit summary. You obey the schema strictly and never invent findings beyond those in the provided report phrase. |
| user content | ORIGINAL_SENTENCE: {sentence} IMAGENOME_PHRASE: {phrase} ANATOMY: {anatomy} OBJ_TOKEN: {obj_token} REVISIT_STANCE: {stance} Rules. 1. hedged_sentence : rewrite ORIGINAL_SENTENCE so it (a) contains at least one hedging cue and (b) contains OBJ_TOKEN exactly once , placed immediately after the ANATOMY mention. Preserve clinical meaning. The hedging cue must be an exact substring from the closed list (case-insensitive, no inflection—e.g. use “suggests”, not “suggesting” / “suggest” / “suggested”; use “appears”, not “appearing”): [{hedges}] . 2. revisit_summary : 1–2 sentences, references OBJ_TOKEN exactly once, with stance={stance} ( confirm / qualify / alternative ). Do not introduce findings absent from IMAGENOME_PHRASE . The revisit_summary also must contain at least one exact hedging cue from the list above —do not inflect. Examples of the hedging cue used inline: OK: “The cardiac silhouette {obj_token} appears enlarged …” OK: “The findings in the left lung {obj_token} are likely …” BAD: “… suggesting pulmonary edema …” (inflection) BAD: “…is suggestive …” (must be “suggestive of”) Return strict JSON: {"hedged_sentence": "…", "revisit_summary": "…"} . |
| (b) Self-correction turn — fires when (a) output fails the closed-vocabulary hedge-cue verifier (temperature , conversation continues from (a)) | |
| user content (continuation) | Your previous output did not use a hedge cue from the closed list. Re-emit the JSON. Both fields must use one of: may, likely, could, appears, suggests, suggestive of, concerning for, consistent with, possible, probable, potential, perhaps . |
| Stage | Purpose | Input | Output schema |
|---|---|---|---|
| 1A | Findings/Impression section parser | full report | {has_findings|has_impression|has_both: bool} |
| 1B | Sentence-level uncertainty extraction | report section | { phrases, conf, type, reason } |
| 1C | Per-phrase uncertainty classifier | ImaGenome phrase | {is_uncertain: bool} |
| 2A | Hedging rewrite + revisit summary | anchor record (5 fields) | {hedged_sentence, revisit_summary} |
| 2B | Self-correction (fallback for 2A) | 2A output + correction | same as 2A |
| system content | You are a radiology AI assistant. Analyze chest X-ray images and identify anatomical regions where the radiologist expressed diagnostic uncertainty. |
|---|---|
| user content | Analyze this chest X-ray and identify all anatomical regions with diagnostic uncertainty. Return a JSON list where each item contains: "bbox_2d" : [x1, y1, x2, y2] (normalised coordinates 0–223); "label" : anatomical region name; "uncertainty" : the uncertain observation from the report. If no uncertain regions exist, return an empty list [] . |
| assistant target (example) | [ { "bbox_2d": [69, 70, 107, 108], "label": "right hilar structures", "uncertainty": "The hila are less prominent likely due to …" } ] |
| system content | (none) |
|---|---|
| user content | <image> Analyze this chest X-ray and generate a structured radiology report with explicit reasoning. Use <findings> , <thinking> , and <impression> sections. |
| assistant target (example) | <findings> PA chest X-ray shows … </findings> <thinking> …natural-language reasoning … The hazy appearance of the right lower lung field and right hilar lymphadenopathy <obj1> suggest pneumonia. detect( query="right hilar lymphadenopathy", objects=["<obj1><region>[0.46, 0.23, 0.57, 0.44]</region>"]) …continued reasoning re. <obj1> … </thinking> <impression> Bilateral hilar lymphadenopathy and right lower lobe pneumonia … </impression> |
| system content | (none) |
|---|---|
| user content (identical to Stage 2) | <image> Analyze this chest X-ray and generate a structured radiology report with explicit reasoning. Use <findings> , <thinking> , and <impression> sections. |
| supervision | GRPO with the four group-relative rewards listed in this table’s caption. No token-level target. |
| Stage 1 | Stage 2 | Stage 3 | |
|---|---|---|---|
| System prompt | ✓ | — | — |
| User prompt template | detection (JSON) | structured report | same as S2 |
| Output schema | JSON array | <findings>/<thinking>/<impression> | same as S2 |
| detect() in target | — | only Type-A samples | emergent under reward |
| Supervision | SFT (cross-entropy) | SFT (cross-entropy) | GRPO (4 rewards) |
| system content | You are a senior radiologist evaluating an AI-generated chest X-ray reasoning trace. You are given the ground-truth (radiologist-written) report and an AI-generated output that contains <findings> , <thinking> , and <impression> sections. You will score the AI output on five dimensions on a – 5-point rating scale. Output strict JSON only. Length and writing style are not criteria. You do not know which AI model produced the output. |
|---|---|
| User content (scoring rubric, – integer per dimension; higher is better) | |
| 1. clinical plausibility | How medically sensible is the reasoning given a chest X-ray? 1 = medically incorrect or nonsensical. 3 = mostly plausible with notable inaccuracies. 5 = fully clinically valid; a radiologist would accept the inferences. |
| 2. faithfulness | Compare claims in the AI output (especially in <findings> and <thinking> ) against the ground-truth report. 1 = severely hallucinated; the trace asserts findings clearly absent from the GT. 3 = partially grounded; some unsupported claims. 5 = fully grounded; no findings or locations introduced beyond what the GT supports. |
| 3. coherence | Internal logical consistency of <thinking> . 1 = self-contradictory, jumps between unrelated claims. 3 = mostly coherent, with some logical gaps. 5 = clean logical progression from observation to inference, no contradictions. |
| 4. findings impression bridge | How well does <thinking> motivate <impression> ? 1 = impression conclusions are not supported by <thinking> . 3 = some impression statements are supported, others are not. 5 = every claim in <impression> is traceable to reasoning in <thinking> . |
| 5. uncertainty calibration | Are hedge words ( likely, may, appears, suggestive of, possible, consistent with , …) and confident assertions placed appropriately? 1 = hedges used randomly or missing where evidence is weak. 3 = some hedges are warranted, others misplaced. 5 = hedges only where evidence is genuinely uncertain; commitment where evidence is strong. |
| Dimension | SFT | GRPO | GRPO no-revisit |
|---|---|---|---|
| Clinical plausibility | |||
| Faithfulness | |||
| Coherence | |||
| Findings Impression bridge | |||
| Uncertainty calibration | |||
| Average |
| Datasets |
|---|
| • MIMIC-CXR (version 2.1.0): – Source: Johnson et al. 12 . – URL: https://physionet.org/content/mimic-cxr/2.1.0/ – License: PhysioNet Credentialed Health Data License 1.5.0. Access requires credentialing and signing a data use agreement. • Chest ImaGenome Dataset (version 1.0.0): – Source: Wu et al. 36 . – URL: https://physionet.org/content/chest-imagenome/1.0.0/ – License: Derived from MIMIC-CXR, subject to the PhysioNet Credentialed Health Data License 1.5.0. |
| Pre-trained Models and Baselines |
| • Qwen-2.5-VL-3B (Backbone for UR 2 -MLLM): – Source: Bai et al. 29 . – URL: https://github.com/QwenLM/Qwen3 – License: Apache 2.0 License. • LLaVA-1.5-7B: – Source: Liu et al. 17 . – URL: https://github.com/haotian-liu/LLaVA – License: Apache 2.0 License. • MAIRA-2: – Source: Bannur et al. 2 . – URL: https://huggingface.co/microsoft/maira-2 – License: Microsoft Research License Terms. • HuatuoGPT-Vision-7B: – Source: Chen et al. 3 . – URL: https://huggingface.co/FreedomIntelligence/HuatuoGPT-Vision-7B – License: Apache 2.0 License. • RadGraph: – Source: Jain et al. 9 . – URL: https://huggingface.co/StanfordAIMI/RRG_scorers – License: MIT License. • CheXbert: – Source: Smit et al. 26 . – URL: https://huggingface.co/StanfordAIMI/RRG_scorers – License: MIT License. |