ivadomed / ivadomed/model-spinal-rootlets
Lumbar rootlets - first model training
- Dominant language
- Python
- Stars
- 8
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
# Dataset201_LumbarRootlets and Dataset202_LumbarRootlets
This issue summarizes the training of the first models (`Dataset201_LumbarRootlets` - **_semantic_**, `Dataset202_LumbarRootlets` - **_binary_**) for lumbar dorsal rootlets.
## Steps
1. Fixing different resolution and dimensions of images and labels ([#46](https://github.com/ivadomed/model-spinal-rootlets/issues/46))
```console
# "SPpre"
for sub in 04 05 14 15 20;do flirt -in sub-CTS${sub}_ses-SPpre_T2w_rootlets_resampled.nii.gz -ref sub-CTS${sub}_ses-SPpre_acq-zoomit_T2w.nii.gz -applyxfm -usesqform -out sub-CTS${sub}_ses-SPpre_T2w_rootlets_resampled_inzoomit.nii.gz -interp nearestneighbour;done
# image 10 has different fname: "SPanat"
flirt -in sub-CTS10_ses-SPanat_T2w_rootlets_resampled.nii.gz -ref sub-CTS10_ses-SPanat_acq-zoomit_T2w.nii.gz -applyxfm -usesqform -out sub-CTS10_ses-SPanat_T2w_rootlets_resampled_inzoomit.nii.gz -interp nearestneighbour
```
2. Preparing nnUNet folders
```console
mkdir imagesTr
cp sub-CTS04_ses-SPpre_acq-zoomit_T2w.nii.gz imagesTr/sub-CTS04_ses-SPpre_T2w_001_0000.nii.gz
cp sub-CTS05_ses-SPpre_acq-zoomit_T2w.nii.gz imagesTr/sub-CTS05_ses-SPpre_T2w_002_0000.nii.gz
cp sub-CTS10_ses-SPanat_acq-zoomit_T2w.nii.gz imagesTr/sub-CTS10_ses-SPanat_T2w_003_0000.nii.gz
cp sub-CTS14_ses-SPpre_acq-zoomit_T2w.nii.gz imagesTr/sub-CTS14_ses-SPpre_T2w_004_0000.nii.gz
cp sub-CTS15_ses-SPpre_acq-zoomit_T2w.nii.gz imagesTr/sub-CTS15_ses-SPpre_T2w_005_0000.nii.gz
cp sub-CTS20_ses-SPpre_acq-zoomit_T2w.nii.gz imagesTr/sub-CTS20_ses-SPpre_T2w_006_0000.nii.gz
```
```console
mkdir labelsTr
cp sub-CTS04_ses-SPpre_T2w_rootlets_resampled_inzoomit.nii.gz labelsTr/sub-CTS04_ses-SPpre_T2w_001.nii.gz
cp sub-CTS05_ses-SPpre_T2w_rootlets_resampled_inzoomit.nii.gz labelsTr/sub-CTS05_ses-SPpre_T2w_002.nii.gz
cp sub-CTS10_ses-SPanat_T2w_rootlets_resampled_inzoomit.nii.gz labelsTr/sub-CTS10_ses-SPanat_T2w_003.nii.gz
cp sub-CTS14_ses-SPpre_T2w_rootlets_resampled_inzoomit.nii.gz labelsTr/sub-CTS14_ses-SPpre_T2w_004.nii.gz
cp sub-CTS15_ses-SPpre_T2w_rootlets_resampled_inzoomit.nii.gz labelsTr/sub-CTS15_ses-SPpre_T2w_005.nii.gz
cp sub-CTS20_ses-SPpre_T2w_rootlets_resampled_inzoomit.nii.gz labelsTr/sub-CTS20_ses-SPpre_T2w_006.nii.gz
```
3. Changing label values to be consecutive (this is required by nnUNet)
(recoding using [recode_nii.py](https://github.com/ivadomed/model-spinal-rootlets/blob/main/utilities/recode_nii.py))
```console
$ cd labelsTr
$ for file in *nii.gz;do get_unique_values $file;done
[ 0. 20. 21. 22. 23. 24. 25. 26. 27.]
[ 0. 20. 21. 22. 23. 24. 25. 26.]
[ 0. 20. 21. 22. 23. 24. 25. 26. 27.]
[ 0. 20. 21. 22. 23. 24. 25. 26. 27. 28.]
[ 0. 20. 21. 22. 23. 24. 25. 26. 27. 28.]
[ 0. 20. 21. 22. 23. 24. 25. 26. 27. 28.]
$ for file in *nii.gz;do get_unique_values $file; python recode_nii.py $file $file; get_unique_values $file; done
[0. 1. 2. 3. 4. 5. 6. 7. 8.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7. 8.]
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
```
4. Training semantic (level-specific) model `Dataset201_LumbarRootlets`
`fold1`, 4 training and 2 validation images.
dataset.json
```json
{
"name": "Dataset201_LumbarRootlets",
"description": "Dataset201_LumbarRootlets",
"channel_names": {
"0": "acq-zoomit_T2w"
},
"labels": {
"background":0,
"lvl1":1,
"lvl2":2,
"lvl3":3,
"lvl4":4,
"lvl5":5,
"lvl6":6,
"lvl7":7,
"lvl8":8,
"lvl9":9
},
"numTraining": 6,
"file_ending": ".nii.gz",
"overwrite_image_reader_writer": "SimpleITKIO"
}
```
```
nnUNetv2_plan_and_preprocess -d 201 --verify_dataset_integrity -c 3d_fullres
CUDA_VISIBLE_DEVICES=3 nnUNetv2_train 201 3d_fullres 0 -tr nnUNetTrainer_2000epochs
```
5. Training binary (all rootlets set to `1`) model `Dataset202_LumbarRootlets`
`fold1`, 4 training and 2 validation images.
```
$ cd labelsTr
$ for file in *nii.gz;do sct_maths -i $file -bin 0.5 -o $file;done
$ for file in *nii.gz;do get_unique_values $file;done
[0. 1.]
[0. 1.]
[0. 1.]
[0. 1.]
[0. 1.]
[0. 1.]
```
dataset.json
```json
{
"name": "Dataset201_LumbarRootlets",
"description": "Dataset201_LumbarRootlets",
"channel_names": {
"0": "acq-zoomit_T2w"
},
"labels": {
"background":0,
"lvl1":1
},
"numTraining": 6,
"file_ending": ".nii.gz",
"overwrite_image_reader_writer": "SimpleITKIO"
}
```
```
nnUNetv2_plan_and_preprocess -d 202 --verify_dataset_integrity -c 3d_fullres
CUDA_VISIBLE_DEVICES=3 nnUNetv2_train 202 3d_fullres 0 -tr nnUNetTrainer_2000epochs
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.