Add model card
Browse files
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 |
+
[](https://arxiv.org/abs/XXXX.XXXXX) -->
|
| 16 |
+
[](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 |
+
```
|