NSP-GS Stage-A FusionCNN β€” 25-view DeepSparse prior, 4 datasets

Stage-A FusionCNN trained with the released NSP_R2GS training entry (deployment/nsp_gs_abc_v1, branch migration/gmrb-r2fine-20260907, commit 4714de6), on four datasets instead of LUNA16 only.

Inputs per case

Input Source
V1 DeepSparse 25-view output (logs/<dst>+25v+n250+s2/ep_400.pth, see Potestates/DeepSparse-25v), GT-free inference
V2 prior-assisted R²-GS (V6 train.py, RUN_COMMANDS 3.2 NSP-only: lambda_null 0.05, null loss 10k→20k), 20k iterations, prior = V1, same 25 views
features / labels released pair β†’ features β†’ labels chain (75D F+M+D patch features, gate = actionable, beta = beta_unclipped)

25 views = uniform over 180Β° (indices 0,12,…,288 of a 300-view cone-beam bank). All four datasets use their official DeepSparse projector geometry.

Cohort

One model for all four datasets. Cases were never used to train the DeepSparse 25v models.

Dataset train validation
LUNA16 (lung) 40 5
PENGWIN (pelvis) 35 5
PANORAMA (abdomen) 40 5
ToothFairy (tooth) 40 5
total 155 20

Lists: cohort/STAGEA_SPLIT.json, frozen manifest cohort/TRAINING_DATASET.json.

Training

Released formal defaults (AdamW lr 1e-3, wd 1e-4, batch 64, 30 epochs, patience 8, 2048 patches/patient/epoch, AMP, seed 20260911, patient-balanced), with one override: --num-workers 16 (loader throughput only; the fixed sampler makes the data order identical). The run is therefore labelled EXPLICIT_NONFORMAL_OVERRIDE.

  • best validation patch loss 0.06130 (epoch 29 of 30), 956 s on one RTX PRO 6000 Blackwell, peak CUDA memory 0.46 GB
  • use fusion_cnn_run_001/best.pt together with fusion_cnn_run_001/PREPROCESSING.npz (fit on the train split only)

Results β€” validation (20 cases, in-sample: used for checkpoint selection)

3D PSNR (dB) vs GT, skimage, data_range 1:

Dataset V1 DeepSparse 25v V2 RΒ²-GS 20k V_A V_A βˆ’ V1
LUNA16 31.64 30.47 33.15 +1.51
PENGWIN 30.45 29.84 31.16 +0.71
PANORAMA 29.48 28.22 29.61 +0.12
ToothFairy 34.52 33.89 36.75 +2.22
all 31.52 30.60 32.67 +1.14

Per-case: fusion_cnn_run_001/scores_validation.csv. 18/20 cases improve; PENGWIN 032 (βˆ’3.00) and PANORAMA 101749 (βˆ’0.85) do not.

Results β€” held-out test (15 cases, never used for training or checkpoint selection)

5 LUNA16 + 5 PANORAMA + 5 ToothFairy (every non-training PENGWIN case is already in train/validation). V2 and features were built GT-free; GT was opened only for scoring.

Dataset V1 DeepSparse 25v V2 RΒ²-GS 20k V_A V_A βˆ’ V1
LUNA16 30.06 28.45 31.44 +1.38
PANORAMA 29.71 29.30 30.80 +1.08
ToothFairy 33.78 33.47 35.86 +2.08
all 31.19 30.41 32.70 +1.52

All 15/15 cases improve over V1 (+0.53 to +2.37 dB). Per-case: fusion_cnn_run_001/scores_test_heldout.csv.

Local changes to the released code

  • patches/build_training_labels_nonneg_fix.diff: clamps the patch sums of squares (d2, target2, p1_sq, p2_sq) at 0. The summed-area-table subtraction returned βˆ’5.3eβˆ’23 for one all-air patch (PENGWIN 004), which made cosine NaN and aborted the case. No other label value changes (175/175 label files finite; only that one patch was clamped).
  • patches/r2gs_cuda_headers_blackwell.diff: #include <cfloat> / <cstdint> so the RΒ²-GS CUDA extensions build with CUDA 12.9 (torch 2.7.1+cu128).

License

Research use. Weights derive from LUNA16, PENGWIN (CC BY 4.0), PANORAMA (CC BY-NC 4.0, non-commercial) and ToothFairy; check each dataset's terms.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support