# SAX-NeRF is a toolbox for reconstructing 3D from a handful of X-ray views

> The SAX-NeRF repository bundles twelve X-ray reconstruction methods behind one training entry point, from NeRF and TensoRF through Gaussian splatting variants to classical analytic tomography, and the interesting engineering is the shared data pipeline rather than any single model.

**caiyuanhao1998/SAX-NeRF** — "Structure-Aware Sparse-View X-ray 3D Reconstruction" (CVPR 2024)  -  A Toolbox for CT reconstruction and X-ray Novel View Synthesis

- Repository: https://github.com/caiyuanhao1998/SAX-NeRF
- Website: https://arxiv.org/abs/2311.10959
- Stars: 810 · Forks: 44
- Language: Python
- License: MIT
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/caiyuanhao1998-sax-nerf

## Twelve methods under one roof, and that is the contribution

SAX-NeRF is described as a comprehensive toolbox and library for X-ray 3D reconstruction covering two tasks, novel view synthesis and computed tomography reconstruction. The scope is stated as twelve state-of-the-art methods, made up of six NeRF-based methods, three 3DGS-based methods, two optimization-based methods and one analytical method. The supported algorithms list gives the detail, and the range is wide: SAX-NeRF itself from CVPR 2024, X-Gaussian from ECCV 2024, R2-Gaussian from NeurIPS 2024, Perturbed-Gaussian-Ensemble from ECCV 2026, X2-Gaussian from ICCV 2025 and CARE from NeurIPS 2025 sit alongside TensoRF, NAF, NeAT, NeRF, InTomo, and the classical SART, ASD-POCS and FDK from the 1980s and 2000s. So a comparison between a learned radiance field and a filtered back projection runs on the same data and the same harness, which is the actual research contribution.

## The repository is a comparison platform, not a single model

The top level layout shows what this is made of. There is train.py as the main entry point and train_mlg.py alongside it, eval_traditional.py for the classical methods, and test.py. The src/ directory holds the model implementations, the config/ directory holds the configurations, and there are dedicated directories for the parts of the work that are not model training: 3D_vis/ for visualisation, 3d_demo/ which contains the turntable animations shown at the top of the readme, dataGenerator/ for generating data, and draw_bbox/ for the bounding box drawing. The introduction says the project also provides code for fancy visualisation such as turntable video and data generation to help research, and a recent news entry records that code for traditional methods and for fancy visualisation and data generation was released on the same day in June 2024. The pattern is consistent with a benchmark effort rather than a model release.

## The environment pins an old Python and an old CUDA

The setup instructions recommend Conda, and the environment they create is specific.

```sh
# Create environment
conda create -n sax_nerf python=3.9
conda activate sax_nerf
```

The next part of the snippet is a note for users who do not have CUDA-11.3 on their server and no sudo permission, telling them to install CUDA-11.3 in the conda environment, and says the steps can be skipped otherwise. The requirements file then pins the rest of the stack to versions that match that era, with opencv-python 4.7.0.68, tensorboard 2.12.0, tqdm 4.64.1, matplotlib 3.7.0, scipy 1.10.0, PyYAML 6.0, scikit-image 0.19.3, imageio 2.25.1 and Pillow 9.5.0, plus ninja 1.11.1 for the build steps and fvcore left unpinned. The Python 3.9 floor is the practical limit here, since a recent Conda or PyTorch release will not install cleanly into a 3.9 environment, and that is the first thing to plan for.

## Coordinates follow OpenCV, which is a decision you inherit

The readme has a short section on the coordinate system, and it is worth reading before you debug a projection that looks wrong. The coordinate system in circular cone-beam X-ray scanning follows the OpenCV standards, and the transformation between the camera, world and image coordinate systems is shown in a figure. This is the kind of detail that separates a research codebase that others can build on from one that cannot be reproduced outside the authors' cluster, and it is a deliberate choice rather than an accident. The topics attached to the repository reflect the same intent, listing nerf, neural-radiance-fields, ct-reconstruction, medical-imaging, instant-ngp and transformer, which tells you where the model work sits and how many different assumptions about the representation are in play. For anyone writing a new method on top of the toolbox, matching this convention is the price of admission, and the figure in the readme is the specification.

## Twelve years of method development, one harness

