aujasvit commited on
Commit
6a0e5ef
·
verified ·
1 Parent(s): 045e9f8

Add model card

Browse files
Files changed (1) hide show
  1. README.md +84 -0
README.md ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: pytorch
3
+ tags:
4
+ - medical-imaging
5
+ - computed-tomography
6
+ - ct-reconstruction
7
+ - sparse-view-ct
8
+ - compressed-sensing
9
+ - neural-operator
10
+ - inverse-problems
11
+ pipeline_tag: image-to-image
12
+ ---
13
+
14
+ <!-- TODO: add arXiv badge once the preprint is public, e.g.
15
+ [![arXiv](https://img.shields.io/badge/arXiv-XXXX.XXXXX-b31b1b.svg?style=flat-square&logo=arxiv)](https://arxiv.org/abs/XXXX.XXXXX) -->
16
+ [![Code](https://img.shields.io/badge/Code-neuraloperator%2Fsparse__ct-black?style=flat-square&logo=github)](https://github.com/neuraloperator/sparse_ct)
17
+
18
+ # Resolution-Agnostic Neural Operators for Multi-Rate Sparse-View CT
19
+
20
+ > **Resolution-Agnostic Neural Operators for Multi-Rate Sparse-View CT**
21
+ > Aujasvit Datta\*, Jiayun Wang\*, Asad Aali, Anima Anandkumar
22
+ > *Caltech · Georgia Tech · IIT Kanpur · Stanford University* — \*equal contribution
23
+
24
+ **CTO (Computed Tomography neural Operator)** is the first neural operator (NO) framework for CT reconstruction. Sparse-view CT (SVCT) reconstructs an image from a limited number of X-ray projections to reduce radiation dose and scan time — an ill-posed inverse problem. Existing learning methods (e.g. CNNs) overfit to a fixed acquisition setup and fail to generalize across sampling rates and resolutions. CTO instead learns the reconstruction map in **continuous function space**, so a **single model generalizes across measurement sampling rates and image resolutions without retraining**.
25
+
26
+ ## Highlights
27
+
28
+ - **First neural operator for CT reconstruction** — moves from fixed discretized grids to a continuous function-space formulation.
29
+ - **Multi-rate with one model** — a single CTO handles a range of sparse-view acceleration rates (**10×, 20×, 40×, 80×**, i.e. ≈72/36/18/9 of 720 projection views) instead of one model per rate.
30
+ - **Resolution-agnostic** — built on DISCO (Discrete–Continuous) convolutions whose kernels live in function space, giving a consistent receptive field across resolutions (discretization-convergent).
31
+ - **Dual-domain reconstruction** — complementary neural operators in the **sinogram** domain (polar coordinates, with joint spatial + frequency branches) and the **image** domain (Cartesian grid), coupled by data-consistency/physical-update terms in an unrolled network.
32
+ - **Rotation-equivariant** — learning in the sinogram's polar coordinates makes object rotation correspond to a shift along the angular axis, improving robustness to acquisition orientation.
33
+ - **Strong results** — >3.4 dB PSNR gain over CNN baselines in multi-resolution settings; vs. state-of-the-art diffusion methods, **~500× faster inference** with an average **+3 dB**. Also shows out-of-distribution robustness under cross-dataset transfer and noisy sinograms.
34
+
35
+ ## Models
36
+
37
+ This repository provides two pretrained CTO checkpoints (PyTorch Lightning), one per dataset:
38
+
39
+ | Checkpoint | Dataset | Forward model | Config |
40
+ |---|---|---|---|
41
+ | [`aapm/cto_aapm.ckpt`](./aapm/cto_aapm.ckpt) | [AAPM Low-Dose CT Grand Challenge](https://www.aapm.org/grandchallenge/lowdosect/) | `AAPMRadonTransform` (720 projections) | [`aapm/cto_aapm_config.yaml`](./aapm/cto_aapm_config.yaml) |
42
+ | [`kits/cto_kits.ckpt`](./kits/cto_kits.ckpt) | [C4KC-KiTS (kidney CT)](https://kits-challenge.org/) | `KitsRadonTransform` (720 projections) | [`kits/cto_kits_config.yaml`](./kits/cto_kits_config.yaml) |
43
+
44
+ Both checkpoints share the same architecture and were trained/validated at **256×256** resolution with an MSE objective (up to 100 epochs), and cover training acceleration rates `[10, 20, 40, 80]`.
45
+
46
+ ## Architecture
47
+
48
+ CTO is an end-to-end **unrolled network** operating in function space (see paper, Fig. 2):
49
+
50
+ 1. **Sinogram operator (NO\_s)** — `SinoCircularUDNORFFTReconstructor`, a U-shaped DISCO block (UDNO) in polar coordinates `(r, θ)` that jointly processes the sub-sampled sinogram in the **spatial** domain and the **frequency** domain (1D FFT along the detector axis `r`). This unifies different angular sampling rates.
51
+ 2. **Inverse Radon (R⁻¹)** — maps the completed sinogram back to image space.
52
+ 3. **Image operator (NO\_i) + data consistency** — `ImageNOVarnetReconstructor`, an unrolled variational network (**3 cascades**) that refines the image with an image-space DISCO operator and a physical data-consistency update against the measurements.
53
+
54
+ Key hyperparameters (from the configs): DISCO kernels use a **piecewise-linear basis**, `chans=32`, `num_pool_layers=4`, `kernel_shape=[6, 7]`, `radius_cutoff=0.02`; the sampler is `VarnetSparseCTSampler`; `num_projections=720`.
55
+
56
+ ## Usage
57
+
58
+ Download the weights and configs with the Hugging Face CLI or `huggingface_hub`:
59
+
60
+ ```bash
61
+ hf download aujasvit/cto --local-dir ./cto
62
+ ```
63
+
64
+ ```python
65
+ from huggingface_hub import hf_hub_download
66
+
67
+ ckpt = hf_hub_download("aujasvit/cto", "aapm/cto_aapm.ckpt") # or "kits/cto_kits.ckpt"
68
+ cfg = hf_hub_download("aujasvit/cto", "aapm/cto_aapm_config.yaml")
69
+ ```
70
+
71
+ The checkpoints are PyTorch Lightning `CTLightningModule` states; loading them into the model and running inference requires the model code and scripts from the project repository:
72
+
73
+ **Code:** https://github.com/neuraloperator/sparse_ct
74
+
75
+ ## Citation
76
+
77
+ <!-- TODO: update venue / add arXiv id once available -->
78
+ ```bibtex
79
+ @article{datta2026cto,
80
+ title = {Resolution-Agnostic Neural Operators for Multi-Rate Sparse-View CT},
81
+ author = {Datta, Aujasvit and Wang, Jiayun and Aali, Asad and Anandkumar, Anima},
82
+ year = {2026}
83
+ }
84
+ ```