Downloads · 30 days
0
shiyuxie/photon-thinning-bridge
photon-thinning-bridge is a machine learning model from shiyuxie. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as mit.
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. On…
Downloads · 30 days
0
Access
Public
Updated Sep 23, 2026
Repo size
3.3 GB
Likes
0
Public
Click a slice to open those files.
.pt1.7 GB · 100%
From the Hugging Face model README
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
| 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.
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.
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.
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.
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.
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.