Skip to content

Commit

Permalink
init commit for prostate158 model
Browse files Browse the repository at this point in the history
  • Loading branch information
ccosmin97 committed Dec 4, 2023
1 parent efbd003 commit 2dfcd55
Show file tree
Hide file tree
Showing 4 changed files with 193 additions and 0 deletions.
39 changes: 39 additions & 0 deletions models/monai_prostate158/config/default.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
general:
data_base_dir: /app/data
version: 1.0
description: default configuration for MONAI Prostate158 MR Prostate zonal regions segmentation (dicom to dicom)

execute:
- DicomImporter
- NiftiConverter
- NNUnetRunner
- DsegConverter
- DataOrganizer

modules:
DicomImporter:
source_dir: input_data
import_dir: sorted_data
sort_data: true
meta:
mod: 'mr'

NiftiConverter:
in_datas: dicom:mod=mr
engine: dcm2niix

Prostate158Runner:
in_data: nifti:mod=mr
nnunet_task: prostate_mri_anatomy
# nnunet_model: 3d_fullres
roi: PROSTATE

DsegConverter:
source_segs: nifti:mod=seg
target_dicom: dicom:mod=mr
model_name: 'Prostate158'
skip_empty_slices: True

DataOrganizer:
targets:
- dicomseg-->[i:sid]/nnunet_mr_prostate.seg.dcm
28 changes: 28 additions & 0 deletions models/monai_prostate158/dockerfiles/dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
FROM mhubai/base:latest

# FIXME: set this environment variable as a shortcut to avoid nnunet crashing the build
# by pulling sklearn instead of scikit-learn
# N.B. this is a known issue:
# https://github.com/MIC-DKFZ/nnUNet/issues/1281
# https://github.com/MIC-DKFZ/nnUNet/pull/1209
ENV SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True

# Install nnunet and platipy
RUN pip3 install --no-cache-dir \
"monai[fire]"

# Clone the main branch of MHubAI/models
ARG MHUB_MODELS_REPO
RUN buildutils/import_mhub_model.sh monai_prostate158 ${MHUB_MODELS_REPO}

# Pull weights into the container
ENV WEIGHTS_DIR=/root/.monai/bundles/
RUN mkdir -p $WEIGHTS_DIR
RUN python -m monai.bundle download "prostate_mri_anatomy" --bundle_dir ${WEIGHTS_DIR}

# specify nnunet specific environment variables
# ENV WEIGHTS_FOLDER=$WEIGHTS_DIR

# Default run script
ENTRYPOINT ["mhub.run"]
CMD ["--config", "/app/models/monai_prostate158/config/default.yml"]
125 changes: 125 additions & 0 deletions models/monai_prostate158/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
{
"id": "...",
"name": "nnunet_prostate_task24_promise",
"title": "nnU-Net (Whole prostate segmentation)",
"summary": {
"description": "nnU-Net's whole prostate segmentation model is a single-modality (i.e. T2) input AI-based pipeline for the automated segmentation of the whole prostate on MRI scans.",
"inputs": [
{
"label": "T2 input image",
"description": "The T2 axial-acquired sequence being the input image",
"format": "DICOM",
"modality": "MR",
"bodypartexamined": "Prostate",
"slicethickness": "3.6 mm",
"non-contrast": true,
"contrast": false
}
],
"outputs": [
{
"type": "Segmentation",
"classes": [
"PROSTATE"
]
}
],
"model": {
"architecture": "U-net",
"training": "supervised",
"cmpapproach": "3D"
},
"data": {
"training": {
"vol_samples": 50
},
"evaluation": {
"vol_samples": 30
},
"public": true,
"external": false
}
},
"details": {
"name": "nnU-Net whole prostate segmentation model",
"version": "1.0.0",
"devteam": "MIC-DKFZ (Helmholtz Imaging Applied Computer Vision Lab)",
"type": "nnU-Net (U-Net structure, optimized by data-driven heuristics)",
"date": {
"weights": "2020",
"code": "2020",
"pub": "2020"
},
"cite": "Isensee, F., Jaeger, P. F., Kohl, S. A., Petersen, J., & Maier-Hein, K. H. (2020). nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation. Nature Methods, 1-9.",
"license": {
"code": "Apache 2.0",
"weights": "CC BY-NC 4.0"
},
"publications": [
{
"title": "nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation",
"uri": "https://www.nature.com/articles/s41592-020-01008-z"
}
],
"github": "https://github.com/MIC-DKFZ/nnUNet/tree/nnunetv1",
"zenodo": "https://zenodo.org/record/4485926"
},
"info": {
"use": {
"title": "Intended Use",
"text": "This model is intended to perform prostate anatomy segmentation in MR T2 scans. The slice thickness of the training data is 2.2~4mm. Endorectal coil was present during training."
},
"analyses": {
"title": "Quantitative Analyses",
"text": "The model's performance was assessed using the Dice Coefficient, in the context of the Promise12 challenge. The complete breakdown of the metrics can be consulted on GrandChallenge [1] and is reported in the supplementary material to the publication [2].",
"references": [
{
"label": "Evaluation of prostate segmentation algorithms for MRI: The PROMISE12 challenge",
"uri": "https://doi.org/10.1016/j.media.2013.12.002"
},
{
"label": "nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation",
"uri": "https://www.nature.com/articles/s41592-020-01008-z"
}
]
},
"evaluation": {
"title": "Evaluation Data",
"text": "The evaluation dataset consists of 30 test samples coming from the Promise12 challenge.",
"tables": [],
"references": [
{
"label": "Evaluation of prostate segmentation algorithms for MRI: The PROMISE12 challenge",
"uri": "https://doi.org/10.1016/j.media.2013.12.002"
},
{
"label": "PROMISE12 dataset (direct download)",
"uri": "https://zenodo.org/records/8026660"
}
]
},
"training": {
"title": "Training Data",
"text": "The training dataset consists of 50 MRI cases containing the prostate, from the Promise12 challenge. The authors report the following characteristics for the training dataset:",
"tables": [
{
"label": "Medical Image Decathlon dataset (training)",
"entries": {
"Slice Thickness": "2.2~4 mm",
"In-Plane Resolution": "0.27 mm"
}
}
],
"references": [
{
"label": "Evaluation of prostate segmentation algorithms for MRI: The PROMISE12 challenge",
"uri": "https://doi.org/10.1016/j.media.2013.12.002"
},
{
"label": "PROMISE12 dataset (direct download)",
"uri": "https://zenodo.org/records/8026660"
}
]
}
}
}
1 change: 1 addition & 0 deletions models/monai_prostate158/utils/Prostate158Runner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#....

0 comments on commit 2dfcd55

Please sign in to comment.