DeepSparse — 40-view finetuned checkpoints
Finetuned DeepSparse checkpoints for 40-view (180°) sparse-view CT on four anatomies, from the official pretrained weights (pretrain/ep_700.pth) with the official two-stage protocol. Companion to Potestates/DeepSparse-25v.
Results (official test splits, 256³)
| Checkpoint | Train cases | Test cases | 3D PSNR (dB) | 3D SSIM (×10⁻²) | 2D PSNR (dB) | 2D SSIM |
|---|---|---|---|---|---|---|
pelvis+40v+n250+nv60+s2 (PENGWIN) |
60 (all) | 30 | 31.54 | 92.02 | 39.41 | 0.9842 |
luna+40v+n250+nv60+s2 (LUNA16) |
250 / 738 | 100 | 32.96 | 92.71 | 40.18 | 0.9871 |
abdomen+40v+n250+nv60+s2 (PANORAMA) |
250 / 1244 | 600 | evaluation running | |||
tooth+40v+n250+nv60+s2 (ToothFairy) |
250 / 343 | 75 | evaluation running |
3D metrics from the official code/evaluate.py (skimage 3D SSIM, 7³ window). 2D metrics reproject both volumes with TIGRE and score them with R²-Gaussian's metric_proj (100 random views over 360°, each view normalized by its own max). Per-case values are in each folder's results_1.0x.csv / results_proj2d_1.0x.csv.
25 views → 40 views
| Dataset | 3D PSNR 25v | 3D PSNR 40v | Δ |
|---|---|---|---|
| Pelvis | 30.96 | 31.54 | +0.58 |
| Lung | 32.47 | 32.96 | +0.49 |
| Abdomen | 29.79 | pending | |
| Tooth | 34.03 | pending |
Stage-1 validation PSNR (half resolution, epoch 400) already favours 40 views for the two pending datasets: tooth 34.38 → 35.18, abdomen 30.54 → 30.65.
Setup
- Code: xmed-lab/DeepSparse @
a055aba3bcb5732a68f89cc0bf3ee6fbfbb1b1e4 - Views: 40 input views, uniform over 180°, taken from a 600-view projection cache (600/40 = 15, so the views are exactly equispaced; the 300-view cache used for 25v cannot divide 40 evenly)
- Stage 1:
--num_views 60 --min_views 40 --random_views --vq_w 0.1, resumed frompretrain/ep_700.pth, 400 epochs - Stage 2: same views,
--vq_w 1.0 --safely_load --freeze_ft, resumed from stage-1ep_400.pth, 400 epochs num_views=60gives a 1.5× teacher/student view ratio in stage 2 (official: 24 dense views vs 6/8/10)- Batch size 2, lr 1e-4, weight decay 1e-3, no LR schedule, 1 GPU per job
- Environment: PyTorch 2.7.1 + CUDA 12.8, TIGRE 3.1.3
The 600-view cache was rebuilt from raw data with the official preprocessing; for every case the recomputed image is bit-identical to the existing processed volume, and the 300 shared views agree with the old cache at 53–55 dB (uint8 storage rounding).
Differences from the paper protocol
- Training set size: at most 250 training cases per dataset (the paper uses the full training sets). Test splits are the official ones; case lists in
splits/<DATASET>/meta_info.json. - Dense views:
num_views=60(1.5×), against 2.4–4× in the official 6/8/10-view settings. - Environment: newer PyTorch and TIGRE than the official (1.13 / 2.3), required for Blackwell GPUs.
- ToothFairy config: the official
meta_info.jsonpoints at an unreleasedconfig+new.yaml/processed+new/; the repo's publicconfig.yamlis used instead (verified with the official tooth 10-view checkpoint: 31.89 dB vs the paper's 31.79).
Files
<dataset>+40v+n250+nv60+s2/
ep_400.pth final stage-2 checkpoint (use this)
config.yaml config saved by train.py (min_views stays 10 here)
results_1.0x.csv per-case 3D PSNR/SSIM
results_proj2d_1.0x.csv per-case 3D + 2D projection metrics
train.log / train_s1.log stage-2 / stage-1 logs (args + validation curve)
configs/ training configs and the 40-view eval config (min_views: 40)
splits/<DATASET>/meta_info.json the 250-case subset and official test split
Usage
hf download Potestates/DeepSparse-40v --local-dir ./logs
cp logs/configs/eval_40v_n250_600v.yaml configs/generated/ # set root_dir to your data root
python code/evaluate.py --name luna+40v+n250+nv60+s2 --epoch 400 --dst_name luna \
--split test --num_views 40 --cfg_path configs/generated/eval_40v_n250_600v.yaml \
--out_res_scale 1.0
Evaluation must use min_views: 40 and a projection cache whose view count is a multiple of 40 (we use 600); the config.yaml inside each checkpoint folder still says min_views: 10.
License
DeepSparse code is MIT. These weights derive from datasets with their own terms: PANORAMA (abdomen) CC BY-NC 4.0 (non-commercial), PENGWIN (pelvis) CC BY 4.0, LUNA16 and ToothFairy per their original terms. Please cite the DeepSparse paper and the datasets.