Look at the venues in the supported list and the span is clear. SART is from 1984 in Ultrasonic imaging, FDK is from 1984 in JOSA A, ASD-POCS is from 2008 in Physics in Medicine and Biology, NeRF is from 2020, InTomo from 2021, TensoRF, NeAT and NAF from 2022, and then the X-ray specific work from 2024 onwards. That spread matters for two reasons. The classical methods are what a learned method has to beat, and they are cheap, so a researcher can establish a floor on a dataset in minutes before spending GPU days on the neural version. The project also makes a benchmark available in its own right, with the X3D benchmark set up on paperswithcode in November 2023 and the news entry inviting comparison, and a note that the repository was intended to be developed into a baseline for X-ray novel view synthesis and CT reconstruction with all code, models, data and training logs released. The training logs being published is a detail that makes the comparisons checkable.

## What the repository does not do for you

The limits are the ones that come with research code. There is no data licensing story, no dataset acquisition tooling and no evaluation harness described beyond the scripts, so reproducing a number from a paper means finding the raw data yourself, and the readme points to the paper and to the X3D benchmark for the reference results rather than providing a download. There is also no description of the training configuration in the readme itself, which means the configs in the config/ directory are the documentation, and you will be reading them. The bigger constraint is the domain. This is X-ray imaging, which means cone-beam projection geometry and the physics of attenuation, and the code is written for that. A project that wants to learn from the harness, for example a camera pose estimation or a general sparse view synthesis setup, will find the data generator and the coordinate conventions tied to X-ray acquisition, and the classical baselines will not apply at all. There is also a version question. The news list records papers accepted at CVPR 2024, ECCV 2024, NeurIPS 2024, ICCV 2025, NeurIPS 2025 and ECCV 2026, with several of the later works released into separate repositories, so the toolbox grows by absorbing follow-up papers rather than by evolving a single codebase.

## Conclusion

SAX-NeRF suits a researcher who needs to compare neural and classical X-ray reconstruction on the same data, and it suits a student who wants a working baseline for sparse-view CT rather than a paper in isolation. It is the wrong tool for a clinical deployment, since it is a research codebase with a paper behind it and no validation pathway described, and it is the wrong tool if you only need one method, since the point of the repository is the comparison. Before running it, install the pinned requirements in a Conda environment with Python 3.9, and expect the classical methods such as FDK and SART to need no GPU while the neural ones will. The last push was on 2026-06-24, and the repository publishes no GitHub releases.

## FAQ

### Which reconstruction methods does the SAX-NeRF toolbox support?

Twelve, spanning six NeRF-based methods, three 3DGS-based methods, two optimization-based methods and one analytical method. The list includes SAX-NeRF, X-Gaussian, R2-Gaussian, PGE, X2-Gaussian, CARE, TensoRF, NAF, NeAT, NeRF, InTomo, and the classical SART, ASD-POCS and FDK.

### How do I set up the environment for SAX-NeRF?

The README recommends Conda, with conda create -n sax_nerf python=3.9 followed by conda activate sax_nerf, and notes that CUDA-11.3 can be installed inside the Conda environment for users without sudo access. The pinned requirements include opencv-python 4.7.0.68, scipy 1.10.0, scikit-image 0.19.3 and tensorboard 2.12.0.

### What coordinate system does SAX-NeRF use?

The coordinate system in circular cone-beam X-ray scanning follows the OpenCV standards, and the readme shows the transformation between the camera, world and image coordinate systems in a figure.

### Can I evaluate classical tomography methods with SAX-NeRF?

Yes. The repository includes eval_traditional.py and supports the analytical and optimization-based methods SART, ASD-POCS and FDK, and the news list records that code for traditional methods was released on 2024.06.03.

## Sources

- [caiyuanhao1998/SAX-NeRF on GitHub](https://github.com/caiyuanhao1998/SAX-NeRF)
- [Issues](https://github.com/caiyuanhao1998/SAX-NeRF/issues)
- [License: MIT](https://github.com/caiyuanhao1998/SAX-NeRF/blob/master/LICENSE)
- [Project website](https://arxiv.org/abs/2311.10959)
- [README](https://github.com/caiyuanhao1998/SAX-NeRF/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/caiyuanhao1998-sax-nerf
