Photon-Thinning Bridge for Low-Dose CT Reconstruction

Dose-conditioned networks trained on the photon-thinning bridge, whose forward process removes detected photons by binomial thinning, so every state of the process is distributed as a scan acquired at a lower dose. One checkpoint covers a calibrated range of doses: the network takes a low-dose reconstruction together with the dose coordinate t and predicts the full-dose image.

Code: https://github.com/ShiyuXie0116/photon-thinning-bridge

Checkpoints

File Dataset Dose range Reconstruction operator Parameters Size
bridge_2detect.pt 2DeteCT alpha = 0.01 (100x), uniform knots damped LSMR, 50 iterations, damping 1e-2 54.7M 219 MB
bridge_ldct.pt Mayo LDCT alpha = 0.1 (10x), uniform knots Hann-filtered FBP in HU 27.7M 111 MB
bridge_2detect_fano.pt 2DeteCT alpha = 0.028, geometric knots damped LSMR, 50 iterations, damping 1e-2 54.7M 219 MB

bridge_2detect.pt and bridge_ldct.pt produce the simulated-dose results of the paper; bridge_ldct.pt is also the model evaluated on the official Mayo reduced-dose projections. bridge_2detect_fano.pt is trained at the Fano-corrected effective counts I_eff = I0 / F and is the model evaluated on the 3.3%-current 2DeteCT scans.

Each file holds the weights under the key model and a config dictionary with the setting it was trained for. A matching .json file repeats the configuration.

Usage

import torch
from baselines.train_bridge import build as build_bridge   # from the code repository

ckpt = torch.load("bridge_ldct.pt", map_location="cpu")
net, dose_conditioned = build_bridge(ckpt["config"]["arch"])
net.load_state_dict(ckpt["model"])
net.eval()

# x1: low-dose reconstruction, per-slice normalized to [0, 1], shape (B, 1, 256, 256)
# t:  dose coordinate, t = log(I0 / I) / log(1 / alpha); t = 1 at the lowest calibrated dose
x0_hat = net(x1, t)

The reported numbers use the five-step equal-improvement sampler of the paper, which averages the predictions along the reverse trajectory; a single call at t = 1 is within about 0.05 dB of it at the training dose.

Results

At the training dose (2DeteCT alpha = 0.01, 100 test slices; LDCT alpha = 0.1, 688 test slices):

Model PSNR SSIM VIF
2DeteCT low-dose input 32.69 0.737 0.512
bridge_2detect.pt 41.87 0.970 0.755
LDCT low-dose input 33.36 0.799 0.562
bridge_ldct.pt 41.09 0.958 0.733

On data outside the thinning simulation:

Model Test data PSNR SSIM VIF
bridge_ldct.pt official Mayo reduced-dose projections, 10% of routine dose 39.57 0.947 0.695
bridge_2detect_fano.pt 2DeteCT scans at 3.3% tube current 30.22 0.872 0.671

Across the dose sweep (2DeteCT 1-40%, LDCT 10-36%) one checkpoint, queried with the known dose, stays above the best network retrained at each dose by +0.09 to +0.43 dB on 2DeteCT and +0.11 to +0.14 dB on LDCT.

Baseline checkpoints

baselines/ holds the competing methods of the paper. These are our own trainings of the published architectures on the same data and splits, not weights released by their authors.

Folder Setting Paper
baselines/2detect/ 2DeteCT, alpha = 0.01 2DeteCT columns of Tables 1 and 2
baselines/ldct/ Mayo LDCT, alpha = 0.1 LDCT columns of Tables 1 and 2, and the LDCT column of Table 3
baselines/2detect_fano/ 2DeteCT at the Fano-corrected effective counts 2DeteCT column of Table 3

Each folder contains dncnn, edcnn, redcnn, mapnn, restormer, nafnet, drunet, unet_res (the residual U-Net of FBPConvNet) and wganvgg, from 0.06M to 32.7M parameters. They are loaded like the bridge checkpoints but take no dose coordinate:

ckpt = torch.load("baselines/ldct/redcnn.pt", map_location="cpu")
net, _ = build_bridge(ckpt["config"]["arch"])
net.load_state_dict(ckpt["model"])
x0_hat = net(x1)

BM3D needs no weights. CoreDiff was trained with the authors' official code and is not redistributed here; the diffusion-prior baseline uses a separate prior model.

Training data

The models were trained on thinned trajectories simulated from two public collections: 2DeteCT (experimentally acquired fan-beam scans of objects, no human subjects) and the Mayo Clinic low-dose CT and projection data distributed through The Cancer Imaging Archive. No data are redistributed here; only model weights.

Intended use and limitations

Research use. The networks were trained on 256x256 reconstructions from the two geometries above and expect inputs produced by the same reconstruction operator and normalization; behaviour on other scanners, slice thicknesses or reconstruction filters is untested. The forward process assumes ideal Poisson counting, corrected for energy-integrating detectors through an effective count. Not a medical device and not for clinical use.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support