Medical Imaging Deep Learning library to train and deploy 3D segmentation models on Azure Machine Learning
Перейти к файлу
Peter Hessey 78b7de2b5f
ENH: Fix logging + model registration for Amulet runs (#804)
Adds functionality to properly log IE-DL outputs and register trained
models when running jobs through amulet.
2022-09-30 11:42:38 +01:00
.github ENH: Move hi-ml and fastMRI to PyPI packages (#752) 2022-06-23 09:44:54 +01:00
.idea STYLE: Ensure line breaks at the end of all files (#717) 2022-04-04 15:08:43 +01:00
.vscode DOC: Add all `InnerEye/ML` docstrings to ReadTheDocs (#783) 2022-08-16 08:58:38 +00:00
InnerEye ENH: Fix logging + model registration for Amulet runs (#804) 2022-09-30 11:42:38 +01:00
InnerEye-DataQuality STYLE: Ensure line breaks at the end of all files (#717) 2022-04-04 15:08:43 +01:00
RegressionTestResults STYLE: Ensure line breaks at the end of all files (#717) 2022-04-04 15:08:43 +01:00
TestSubmodule ENH: Fix logging + model registration for Amulet runs (#804) 2022-09-30 11:42:38 +01:00
Tests ENH: Upgrading package versions for security patches (#757) 2022-09-14 16:33:17 +00:00
TestsOutsidePackage DOC: Add all `InnerEye/ML` docstrings to ReadTheDocs (#783) 2022-08-16 08:58:38 +00:00
azure-pipelines Replace data quality folder with a link to the commit (#692) 2022-03-10 09:14:25 +00:00
docs DOC: Fix dead TRE links (#798) 2022-09-13 13:29:24 +01:00
.amlignore ENH: Fix logging + model registration for Amulet runs (#804) 2022-09-30 11:42:38 +01:00
.amltignore ENH: Fix logging + model registration for Amulet runs (#804) 2022-09-30 11:42:38 +01:00
.coveragerc Fix error messages in test coverage reporting (#394) 2021-02-10 14:29:20 +00:00
.editorconfig Add source code 2020-07-29 00:30:35 +05:30
.flake8 STYLE: Fix pre-commit errors (#736) 2022-06-07 09:14:00 +01:00
.gitattributes Moving nii.gz from git lfs to git to simplify the HelloWorld test (#632) 2022-01-11 16:19:17 +00:00
.gitconfig Add source code 2020-07-29 00:30:35 +05:30
.gitignore ENH: Fix logging + model registration for Amulet runs (#804) 2022-09-30 11:42:38 +01:00
.gitmodules ENH: Move hi-ml and fastMRI to PyPI packages (#752) 2022-06-23 09:44:54 +01:00
.pre-commit-config.yaml ENH: Autoupdate hooks [pre-commit.ci] (#737) 2022-07-07 16:03:39 +01:00
.readthedocs.yaml ENH: Move docs to ReadTheDocs (#768) 2022-08-04 09:15:19 +01:00
CHANGELOG.md ENH: Move docs to ReadTheDocs (#768) 2022-08-04 09:15:19 +01:00
CODE_OF_CONDUCT.md Add source code 2020-07-29 00:30:35 +05:30
GeoPol.xml STYLE: Ensure line breaks at the end of all files (#717) 2022-04-04 15:08:43 +01:00
LICENSE Add source code 2020-07-29 00:30:35 +05:30
README.md DOC: Typo fix (#803) 2022-09-27 10:41:31 +01:00
SECURITY.md STYLE: Ensure line breaks at the end of all files (#717) 2022-04-04 15:08:43 +01:00
THIRDPARTYNOTICES.md Remove unnecessary notices in THIRDPARTYNOTICES.md 2020-11-03 15:37:43 +00:00
conftest.py Moving InnerEye's Azure code to hi-ml package (#548) 2021-08-26 09:17:09 +01:00
create_and_lock_environment.sh ENH: Move docs to ReadTheDocs (#768) 2022-08-04 09:15:19 +01:00
environment.yml ENH: Fix logging + model registration for Amulet runs (#804) 2022-09-30 11:42:38 +01:00
environment_win.yml ENH: Upgrading package versions for security patches (#757) 2022-09-14 16:33:17 +00:00
mypy.ini Add source code 2020-07-29 00:30:35 +05:30
mypy_runner.py DOC: Add all `InnerEye/ML` docstrings to ReadTheDocs (#783) 2022-08-16 08:58:38 +00:00
primary_deps.yml ENH: Upgrading package versions for security patches (#757) 2022-09-14 16:33:17 +00:00
pytest.ini Enable tiling non-PANDA WSI datasets (#621) 2021-12-16 16:11:55 +00:00
score.py DOC: Add all `InnerEye/ML` docstrings to ReadTheDocs (#783) 2022-08-16 08:58:38 +00:00
setup.py Add accuracy at threshold 0.5 to classification report (#450) 2021-05-04 10:09:35 +00:00

README.md

InnerEye-DeepLearning

Build Status

InnerEye-DeepLearning (IE-DL) is a toolbox for easily training deep learning models on 3D medical images. Simple to run both locally and in the cloud with AzureML, it allows users to train and run inference on the following:

In addition, this toolbox supports:

  • Cross-validation using AzureML, where the models for individual folds are trained in parallel. This is particularly important for the long-running training jobs often seen with medical images.
  • Hyperparameter tuning using Hyperdrive.
  • Building ensemble models.
  • Easy creation of new models via a configuration-based approach, and inheritance from an existing architecture.

Documentation

For all documentation, including setup guides and APIs, please refer to the IE-DL Read the Docs site.

Quick Setup

This quick setup assumes you are using a machine running Ubuntu with Git, Git LFS, Conda and Python 3.7+ installed. Please refer to the setup guide for more detailed instructions on getting InnerEye set up with other operating systems and installing the above prerequisites.

  1. Clone the InnerEye-DeepLearning repo by running the following command:

    git clone --recursive https://github.com/microsoft/InnerEye-DeepLearning & cd InnerEye-DeepLearning
    
  2. Create and activate your conda environment:

    conda env create --file environment.yml && conda activate InnerEye
    
  3. Verify that your installation was successful by running the HelloWorld model (no GPU required):

    python InnerEye/ML/runner.py --model=HelloWorld
    

If the above runs with no errors: Congratulations! You have successfully built your first model using the InnerEye toolbox.

If it fails, please check the troubleshooting page on the Wiki.

Full InnerEye Deployment

We offer a companion set of open-sourced tools that help to integrate trained CT segmentation models with clinical software systems:

  • The InnerEye-Gateway is a Windows service running in a DICOM network, that can route anonymized DICOM images to an inference service.
  • The InnerEye-Inference component offers a REST API that integrates with the InnerEye-Gateway, to run inference on InnerEye-DeepLearning models.

Details can be found here.

docs/deployment.png

Benefits of InnerEye-DeepLearning

In combiniation with the power of AzureML, InnerEye provides the following benefits:

  • Traceability: AzureML keeps a full record of all experiments that were executed, including a snapshot of the code. Tags are added to the experiments automatically, that can later help filter and find old experiments.
  • Transparency: All team members have access to each other's experiments and results.
  • Reproducibility: Two model training runs using the same code and data will result in exactly the same metrics. All sources of randomness are controlled for.
  • Cost reduction: Using AzureML, all compute resources (virtual machines, VMs) are requested at the time of starting the training job and freed up at the end. Idle VMs will not incur costs. Azure low priority nodes can be used to further reduce costs (up to 80% cheaper).
  • Scalability: Large numbers of VMs can be requested easily to cope with a burst in jobs.

Despite the cloud focus, InnerEye is designed to be able to run locally too, which is important for model prototyping, debugging, and in cases where the cloud can't be used. Therefore, if you already have GPU machines available, you will be able to utilize them with the InnerEye toolbox.

Licensing

MIT License

You are responsible for the performance, the necessary testing, and if needed any regulatory clearance for any of the models produced by this toolbox.

Acknowledging usage of Project InnerEye OSS tools

When using Project InnerEye open-source software (OSS) tools, please acknowledge with the following wording:

This project used Microsoft Research's Project InnerEye open-source software tools (https://aka.ms/InnerEyeOSS).

Contact

If you have any feature requests, or find issues in the code, please create an issue on GitHub.

Please send an email to InnerEyeInfo@microsoft.com if you would like further information about this project.

Publications

Oktay O., Nanavati J., Schwaighofer A., Carter D., Bristow M., Tanno R., Jena R., Barnett G., Noble D., Rimmer Y., Glocker B., OHara K., Bishop C., Alvarez-Valle J., Nori A.: Evaluation of Deep Learning to Augment Image-Guided Radiotherapy for Head and Neck and Prostate Cancers. JAMA Netw Open. 2020;3(11):e2027426. doi:10.1001/jamanetworkopen.2020.27426

Bannur S., Oktay O., Bernhardt M, Schwaighofer A., Jena R., Nushi B., Wadhwani S., Nori A., Natarajan K., Ashraf S., Alvarez-Valle J., Castro D. C.: Hierarchical Analysis of Visual COVID-19 Features from Chest Radiographs. ICML 2021 Workshop on Interpretable Machine Learning in Healthcare. https://arxiv.org/abs/2107.06618

Bernhardt M., Castro D. C., Tanno R., Schwaighofer A., Tezcan K. C., Monteiro M., Bannur S., Lungren M., Nori S., Glocker B., Alvarez-Valle J., Oktay. O: Active label cleaning for improved dataset quality under resource constraints. https://www.nature.com/articles/s41467-022-28818-3. Accompanying code InnerEye-DataQuality

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Maintenance

This toolbox is maintained by the Microsoft Medical Image Analysis team.