cDTI LV segmentation β baseline weights (MD + DWI)
Weights for the automated whole-heart cardiac DTI pipeline: YOLO heart crop β resize 256 β
nnUNet ResEnc-M LV segmentation (5-fold) β YOLO RV insertion points β un-crop to original FoV.
Easiest way to run it: the one-command tool in the deploy/ folder of the GitHub repository
sash9966/nnUNet_cDTI (branch master) β its README walks through install, download and input format.
The research notebook (PaperRun_cDTI_Pipeline.ipynb) is on branch crop-alignment-and-hap-fixes.
Contents
nnUNet_results/Dataset310_HannumSmartHealthandDirVsAvgsLVMDandAvg/
nnUNetTrainerDA5_100epochsNoCompile__nnUNetResEncUNetMPlans__2d/
dataset.json plans.json dataset_fingerprint.json
fold_0/ ... fold_4/checkpoint_final.pth # 5-fold ensemble, ~848 MB each
yolo/
crop.pt # heart-crop detector (average DWI)
rvip.pt # RV insertion-point detector (average DWI)
Keep the folder names exactly as they are β nnUNet locates the model by them.
Inputs (per slice, after the YOLO crop + resize to 256Γ256)
| channel | image | normalization |
|---|---|---|
_0000 |
average diffusion-weighted image (DWI) | minβmax to [0, 1] |
_0001 |
mean diffusivity (MD) | divide by 4.0 |
nnUNet normalization is off (noNorm in dataset.json), so apply exactly this normalization yourself
β a mismatch silently degrades the segmentation.
Usage
hf download sash99666/cdti-lv-baseline --local-dir cdti_baseline
export nnUNet_results=$PWD/cdti_baseline/nnUNet_results
export nnUNet_compile=false
nnUNetv2_predict -i <imagesTs_256> -o <out> -d 310 -c 2d \
-tr nnUNetTrainerDA5_100epochsNoCompile -p nnUNetResEncUNetMPlans -f 0 1 2 3 4
In the notebook, set COLLAB['lv_results_dir'] to cdti_baseline/nnUNet_results and
COLLAB['crop_weights'] / COLLAB['rvip_weights'] to cdti_baseline/yolo/crop.pt / rvip.pt.
Performance (held-out test set: 39 slices, 6 volunteers, never seen in training)
| metric | value |
|---|---|
| LV Dice (mean) | 0.909 |
| Precision / Recall | 0.889 / 0.932 |
| MD / FA / DWI median agreement | ~1% / ~2% / ~3% |
| Insertion-point Hausdorff (median) | ~2.3β2.4 mm (assumes 1.25 mm pixels) |
| Helix angle pitch, manual vs automatic mask (mean) | β61.0 vs β61.7 Β°/wall (median per-slice difference 4.2) |
Limitations
- Single center, single protocol (DiVO_15_04); other scanners/protocols are unvalidated.
- Expects the average DWI and MD maps already reconstructed (no tensor fitting).
- The insertion-point detector is weak (a few slices miss by 30β55 mm); treat its points as an initialization.
.pthcheckpoints are loaded withtorch.load; only use files from this repository.