Difference between revisions of "Cerebellum CNN"
(Fleshing out.) |
(First pass complete.) |
||
Line 15: | Line 15: | ||
* [https://www.gnu.org/software/parallel/ GNU Parallel] is used to run jobs in parallel. | * [https://www.gnu.org/software/parallel/ GNU Parallel] is used to run jobs in parallel. | ||
+ | |||
+ | |||
+ | {{h3|Installation}} | ||
+ | * Install [https://www.sylabs.io/guides/2.6/user-guide/installation.html singularity 2.6] | ||
+ | |||
+ | |||
+ | {{h3|File structure (important)}} | ||
+ | * The images should be organized in the [http://bids.neuroimaging.io/ BIDS format]. For this singularity to run, the file structure is (be sure to create a subfolder `data/` under the processing folder): | ||
+ | |||
+ | <data_dir>/ | ||
+ | data/ | ||
+ | sub-<subject-label>/ | ||
+ | ses-<session-label>/ | ||
+ | anat/ | ||
+ | sub-<sub-label>_ses-<ses-label>_acq-mprage_[run-<run-label>]_T1w.nii.gz | ||
+ | |||
+ | Note the '''"acq"''' label is required and run label is optional. | ||
+ | |||
+ | The processing will create subfolders '''"n4"''', '''"mni"''', '''"parc"''', and '''"post"''' under the folder '''"<data_dir>"'''. The final parcellation results are in '''"<data_dir>/post"'''. | ||
+ | '''"*n4.nii.gz"''' is the bias field corrected image | ||
+ | '''"*n4_mni.nii.gz"''' is the image in the MNI space | ||
+ | '''"*n4_mni_seg.nii.gz"''' is the parcellation from the deep networks | ||
+ | '''"*n4_mni_seg_post.nii.gz"''' is the final post-processed result. | ||
+ | |||
+ | ICV is calculated from the ROBEX mask. A '''".tsv"''' file of the ICV is stored in '''"<data_dir>/n4"''' as '''"*_T1w_mask_icv.tsv"'''. | ||
+ | |||
+ | The volumes of the cerebellar regions are calculated from the '''"*post.nii.gz"''' and stored in '''"<data_dir>/post"''' as '''"*post_volumes.tsv"'''. | ||
+ | |||
+ | An optional report is stored as '''"<data_dir>/report.html"'''. | ||
+ | |||
+ | Using a bash/python/perl etc. script to organize your data using soft (symbolic) link is recommended. | ||
+ | |||
+ | |||
+ | {{h3|Example Usage}} | ||
+ | * Assuming the singularity image is ~/parc.simg | ||
+ | singularity run ~/parc.simg -d ~/processing | ||
+ | |||
+ | * Generate a report html | ||
+ | singularity run ~/parc.simg -d ~/processing -r | ||
+ | |||
+ | * Run multiple 16 jobs in parallel | ||
+ | singularity run ~/parc.simg -d ~/processing -r -j 16 | ||
+ | |||
+ | * Print help | ||
+ | singularity run ~/parc.simg -h | ||
+ | |||
+ | |||
+ | {{h3|Cerebellum labels}} | ||
+ | "12": "Corpus_Medullare", | ||
+ | "33": "Left_Lobules_I-III", | ||
+ | "36": "Right_Lobules_I-III", | ||
+ | "43": "Left_Lobule_IV", | ||
+ | "46": "Right_Lobule_IV", | ||
+ | "53": "Left_Lobule_V", | ||
+ | "56": "Right_Lobule_V", | ||
+ | "63": "Left_Lobule_VI", | ||
+ | "60": "Vermis_VI", | ||
+ | "66": "Right_Lobule_VI", | ||
+ | "73": "Left_Lobule_VIIAf", | ||
+ | "76": "Right_Lobule_VIIAf", | ||
+ | "74": "Left_Lobule_VIIAt", | ||
+ | "70": "Vermis_VII", | ||
+ | "77": "Right_Lobule_VIIAt", | ||
+ | "75": "Left_Lobule_VIIB", | ||
+ | "78": "Right_Lobule_VIIB", | ||
+ | "83": "Left_Lobule_VIIIA", | ||
+ | "80": "Vermis_VIII", | ||
+ | "86": "Right_Lobule_VIIIA", | ||
+ | "84": "Left_Lobule_VIIIB", | ||
+ | "87": "Right_Lobule_VIIIB", | ||
+ | "93": "Left_Lobule_IX", | ||
+ | "90": "Vermis_IX", | ||
+ | "96": "Right_Lobule_IX", | ||
+ | "103": "Left_Lobule_X", | ||
+ | "100": "Vermis_X", | ||
+ | "106": "Right_Lobule_X" |
Revision as of 18:09, 23 January 2019
<meta name="title" content="Cerebellum Parcellation with Convolutional Neural Networks"/>
Contents
Cerebellum Parcellation with Convolutional Neural Networks
This work originally appeared at Proceedings of SPIE Medical Imaging (SPIE-MI 2019), San Diego, CA, February 16 - 21, 2019. It can be downloaded as a Singularity image from Cerebellar CNN Segmentation Code.
What the Singularity image can do
The Singularity performs the following steps:
- ROBEX is used to estimate a brain mask. This mask is then smoothed to generate a brain weight image.
- N4 from ANTs is used to perform the bias field correction. The bias field is estimated using the weight image calculated above.
- The images are rigidly registered to the ICBM2009c nonlinear symmetric template using the ANTs package. The first MPRAGE image from the longitudinal series of a subject is registered to this template and other images with different contrasts/from the following sessions are registered to the first MPRAGE image.
- The cerebellum of an MNI-registered MPRAGE image is parcellated using the method described in "Shuo Han, et al., Cerebellum parcellation with convolutional neural networks, SPIE 2019 Medical Imaging Image Processing".
- Removing the neck should improve the results, such as using `robustfov` from fsl, but it is not done in this singularity image.
- (OPTIONAL) Generate a HTML report file. To generate the report, the images are converted to .png files which could occupy a large hard disk space.
- GNU Parallel is used to run jobs in parallel.
Installation
- Install singularity 2.6
File structure (important)
- The images should be organized in the BIDS format. For this singularity to run, the file structure is (be sure to create a subfolder `data/` under the processing folder):
<data_dir>/ data/ sub-<subject-label>/ ses-<session-label>/ anat/ sub-<sub-label>_ses-<ses-label>_acq-mprage_[run-<run-label>]_T1w.nii.gz
Note the "acq" label is required and run label is optional.
The processing will create subfolders "n4", "mni", "parc", and "post" under the folder "<data_dir>". The final parcellation results are in "<data_dir>/post".
"*n4.nii.gz" is the bias field corrected image "*n4_mni.nii.gz" is the image in the MNI space "*n4_mni_seg.nii.gz" is the parcellation from the deep networks "*n4_mni_seg_post.nii.gz" is the final post-processed result.
ICV is calculated from the ROBEX mask. A ".tsv" file of the ICV is stored in "<data_dir>/n4" as "*_T1w_mask_icv.tsv".
The volumes of the cerebellar regions are calculated from the "*post.nii.gz" and stored in "<data_dir>/post" as "*post_volumes.tsv".
An optional report is stored as "<data_dir>/report.html".
Using a bash/python/perl etc. script to organize your data using soft (symbolic) link is recommended.
Example Usage
- Assuming the singularity image is ~/parc.simg
singularity run ~/parc.simg -d ~/processing
- Generate a report html
singularity run ~/parc.simg -d ~/processing -r
- Run multiple 16 jobs in parallel
singularity run ~/parc.simg -d ~/processing -r -j 16
- Print help
singularity run ~/parc.simg -h
Cerebellum labels
"12": "Corpus_Medullare", "33": "Left_Lobules_I-III", "36": "Right_Lobules_I-III", "43": "Left_Lobule_IV", "46": "Right_Lobule_IV", "53": "Left_Lobule_V", "56": "Right_Lobule_V", "63": "Left_Lobule_VI", "60": "Vermis_VI", "66": "Right_Lobule_VI", "73": "Left_Lobule_VIIAf", "76": "Right_Lobule_VIIAf", "74": "Left_Lobule_VIIAt", "70": "Vermis_VII", "77": "Right_Lobule_VIIAt", "75": "Left_Lobule_VIIB", "78": "Right_Lobule_VIIB", "83": "Left_Lobule_VIIIA", "80": "Vermis_VIII", "86": "Right_Lobule_VIIIA", "84": "Left_Lobule_VIIIB", "87": "Right_Lobule_VIIIB", "93": "Left_Lobule_IX", "90": "Vermis_IX", "96": "Right_Lobule_IX", "103": "Left_Lobule_X", "100": "Vermis_X", "106": "Right_Lobule_X"