Releases: Project-MONAI/MONAI
Releases · Project-MONAI/MONAI
0.9.1
Added
- Support of
monai.data.MetaTensoras core data structure across the modules - Support of
inversein array-based transforms monai.apps.TciaDatasetAPIs for The Cancer Imaging Archive (TCIA) datasets, including a pydicom-backend reader- Initial release of components for MRI reconstruction in
monai.apps.reconstruction, including various FFT utilities - New metrics and losses, including mean IoU and structural similarity index
monai.utils.StrEnumclass to simplify Enum-based type annotations
Changed
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:22.06-py3fromnvcr.io/nvidia/pytorch:22.04-py3 - Optionally depend on PyTorch-Ignite v0.4.9 instead of v0.4.8
Fixed
- Fixed issue of not skipping post activations in
Convolutionwhen input arguments are None - Fixed issue of ignoring dropout arguments in
DynUNet - Fixed issue of hard-coded non-linear function in ViT classification head
- Fixed issue of in-memory config overriding with
monai.bundle.ConfigParser.update - 2D SwinUNETR incompatible shapes
- Fixed issue with
monai.bundle.verify_metadatanot raising exceptions - Fixed issue with
monai.transforms.GridPatchreturns inconsistent type location when padding - Wrong generalized Dice score metric when denominator is 0 but prediction is non-empty
- Docker image build error due to NGC CLI upgrade
- Optional default value when parsing id unavailable in a ConfigParser instance
- Immutable data input for the patch-based WSI datasets
Deprecated
*_transformsand*_meta_dictfields in dictionary-based transforms in favor of MetaTensormeta_keys,meta_key_postfix,src_affinearguments in various transforms, in favor of MetaTensorAsChannelFirstandAddChannel, in favor ofEnsureChannelFirsttransform
0.9.0
Added
monai.bundleprimary module with aConfigParserand command-line interfaces for config-based workflows- Initial release of MONAI bundle specification
- Initial release of volumetric image detection modules including bounding boxes handling, RetinaNet-based architectures
- API preview
monai.data.MetaTensor - Unified
monai.data.image_writerto support flexible IO backends including an ITK writer - Various new network blocks and architectures including
SwinUNETR - DeepEdit interactive training/validation workflow
- NuClick interactive segmentation transforms
- Patch-based readers and datasets for whole-slide imaging
- New losses and metrics including
SurfaceDiceMetric,GeneralizedDiceFocalLoss - New pre-processing transforms including
RandIntensityRemap,SpatialResample - Multi-output and slice-based inference for
SlidingWindowInferer NrrdReaderfor NRRD file support- Torchscript utilities to save models with meta information
- Gradient-based visualization module
SmoothGrad - Automatic regular source code scanning for common vulnerabilities and coding errors
Changed
- Simplified
TestTimeAugmentationusing de-collate and invertible transforms APIs - Refactoring
monai.apps.pathologymodules intomonai.handlersandmonai.transforms - Flexible activation and normalization layers for
TopologySearchandDiNTS - Anisotropic first layers for 3D resnet
- Flexible ordering of activation, normalization in
UNet - Enhanced performance of connected-components analysis using Cupy
INSTANCE_NVFUSERfor enhanced performance in 3D instance norm- Support of string representation of dtype in
convert_data_type - Added new options
iteration_log,iteration_logto the logging handlers - Base Docker image upgraded to
nvcr.io/nvidia/pytorch:22.04-py3fromnvcr.io/nvidia/pytorch:21.10-py3 collate_fngenerates more data-related debugging info withdev_collate
Fixed
- Unified the spellings of "meta data", "metadata", "meta-data" to "metadata"
- Various inaccurate error messages when input data are in invalid shapes
- Issue of computing symmetric distances in
compute_average_surface_distance - Unnecessary layer
self.conv3inUnetResBlock - Issue of torchscript compatibility for
ViTand self-attention blocks - Issue of hidden layers in
UNETR allow_smallerin spatial cropping transforms- Antialiasing in
Resize - Issue of bending energy loss value at different resolutions
kwargs_read_csvinCSVDataset- In-place modification in
Metricreduction wrap_arrayforensure_tuple- Contribution guide for introducing new third-party dependencies
Removed
- Deprecated
nifti_writer,png_writerin favor ofmonai.data.image_writer - Support for PyTorch 1.6
0.8.1
Added
- Support of spatial 2D for
ViTAutoEnc - Support of
dataframeobject input inCSVDataset - Support of tensor backend for
Orientation - Support of configurable delimiter for CSV writers
- A base workflow API
DataFuncAPI for dataset-level preprocessingwrite_scalarAPI for logging with additionalengineparameter inTensorBoardHandler- Enhancements for NVTX Range transform logging
- Enhancements for
set_determinism - Performance enhancements in the cache-based datasets
- Configurable metadata keys for
monai.data.DatasetSummary - Flexible
kwargsforWSIReader - Logging for the learning rate schedule handler
GridPatchDatasetas subclass ofmonai.data.IterableDatasetis_onehotoption inKeepLargestConnectedComponentchannel_dimin the image readers and support of stacking images with channels- Support of
matshow3dwith givenchannel_dim - Skipping workflow
runif epoch length is 0 - Enhanced
CacheDatasetto avoid duplicated cache items save_stateutility function
Changed
- Optionally depend on PyTorch-Ignite v0.4.8 instead of v0.4.6
monai.apps.mmars.load_from_mmardefaults to the latest version
Fixed
- Issue when caching large items with
pickle - Issue of hard-coded activation functions in
ResBlock - Issue of
create_file_nameassuming local disk file creation - Issue of
WSIReaderwhen the backend isTiffFile - Issue of
deprecated_argswhen the function signature contains kwargs - Issue of
channel_wisecomputations for the intensity-based transforms - Issue of inverting
OneOf - Issue of removing temporary caching file for the persistent dataset
- Error messages when reader backend is not available
- Output type casting issue in
ScaleIntensityRangePercentiles - Various docstring typos and broken URLs
modein the evaluator engine- Ordering of
OrientationandSpacinginmonai.apps.deepgrow.dataset
Removed
- Additional deep supervision modules in
DynUnet - Deprecated
reductionargument forContrastiveLoss - Decollate warning in
Workflow - Unique label exception in
ROCAUCMetric - Logger configuration logic in the event handlers
0.8.0
Added
- Overview of new features in v0.8
- Network modules for differentiable neural network topology search (DiNTS)
- Multiple Instance Learning transforms and models for digital pathology WSI analysis
- Vision transformers for self-supervised representation learning
- Contrastive loss for self-supervised learning
- Finalized major improvements of 200+ components in
monai.transformsto support input and backend in PyTorch and NumPy - Initial registration module benchmarking with
GlobalMutualInformationLossas an example monai.transformsdocumentation with visual examples and the utility functions- Event handler for
MLfLowintegration - Enhanced data visualization functions including
blend_imagesandmatshow3d RandGridDistortionandSmoothFieldinmonai.transforms- Support of randomized shuffle buffer in iterable datasets
- Performance review and enhancements for data type casting
- Cumulative averaging API with distributed environment support
- Module utility functions including
require_pkgandpytorch_after - Various usability enhancements such as
allow_smallerwhen sampling ROI andwrap_sequencewhen casting object types tifffilesupport inWSIReader- Regression tests for the fast training workflows
- Various tutorials and demos including educational contents at MONAI Bootcamp 2021
Changed
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:21.10-py3fromnvcr.io/nvidia/pytorch:21.08-py3 - Decoupled
TraceKeysandTraceableTransformAPIs fromInvertibleTransform - Skipping affine-based resampling when
resample=FalseinNiftiSaver - Deprecated
threshold_values: boolandnum_classes: intinAsDiscrete - Enhanced
apply_filterfor spatially 1D, 2D and 3D inputs with non-separable kernels - Logging with
loggingin downloading and model archives inmonai.apps - API documentation site now defaults to
stableinstead oflatest skip-magic-trailing-commain coding style enforcements- Pre-merge CI pipelines now include unit tests with Nvidia Ampere architecture
Removed
- Support for PyTorch 1.5
- The deprecated
DynUnetV1and the related network blocks - GitHub self-hosted CI/CD pipelines for package releases
Fixed
- Support of path-like objects as file path inputs in most modules
- Issue of
decollate_batchfor dictionary of empty lists - Typos in documentation and code examples in various modules
- Issue of no available keys when
allow_missing_keys=Truefor theMapTransform - Issue of redundant computation when normalization factors are 0.0 and 1.0 in
ScaleIntensity - Incorrect reports of registered readers in
ImageReader - Wrong numbering of iterations in
StatsHandler - Naming conflicts in network modules and aliases
- Incorrect output shape when
reduction="none"inFocalLoss - Various usability issues reported by users
0.7.0
Added
- Overview of new features in v0.7
- Initial phase of major usability improvements in
monai.transformsto support input and backend in PyTorch and NumPy - Performance enhancements, with profiling and tuning guides for typical use cases
- Reproducing training modules and workflows of state-of-the-art Kaggle competition solutions
- 24 new transforms, including
OneOfmeta transform- DeepEdit guidance signal transforms for interactive segmentation
- Transforms for self-supervised pre-training
- Integration of NVIDIA Tools Extension (NVTX)
- Integration of cuCIM
- Stain normalization and contextual grid for digital pathology
Transchexnetwork for vision-language transformers for chest X-ray analysisDatasetSummaryutility inmonai.dataWarmupCosineSchedule- Deprecation warnings and documentation support for better backwards compatibility
- Padding with additional
kwargsand different backend API - Additional options such as
dropoutandnormin various networks and their submodules
Changed
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:21.08-py3fromnvcr.io/nvidia/pytorch:21.06-py3 - Deprecated input argument
n_classes, in favor ofnum_classes - Deprecated input argument
dimensionsandndims, in favor ofspatial_dims - Updated the Sphinx-based documentation theme for better readability
NdarrayTensortype is replaced byNdarrayOrTensorfor simpler annotations- Self-attention-based network blocks now support both 2D and 3D inputs
Removed
- The deprecated
TransformInverter, in favor ofmonai.transforms.InvertD - GitHub self-hosted CI/CD pipelines for nightly and post-merge tests
monai.handlers.utils.evenly_divisible_all_gathermonai.handlers.utils.string_list_all_gather
Fixed
- A Multi-thread cache writing issue in
LMDBDataset - Output shape convention inconsistencies of the image readers
- Output directory and file name flexibility issue for
NiftiSaver,PNGSaver - Requirement of the
labelfield in test-time augmentation - Input argument flexibility issues for
ThreadDataLoader - Decoupled
DiceandCrossEntropyintermediate results inDiceCELoss - Improved documentation, code examples, and warning messages in various modules
- Various usability issues reported by users
0.6.0
Added
- Overview document for feature highlights in v0.6
- 10 new transforms, a masked loss wrapper, and a
NetAdapterfor transfer learning - APIs to load networks and pre-trained weights from Clara Train Medical Model ARchives (MMARs)
- Base metric and cumulative metric APIs, 4 new regression metrics
- Initial CSV dataset support
- Decollating mini-batch as the default first postprocessing step
- Initial backward compatibility support via
monai.utils.deprecated - Attention-based vision modules and
UNETRfor segmentation - Generic module loaders and Gaussian mixture models using the PyTorch JIT compilation
- Inverse of image patch sampling transforms
- Network block utilities
get_[norm, act, dropout, pool]_layer unpack_itemsmode forapply_transformandCompose- New event
INNER_ITERATION_STARTEDin the deepgrow interactive workflow set_dataAPI for cache-based datasets to dynamically update the dataset content- Fully compatible with PyTorch 1.9
--disttestsand--minoptions forruntests.sh- Initial support of pre-merge tests with Nvidia Blossom system
Changed
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:21.06-py3from
nvcr.io/nvidia/pytorch:21.04-py3 - Optionally depend on PyTorch-Ignite v0.4.5 instead of v0.4.4
- Unified the demo, tutorial, testing data to the project shared drive, and
Project-MONAI/MONAI-extra-test-data - Unified the terms:
post_transformis renamed topostprocessing,pre_transformis renamed topreprocessing - Unified the postprocessing transforms and event handlers to accept the "channel-first" data format
evenly_divisible_all_gatherandstring_list_all_gathermoved tomonai.utils.dist
Removed
- Support of 'batched' input for postprocessing transforms and event handlers
TorchVisionFullyConvModelset_visible_devicesutility functionSegmentationSaverandTransformsInverterhandlers
Fixed
- Issue of handling big-endian image headers
- Multi-thread issue for non-random transforms in the cache-based datasets
- Persistent dataset issue when multiple processes sharing a non-exist cache location
- Typing issue with Numpy 1.21.0
- Loading checkpoint with both
modelandoptmizierusingCheckpointLoaderwhenstrict_shape=False SplitChannelhas different behaviour depending on numpy/torch inputs- Transform pickling issue caused by the Lambda functions
- Issue of filtering by name in
generate_param_groups - Inconsistencies in the return value types of
class_activation_maps - Various docstring typos
- Various usability enhancements in
monai.transforms
0.5.3
Changed
- Project default branch renamed to
devfrommaster - Base Docker image upgraded to
nvcr.io/nvidia/pytorch:21.02-py3fromnvcr.io/nvidia/pytorch:21.04-py3 - Enhanced type checks for the
iteration_metrichandler - Enhanced
PersistentDatasetto usetempfileduring caching computation - Enhanced various info/error messages
- Enhanced performance of
RandAffine - Enhanced performance of
SmartCacheDataset - Optionally requires
cucimwhen the platform isLinux - Default
deviceofTestTimeAugmentationchanged tocpu
Fixed
- Download utilities now provide better default parameters
- Duplicated
key_transformsin the patch-based transforms - A multi-GPU issue in
ClassificationSaver - A default
meta_dataissue inSpacingD - Dataset caching issue with the persistent data loader workers
- A memory issue in
permutohedral_cuda - Dictionary key issue in
CopyItemsd box_startandbox_endparameters for deepgrowSpatialCropForegroundd- Tissue mask array transpose issue in
MaskedInferenceWSIDataset - Various type hint errors
- Various docstring typos
Added
- Support of
to_tensoranddevicearguments forTransformInverter - Slicing options with SpatialCrop
- Class name alias for the networks for backward compatibility
k_divisibleoption for CropForegroundmap_itemsoption forCompose- Warnings of
infandnanfor surface distance computation - A
print_logflag to the image savers - Basic testing pipelines for Python 3.9
0.5.0
Added
- Overview document for feature highlights in v0.5.0
- Invertible spatial transforms
InvertibleTransformbase APIs- Batch inverse and decollating APIs
- Inverse of
Compose - Batch inverse event handling
- Test-time augmentation as an application
- Initial support of learning-based image registration:
- Bending energy, LNCC, and global mutual information loss
- Fully convolutional architectures
- Dense displacement field, dense velocity field computation
- Warping with high-order interpolation with C++/CUDA implementations
- Deepgrow modules for interactive segmentation:
- Workflows with simulations of clicks
- Distance-based transforms for guidance signals
- Digital pathology support:
- Efficient whole slide imaging IO and sampling with Nvidia cuCIM and SmartCache
- FROC measurements for lesion
- Probabilistic post-processing for lesion detection
- TorchVision classification model adaptor for fully convolutional analysis
- 12 new transforms, grid patch dataset,
ThreadDataLoader, EfficientNets B0-B7 - 4 iteration events for the engine for finer control of workflows
- New C++/CUDA extensions:
- Conditional random field
- Fast bilateral filtering using the permutohedral lattice
- Metrics summary reporting and saving APIs
- DiceCELoss, DiceFocalLoss, a multi-scale wrapper for segmentation loss computation
- Data loading utilities:
decollate_batchPadListDataCollatewith inverse support
- Support of slicing syntax for
Dataset - Initial Torchscript support for the loss modules
- Learning rate finder
- Allow for missing keys in the dictionary-based transforms
- Support of checkpoint loading for transfer learning
- Various summary and plotting utilities for Jupyter notebooks
- Contributor Covenant Code of Conduct
- Major CI/CD enhancements covering the tutorial repository
- Fully compatible with PyTorch 1.8
- Initial nightly CI/CD pipelines using Nvidia Blossom Infrastructure
Changed
- Enhanced
list_data_collateerror handling - Unified iteration metric APIs
densenet*extensions are renamed toDenseNet*se_res*network extensions are renamed toSERes*- Transform base APIs are rearranged into
compose,inverse, andtransform _do_transformflag for the random augmentations is unified viaRandomizableTransform- Decoupled post-processing steps, e.g.
softmax,to_onehot_y, from the metrics computations - Moved the distributed samplers to
monai.data.samplersfrommonai.data.utils - Engine's data loaders now accept generic iterables as input
- Workflows now accept additional custom events and state properties
- Various type hints according to Numpy 1.20
- Refactored testing utility
runtests.shto have--unittestand--netintegration tests options - Base Docker image upgraded to
nvcr.io/nvidia/pytorch:21.02-py3fromnvcr.io/nvidia/pytorch:20.10-py3 - Docker images are now built with self-hosted environments
- Primary contact email updated to
[email protected] - Now using GitHub Discussions as the primary communication forum
Removed
- Compatibility tests for PyTorch 1.5.x
- Format specific loaders, e.g.
LoadNifti,NiftiDataset - Assert statements from non-test files
from module import *statements, addressed flake8 F403
Fixed
- Uses American English spelling for code, as per PyTorch
- Code coverage now takes multiprocessing runs into account
- SmartCache with initial shuffling
ConvertToMultiChannelBasedOnBratsClassesnow supports channel-first inputs- Checkpoint handler to save with non-root permissions
- Fixed an issue for exiting the distributed unit tests
- Unified
DynUNetto have single tensor output w/o deep supervision SegmentationSavernow supports user-specified data types and asqueeze_end_dimsflag- Fixed
*Saverevent handlers output filenames with adata_root_diroption - Load image functions now ensure little-endian
- Fixed the test runner to support regex-based test case matching
- Usability issues in the event handlers
0.4.0
Added
- Overview document for feature highlights in v0.4.0
- Torchscript support for the net modules
- New networks and layers:
- Discrete Gaussian kernels
- Hilbert transform and envelope detection
- Swish and Mish activation
- Acti-norm-dropout block
- Upsampling layer
- Autoencoder, Variational autoencoder
- FCNet
- Support of initialisation from pre-trained weights for densenet, SENet, multichannel AHNet
- Layer-wise learning rate API
- New model metrics and event handlers based on occlusion sensitivity, confusion matrix, surface distance
- CAM/GradCAM/GradCAM++
- File format-agnostic image loader APIs with Nibabel, ITK readers
- Enhancements for dataset partition, cross-validation APIs
- New data APIs:
- LMDB-based caching dataset
- Cache-N-transforms dataset
- Iterable dataset
- Patch dataset
- Weekly PyPI release
- Fully compatible with PyTorch 1.7
- CI/CD enhancements:
- Skip, speed up, fail fast, timed, quick tests
- Distributed training tests
- Performance profiling utilities
- New tutorials and demos:
- Autoencoder, VAE tutorial
- Cross-validation demo
- Model interpretability tutorial
- COVID-19 Lung CT segmentation challenge open-source baseline
- Threadbuffer demo
- Dataset partitioning tutorial
- Layer-wise learning rate demo
- MONAI Bootcamp 2020
Changed
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:20.10-py3fromnvcr.io/nvidia/pytorch:20.08-py3
Backwards Incompatible Changes
monai.apps.CVDecathlonDatasetis extended to a genericmonai.apps.CrossValidationwith andataset_clsoption- Cache dataset now requires a
monai.transforms.Composeinstance as the transform argument - Model checkpoint file name extensions changed from
.pthto.pt - Readers'
get_spatial_shapereturns a numpy array instead of list - Decoupled postprocessing steps such as
sigmoid,to_onehot_y,mutually_exclusive,logit_threshfrom metrics and event handlers, the postprocessing steps should be used accordingly before computing the metrics ConfusionMatrixMetricandDiceMetriccomputation now returns an additionalnot_nansflag to indicate valid resultsUpSampleoptionalmodesupports"deconv","nontrainable","pixelshuffle";interp_modeis only used whenmodeis"nontrainable"SegResNetoptionalupsample_modenow supports"deconv","nontrainable","pixelshuffle"monai.transforms.Composeclass inheritsmonai.transforms.Transform- In
Rotate,Rotated,RandRotate,RandRotatedtransforms, theanglerelated parameters are interpreted as angles in radians instead of degrees. SplitChannelandSplitChanneldmoved fromtransforms.posttotransforms.utility
Removed
- Support of PyTorch 1.4
Fixed
- Enhanced the Dice related loss functions for stability and flexibility
- Sliding window inference memory and device issues
- Revised transforms:
- Normalize intensity datatype and normalizer types
- Padding modes for zoom
- Crop returns coordinates
- Select items transform
- Weighted patch sampling
- Option to keep aspect ratio for zoom
- Various CI/CD issues
0.3.0
Added
- Overview document for feature highlights in v0.3.0
- Automatic mixed precision support
- Multi-node, multi-GPU data parallel model training support
- 3 new evaluation metric functions
- 11 new network layers and blocks
- 6 new network architectures
- 14 new transforms, including an I/O adaptor
- Cross validation module for
DecathlonDataset - Smart Cache module in dataset
monai.optimizersmodulemonai.csrcmodule- Experimental feature of ImageReader using ITK, Nibabel, Numpy, Pillow (PIL Fork)
- Experimental feature of differentiable image resampling in C++/CUDA
- Ensemble evaluator module
- GAN trainer module
- Initial cross-platform CI environment for C++/CUDA code
- Code style enforcement now includes isort and clang-format
- Progress bar with tqdm
Changed
- Now fully compatible with PyTorch 1.6
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:20.08-py3fromnvcr.io/nvidia/pytorch:20.03-py3 - Code contributions now require signing off on the Developer Certificate of Origin (DCO)
- Major work in type hinting finished
- Remote datasets migrated to Open Data on AWS
- Optionally depend on PyTorch-Ignite v0.4.2 instead of v0.3.0
- Optionally depend on torchvision, ITK
- Enhanced CI tests with 8 new testing environments
Removed
MONAI/examplesfolder (relocated intoProject-MONAI/tutorials)MONAI/researchfolder (relocated toProject-MONAI/research-contributions)
Fixed
dense_patch_slicesincorrect indexing- Data type issue in
GeneralizedWassersteinDiceLoss ZipDatasetreturn value inconsistenciessliding_window_inferenceindexing anddeviceissues- importing monai modules may cause namespace pollution
- Random data splits issue in
DecathlonDataset - Issue of randomising a
Composetransform - Various issues in function type hints
- Typos in docstring and documentation
PersistentDatasetissue with existing file folder- Filename issue in the output writers