MONAI Label is an intelligent open source image labeling and learning tool that enables users to create annotated datasets and build AI annotation models for clinical evaluation. MONAI Label enables application developers to build labeling apps in a serverless way, where custom labeling apps are exposed as a service through the MONAI Label Server.
MONAI Label is a server-client system that facilitates interactive medical image annotation by using AI. It is an open-source and easy-to-install ecosystem that can run locally on a machine with single or multiple GPUs. Both server and client work on the same/different machine. It shares the same principles with MONAI.
Refer to full MONAI Label documentations for more details or check out our MONAI Label Deep Dive videos series.
Refer to MONAI Label Tutorial series for application and viewer workflows with different medical image tasks. Notebook-like tutorials are created for detailed instructions.
- Overview
- Getting Started with MONAI Label
- MONAI Label Tutorials
- Cite MONAI Label
- Contributing
- Community
- Additional Resources
MONAI Label reduces the time and effort of annotating new datasets and enables the adaptation of AI to the task at hand by continuously learning from user interactions and data. MONAI Label allows researchers and developers to make continuous improvements to their apps by allowing them to interact with their apps at the user would. End-users (clinicians, technologists, and annotators in general) benefit from AI continuously learning and becoming better at understanding what the end-user is trying to annotate.
MONAI Label aims to fill the gap between developers creating new annotation applications, and the end users which want to benefit from these innovations.
- Framework for developing and deploying MONAI Label Apps to train and infer AI models
- Compositional & portable APIs for ease of integration in existing workflows
- Customizable labeling app design for varying user expertise
- Annotation support via 3DSlicer & OHIF for radiology
- Annotation support via QuPath, Digital Slide Archive, and CVAT for pathology
- Annotation support via CVAT for Endoscopy
- PACS connectivity via DICOMWeb
- Automated Active Learning workflow for endoscopy using CVAT
MONAI Label supports many state-of-the-art(SOTA) models in Model-Zoo, and their integration with viewers and monaibundle app. Please refer to monaibundle app page for supported models, including whole body segmentation, whole brain segmentation, lung nodule detection, tumor segmentation and many more.
In addition, you can find a table of the basic supported fields, modalities, viewers, and general data types. However, these are only ones that we've explicitly test and that doesn't mean that your dataset or file type won't work with MONAI Label. Try MONAI for your given task and if you're having issues, reach out through GitHub Issues.
Field | Models | Viewers | Data Types | Image Modalities/Target |
---|---|---|---|---|
Radiology |
|
|
|
|
Pathology |
|
|
|
|
Video |
|
|
|
|
- Step 1: Install MONAI Label
- Step 2: Download a MONAI Label sample app or write your own custom app
- Step 3: Install a compatible viewer and supported MONAI Label Plugin
- Step 4: Prepare your Data
- Step 5: Launch MONAI Label Server and start Annotating!
pip install -U monailabel
MONAI Label supports the following OS with GPU/CUDA enabled. For more details instruction, please see the installation guides.
Following are the optional dependencies which can help you to accelerate some GPU based transforms from MONAI. These dependencies are enabled by default if you are using projectmonai/monailabel
docker.
To install the latest features using one of the following options:
Git Checkout (developer mode)
git clone https://github.com/Project-MONAI/MONAILabel pip install -r MONAILabel/requirements.txt export PATH=$PATH:`pwd`/MONAILabel/monailabel/scripts
If you are using DICOM-Web + OHIF then you have to build OHIF package separate. Please refer [here](https://github.com/Project-MONAI/MONAILabel/tree/main/plugins/ohif#development-setup).
By default, SAM2 model is included for all the Apps when python >= 3.10
- sam_2d: for any organ or tissue and others over a given slice/2D image.
- sam_3d: to support SAM2 propagation over multiple slices (Radiology/MONAI-Bundle).
If you are using pip install monailabel
by default it uses SAM-2 models.
To use SAM-2.1 use one of following options.
- Use monailabel Docker instead of pip package
- Run monailabel in dev mode (git checkout)
- If you have installed monailabel via pip then uninstall sam2 package
pip uninstall sam2
and then runpip install -r requirements.txt
or install latest SAM-2 from it's github.
This app has example models to do both interactive and automated segmentation over radiology (3D) images. Including auto segmentation with the latest deep learning models (e.g., UNet, UNETR) for multiple abdominal organs. Interactive tools include DeepEdit and Deepgrow for actively improving trained models and deployment.
- Deepedit
- Deepgrow
- Segmentation
- Spleen Segmentation
- Multi-Stage Vertebra Segmentation
This app has example models to do both interactive and automated segmentation over pathology (WSI) images. Including nuclei multi-label segmentation for Neoplastic cells, Inflammatory, Connective/Soft tissue cells, Dead Cells, and Epithelial. The app provides interactive tools including DeepEdits for interactive nuclei segmentation.
- Deepedit
- Deepgrow
- Segmentation
- Spleen Segmentation
- Multi-Stage Vertebra Segmentation
The Endoscopy app enables users to use interactive, automated segmentation and classification models over 2D images for endoscopy usecase. Combined with CVAT, it will demonstrate the fully automated Active Learning workflow to train + fine-tune a model.
- Deepedit
- ToolTracking
- InBody/OutBody
The Bundle app enables users with customized models for inference, training or pre and post processing any target anatomies. The specification for MONAILabel integration of the Bundle app links archived Model-Zoo for customized labeling (e.g., the third-party transformer model for labeling renal cortex, medulla, and pelvicalyceal system. Interactive tools such as DeepEdits).
For a full list of supported bundles, see the MONAI Label Bundles README.
3D Slicer, a free and open-source platform for analyzing, visualizing and understanding medical image data. In MONAI Label, 3D Slicer is most tested with radiology studies and algorithms, develpoment and integration.
The Medical imaging Interaction ToolKit (MITK) is an open source, standalone, medical imaging platform. MONAI Label is partially integrated to MITK Workbench, a powerful and free application to view, process, and segment medical images. The MONAI Label tool in MITK is mostly tested for inferencing using radiology and bundle apps allowing for Auto and Click-based interactive models.
The Open Health Imaging Foundation (OHIF) Viewer is an open source, web-based, medical imaging platform. It aims to provide a core framework for building complex imaging applications.
Quantitative Pathology & Bioimage Analysis (QuPath) is an open, powerful, flexible, extensible software platform for bioimage analysis.
The Digital Slide Archive (DSA) is a platform that provides the ability to store, manage, visualize and annotate large imaging data sets. Digital Slide Archive Setup
CVAT is an interactive video and image annotation tool for computer vision. CVAT Setup
For data preparation, you have two options, you can use a local data store or any image archive tool that supports DICOMWeb.
For a Datastore in a local file archive, there is a set folder structure that MONAI Label uses. Place your image data in a folder and if you have any segmentation files, create and place them in a subfolder called labels/final
. You can see an example below:
dataset
│-- spleen_10.nii.gz
│-- spleen_11.nii.gz
│ ...
└───labels
└─── final
│-- spleen_10.nii.gz
│-- spleen_11.nii.gz
│ ...
If you don't have labels, just place the images/volumes in the dataset folder.
If the viewer you're using supports DICOMweb standard, you can use that instead of a local datastore to serve images to MONAI Label. When starting the MONAI Label server, we need to specify the URL of the DICOMweb service in the studies argument (and, optionally, the username and password for DICOM servers that require them). You can see an example of starting the MONAI Label server with a DICOMweb URL below:
monailabel start_server --app apps/radiology --studies http://127.0.0.1:8042/dicom-web --conf models segmentation
You're now ready to start using MONAI Label. Once you've configured your viewer, app, and datastore, you can launch the MONAI Label server with the relevant parameters. For simplicity, you can see an example where we download a Radiology sample app and dataset, then start the MONAI Label server below:
monailabel apps --download --name radiology --output apps
monailabel datasets --download --name Task09_Spleen --output datasets
monailabel start_server --app apps/radiology --studies datasets/Task09_Spleen/imagesTr --conf models segmentation
Note: If you want to work on different labels than the ones proposed by default, change the configs file following the instructions here: https://youtu.be/KtPE8m0LvcQ?t=622
Content
- Radiology App:
- Viewer: 3D Slicer | Datastore: Local | Task: Segmentation
- MONAILabel: HelloWorld: Spleen segmentation with 3D Slicer setups.
- Viewer: OHIF | Datastore: Local | Task: Segmentation
- MONAILabel: Web-based OHIF Viewer: Spleen segmentation with OHIF setups.
- Viewer: 3D Slicer | Datastore: Local | Task: Segmentation
- MONAIBUNDLE App:
- Viewer: 3D Slicer | Datastore: Local | Task: Segmentation
- MONAILabel: Pancreas Tumor Segmentation with 3D Slicer: Pancreas and tumor segmentation with CT scans in 3D Slicer.
- MONAILabel: Multi-organ Segmentation with 3D Slicer: Multi-organ segmentation with CT scans in 3D Slicer.
- MONAILabel: Whole Body CT Segmentation with 3D Slicer: Whole body (104 structures) segmentation with CT scans.
- MONAILabel: Lung nodule CT Detection with 3D Slicer: Lung nodule detection task with CT scans.
- Viewer: 3D Slicer | Datastore: Local | Task: Segmentation
- Pathology App:
- Viewer: QuPath | Datastore: Local | Task: Segmentation
- MONAILabel: Nuclei Segmentation with QuPath Nuclei segmentation with QuPath setup and Nuclick models.
- Viewer: QuPath | Datastore: Local | Task: Segmentation
- Endoscopy App:
- Viewer: CVAT | Datastore: Local | Task: Segmentation
- MONAILabel: Tooltracking with CVAT: Surgical tool segmentation with CVAT/Nuclio setup.
- Viewer: CVAT | Datastore: Local | Task: Segmentation
If you are using MONAI Label in your research, please use the following citation:
@article{DiazPinto2022monailabel,
author = {Diaz-Pinto, Andres and Alle, Sachidanand and Ihsani, Alvin and Asad, Muhammad and
Nath, Vishwesh and P{\'e}rez-Garc{\'\i}a, Fernando and Mehta, Pritesh and
Li, Wenqi and Roth, Holger R. and Vercauteren, Tom and Xu, Daguang and
Dogra, Prerna and Ourselin, Sebastien and Feng, Andrew and Cardoso, M. Jorge},
title = {{MONAI Label: A framework for AI-assisted Interactive Labeling of 3D Medical Images}},
journal = {arXiv e-prints},
year = 2022,
url = {https://arxiv.org/pdf/2203.12362.pdf}
}
@inproceedings{DiazPinto2022DeepEdit,
title={{DeepEdit: Deep Editable Learning for Interactive Segmentation of 3D Medical Images}},
author={Diaz-Pinto, Andres and Mehta, Pritesh and Alle, Sachidanand and Asad, Muhammad and Brown, Richard and Nath, Vishwesh and Ihsani, Alvin and Antonelli, Michela and Palkovics, Daniel and Pinter, Csaba and others},
booktitle={MICCAI Workshop on Data Augmentation, Labelling, and Imperfections},
pages={11--21},
year={2022},
organization={Springer}
}
Optional Citation: if you are using active learning functionality from MONAI Label, please support us:
@article{nath2020diminishing,
title={Diminishing uncertainty within the training pool: Active learning for medical image segmentation},
author={Nath, Vishwesh and Yang, Dong and Landman, Bennett A and Xu, Daguang and Roth, Holger R},
journal={IEEE Transactions on Medical Imaging},
volume={40},
number={10},
pages={2534--2547},
year={2020},
publisher={IEEE}
}
For guidance on making a contribution to MONAI Label, see the contributing guidelines.
Join the conversation on Twitter @ProjectMONAI or join our Slack channel.
Ask and answer questions over on MONAI Label's GitHub Discussions tab.
- Website: https://monai.io/
- API documentation: https://docs.monai.io/projects/label
- Code: https://github.com/Project-MONAI/MONAILabel
- Project tracker: https://github.com/Project-MONAI/MONAILabel/projects
- Issue tracker: https://github.com/Project-MONAI/MONAILabel/issues
- Wiki: https://github.com/Project-MONAI/MONAILabel/wiki
- Test status: https://github.com/Project-MONAI/MONAILabel/actions
- PyPI package: https://pypi.org/project/monailabel/
- Docker Hub: https://hub.docker.com/r/projectmonai/monailabel
- Client API: https://www.youtube.com/watch?v=mPMYJyzSmyo
- Demo Videos: https://www.youtube.com/c/ProjectMONAI