简介
这是一个用于X射线新视角合成(NVS)和计算机断层扫描(CT)重建的工具箱。这个代码库支持9种最先进的算法,包括6种基于NeRF的方法,2种基于优化的方法和1种分析方法。我们还提供了用于精美可视化和数据生成的代码,以帮助您的研究。如果您觉得这个代码库有用,请给它一个星⭐并考虑引用我们的论文。谢谢。
新闻
- 2024.07.09 : 我们的SAX-NeRF已被添加到优秀Transformer注意力机制集合中💫
- 2024.06.16 : 我将亲自展示这项工作。我们的海报展示时间是6月20日上午10:30至中午12:30,地点在Arch 4A-E海报区#147。欢迎在西雅图会议中心与我交流。:smile:
- 2024.06.16 : 提供了更多的原始数据和生成样本,欢迎使用。
- 2024.06.03 : 传统方法的代码已发布。🚀
- 2024.06.03 : 精美可视化和数据生成的代码已发布。🚀
- 2024.06.02 : 数据、代码、模型和训练日志已发布,欢迎使用:)
- 2024.03.07 : 我们的新工作X-Gaussian,第一个用于X射线成像的基于3DGS的方法,现在在arxiv上。代码、模型和训练日志将在这个代码库发布。敬请期待。💫
- 2024.02.26 : 我们的论文已被CVPR 2024接受。在CVPR 2024开始之前(2024.06.19),代码和预训练模型将公开发布。敬请期待!:tada: :confetti_ball:
- 2023.11.21 : X3D的基准测试已在paper-with-code网站上设置好。欢迎进行对比。🚀
- 2023.11.21 : 我们的论文现在在arxiv上。我们将把这个代码库发展成一个用于X射线新视角合成和CT重建的基准。所有代码、模型、数据和训练日志将会被发布。💫
性能
新视角合成
CT重建
支持的算法:
坐标系
圆锥束X光扫描中的坐标系统遵循OpenCV标准。相机、世界和图像坐标系统之间的转换如下所示。
1. 创建环境:
我们推荐使用Conda来设置环境。
# 创建环境
conda create -n sax_nerf python=3.9
conda activate sax_nerf
# 安装pytorch(hash encoder需要CUDA v11.3)
pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113
# 安装其他包
pip install -r requirements.txt
我们建议您安装TIGRE工具箱(2.3版本)来执行传统的CT重建方法,并合成您自己的CT数据,请注意TIGRE v2.5在CT较大时可能会卡住。
# 下载TIGRE
wget https://github.com/CERN/TIGRE/archive/refs/tags/v2.3.zip
unzip v2.3.zip
rm v2.3.zip
# 安装TIGRE
pip install cython==0.29.25
pip install numpy==1.21.6
cd TIGRE-2.3/Python/
python setup.py develop
2. 准备数据集:
从Google drive或百度网盘下载我们处理过的数据集。然后将下载的数据集放入data/
文件夹中,如下所示:
|--data
|--chest_50.pickle
|--abdomen_50.pickle
|--aneurism_50.pickle
|--backpack_50.pickle
|--bonsai_50.pickle
|--box_50.pickle
|--carp_50.pickle
|--engine_50.pickle
|--foot_50.pickle
|--head_50.pickle
|--leg_50.pickle
|--pancreas_50.pickle
|--pelvis_50.pickle
|--teapot_50.pickle
|--jaw_50.pickle
3. 测试:
您可以直接从Google drive或百度网盘下载我们的预训练模型。然后将下载的模型放入pretrained/
文件夹中,运行:
# SAX-NeRF
python test.py --method Lineformer --category chest --config config/Lineformer/chest_50.yaml --weights pretrained/chest.tar --output_path output
# FDK
python3 eval_traditional.py --algorithm fdk --category chest --config config/FDK/chest_50.yaml
# SART
python3 eval_traditional.py --algorithm sart --category chest --config config/SART/chest_50.yaml
# ASD_POCS
python3 eval_traditional.py --algorithm asd_pocs --category chest --config config/ASD_POCS/chest_50.yaml
为了您的方便,我们在Google drive和百度网盘中提供了重建结果。
4. 训练:
我们提供了所有场景的训练日志,供您调试。请从Google drive或百度网盘下载训练日志。
# SAX-NeRF
python train_mlg.py --config config/Lineformer/chest_50.yaml
# NeRF
python train.py --config config/nerf/chest_50.yaml
# Intratomo
python train.py --config config/intratomo/chest_50.yaml
# NAF
python train.py --config config/naf/chest_50.yaml
# TensoRF
python train.py --config config/tensorf/chest_50.yaml
您可以使用此仓库来运行NeAT。记得先重新处理数据。
5. 可视化:
为了渲染一个酷炫的演示,我们在3D_vis
文件夹中提供了可视化代码。
cd 3D_vis
python 3D_vis_backpack.py
python 3D_vis_backpack_gif.py
6. 生成您自己的数据:
我们在dataGenerator
文件夹中提供了数据生成代码。为了让您快速上手,我们提供了用于调试的原始数据。请从Google drive或百度网盘下载原始数据,然后将它们放入文件夹dataGenerator/raw_data
中。运行:
cd dataGenerator
python data_vis_backpack.py
cd ..
python dataGenerator/generateData_backpack.py
7. 引用:
如果本仓库有帮助,请考虑引用我们的工作:
# SAX-NeRF
@inproceedings{sax_nerf,
title={Structure-Aware Sparse-View X-ray 3D Reconstruction},
author={Yuanhao Cai and Jiahao Wang and Alan Yuille and Zongwei Zhou and Angtian Wang},
booktitle={CVPR},
year={2024}
}
# X-Gaussian
@inproceedings{x_gaussian,
title={Radiative gaussian splatting for efficient x-ray novel view synthesis},
author={Yuanhao Cai and Yixun Liang and Jiahao Wang and Angtian Wang and Yulun Zhang and Xiaokang Yang and Zongwei Zhou and Alan Yuille},
booktitle={ECCV},
year={2024}
}