A lung screening program reads the same patient again and again. The baseline low-dose CT, the one-year follow-up and the next one all sit in PACS, and the radiologist’s real question is often whether a nodule appeared, grew or stayed put. Giulia Romoli, Filippo Ruffini, Francesco Di Feola, Valerio Guarrasi, Matteo Tortora and Paolo Soda (Umeå University, Università Campus Bio-Medico di Roma and the University of Genoa) posted arXiv:2610.16548 on 12 October 2026. Their pipeline, NoduleFlow, takes a patient’s series of chest CTs and returns a 3D mask and a malignancy score for each nodule it finds, with no clicks, no prior annotations and no region picked by hand. The authors say the code will be published upon acceptance. Every model inside it is already public.
Why a viewer team should care
Most nodule tools we see in viewer projects do one step. A detector drops boxes, or a promptable segmenter waits for someone to click. NoduleFlow chains four existing models into one run that ends in masks, which is the shape a lung screening worklist needs: open the study and the candidates are already outlined and scored. It also tests a question every follow-up workflow runs into. If you register the prior scan to the current one, do the prior’s detections help find and outline nodules today?
What goes in and what comes out
Input is one or more chest CT volumes from the same patient. Before anything runs, the authors crop each scan to the lungs with masks from TotalSegmentator and resample every follow-up to the spacing and size of the baseline. Output, per scan, is a set of nodule candidates with a detection confidence and a malignancy probability, plus a voxel mask for each nodule. Each mask is drawn on that scan’s own CT, and registration only moves the boxes, so the deformation field never reshapes the nodule.
How it works
The Detection Module is a 3D RetinaNet. The authors used two public versions, one trained on the Duke Lung Cancer Screening dataset (DLCS) and one on LUNA16, and an ensemble of the two. The Classification Module, a 3D ResNet50-SWS from the same Duke benchmark, gives each candidate a malignancy probability. Overlapping candidates are merged into one, and their scores are combined so the merged score only climbs when several overlapping boxes agree. An isolated low-confidence box stays low.
The Transfer Module is the longitudinal part. It runs GradICON registration (the paper cites both GradICON and its pretrained uniGradICON release) between every pair of scans and uses the resulting deformation field to move each box from one time point to another. The authors compare three rules. S0 ignores the other scans. S1 adds boxes carried forward from earlier scans only, which is what a live clinical system could do. S2 adds boxes from all scans, including later ones, which only works on a retrospective series. The Segmentation Module is LesionLocator, a promptable 3D U-Net, which takes either the box or its center point as a prompt and segments the original CT.
Nothing is retrained. All four models run frozen, exactly as their authors released them. The contribution is the plumbing and the evaluation.
What the numbers say
The test set is large for this kind of paper: four independent cohorts, 481 patients, 1,266 scans and 4,593 annotated nodules. Two subsets come from NLST (NLST-Sybil and NLST-LongCT), one is the Tübingen Longitudinal-CT collection of melanoma patients with 2,166 lung metastases, and one is a longitudinal subset of UniToChest. On NLST-Sybil the ensemble detector reached a competition performance metric (average sensitivity over a range of false positives per scan) of 70.9%, against 44.7% for NoduleNet trained on LIDC-IDRI. On the metastasis-heavy Longitudinal-CT it fell to 19.0%, and NoduleNet did better there with 38.0%. The malignancy scores reached AUCs between 90.4% and 95.6% across the four cohorts.
For segmentation, the center point made a better prompt than the box for large nodules. On Longitudinal-CT, nodules of 1 cm or more reached a Dice of 79.3% with point prompts and 60.4% with box prompts, and the authors put that down to boxes that clip margins or include nearby tissue. Carrying boxes across visits helped large nodules a little (80.1% with S2) and did not help small ones, which change too much between scans for the boxes to line up. MedSAM2, given the ground-truth locations as prompts, scored higher than every automatic setting (87.7% and 89.0% Dice on Longitudinal-CT), so most of the remaining gap sits in finding and placing the nodules.
Limits
Small, crowded lesions break the detector. In UniToChest, the score jumped from 25.9% to 72.0% when the authors kept only scans with six lesions or fewer, where the median nodule diameter rises from 5 mm to 12 mm. Longitudinal-CT stayed low even after that filter because its metastases are small. For a screening product, the sub-centimeter nodules are the ones that decide follow-up intervals, so this is where we would test first.
Read the segmentation table next to the detection table. A mask can only be as good as the box that prompted it, and the Dice numbers depend on which candidates survived detection. The registration step also costs GPU time for every pair of scans, which grows fast for patients with many visits, and the paper reports no run times. There is no reader study, and the malignancy score is a research output with no clinical clearance behind it.
Code, weights and licenses
The NoduleFlow code is not out yet. Until it is, a team can rebuild the chain from the public parts, and the licenses are the first thing to check. The Duke lung benchmark repository that holds the RetinaNet and ResNet50-SWS code is under the PolyForm Noncommercial license, while its Zenodo weight record is listed as CC BY 4.0. LesionLocator code is GPL-3.0 and its checkpoint on Zenodo is CC BY-NC-SA 4.0. uniGradICON and TotalSegmentator are Apache-2.0. A commercial viewer cannot ship the detector code or the segmentation weights as they are. You would need permission from the authors or replacements you train yourself, for example a detector and segmenter retrained on DLCS or LIDC-IDRI under terms you control.
How we would wire it into a viewer
We would run it as a background job on the PACS side. When a new chest CT arrives, query the archive for the same patient’s prior chest CTs, convert them, crop to the lungs and resample to the baseline grid as the authors did. Run detection and scoring on every scan, register each prior to the current scan and carry the prior boxes forward with the S1 rule, since a live system never has future scans. Segment on the original current CT with point prompts.
Then write results the archive understands. One DICOM SEG per scan with one segment per nodule, and a measurement report (DICOM SR, template TID 1500) with diameter, volume and the malignancy probability clearly marked as AI output. Give each nodule a tracking identifier that stays the same across visits, so the viewer can line up prior and current in a synchronized side-by-side layout and show growth without the reader hunting for the same lesion. Flag nodules under 1 cm as lower confidence, because that is where the paper’s own numbers are weakest. For background, see our posts on NLST overlays you can hang as DICOM SEG, prior vs current CT comparison, follow-up PET/CT registration and fast 3D detection in radiology AI.
Sources
- Romoli, G., Ruffini, F., Di Feola, F., Guarrasi, V., Tortora, M., Soda, P. NoduleFlow: Automatic 3D Lung Nodule Detection and Segmentation. arXiv:2610.16548, 2026. https://arxiv.org/abs/2610.16548. PDF: https://arxiv.org/pdf/2610.16548.
- Detection and classification models (code PolyForm Noncommercial 1.0.0, weights CC BY 4.0 on Zenodo): Duke AI in Lung Health benchmark, Zenodo 14967976.
- Segmentation model (code GPL-3.0, checkpoint CC BY-NC-SA 4.0): LesionLocator, Zenodo 15174217.
- Registration: uniGradICON (Apache-2.0). Lung cropping: TotalSegmentator (Apache-2.0).
- Featured image: Fig. 1 of arXiv:2610.16548, the paper’s only figure, real paper pixels, resized only.