Skip to content

Notable changes between 0.1.0 and 0.2.0

Wenqi Li edited this page Jul 2, 2020 · 4 revisions

Summary

As the codebase is under active development, the current master branch is well ahead of the milestone release on PyPI.

This page briefly summaries the changes since v0.1.0.

0.2.0rc3+14.g640852a - 2020-07-02

Added

  • MedNIST and Decathlon public datasets
  • highlight for v0.2.0
  • MONAI for PyTorch users tutorial
  • Support of spatial size fallback to default image size in the transforms, sliding window inferer
  • monai.utils.enums
  • Label to contour transforms
  • Lambda transforms
  • spatial transform padding mode defaults to nearest or reflection

Changed

  • Various documentation updates
  • Documentation is now available at https://docs.monai.io
  • Revised utility's alias, for example monai.utils has all the submodule's class names
  • process_bar is renamed to progress_bar

0.2.0rc1+13.g379c959 - 2020-06-26

Added

  • Image padding transforms: divisible padding and border padding
  • Type hint enhancements
  • CI tests for MONAI core (minimal external dependencies)
  • Multi-gpu inference example
  • GAN networks and examples
  • RandSpatialCropSamples for random window sampling

Changed

  • MeanDice handler is now implemented with DiceMetric class, instead of a functional (non-breaking)
  • Focal loss now supports one-hot labels
  • RandCropByPosNegLabeld supports one-hot sampling mask label_key
  • Improved optional import error messages
  • In RandCropByPosNegLabeld , size is renamed to spatial_size
  • In NiftiSaver and write_nifti, output_shape renamed to output_spatial_size
  • in PNGSaver and write_png, output_shape is renamed to output_spatial_size
  • Rand2DElasticd, Rand3DElasticd support spatial_size with -1, indicating adaptive size from the original input
  • Arugment interp_order is renamed to mode in all cases, to be consistent with the Pytorch APIs
  • Arugment mode is renamed to padding_mode in all cases, to be consistent with the Pytorch APIs

0.1.0+153.gc98da0d - 2020-06-18

Added

generic

  • Support of Pytorch v1.4 and v1.5
  • Unit tests for Windows latest and MacOS latest (without GPUs)
  • Cachedataset with multi-thread and persistent cache support
  • Code quality and usability improvements in runtests.sh
  • New options to run static type and code style checks in runtests.sh
  • Automatic code formatting with psf/Black
  • New type definitions for type hinting: KeyCollection and IndexSelection
  • Tutorials on using third-party libraries with MONAI
  • Installation guide https://monai.readthedocs.io/en/latest/installation.html
  • MONAI/research folder for research demonstrations and prototypes
  • requirements-dev.txt for setting up MONAI development environment

monai.losses

  • TverskyLoss in monai.losses
  • FocalLoss in monai.losses
  • MaskedDiceLoss as an extension of DiceLoss with additional mask inputs.

monai.data

  • Saving output as PNG format images (optionally with intensity clipping and spatial resampling)
  • ZipDataset and ArrayDataset in monai.data for flexible data loading with transforms
  • trainer and evaluator workflow interfaces and utilities in monai.engines (extending pytorch-ignite)
  • Medical segmentation decathlon data list loader in monai.data
  • monai.data.DataLoader with improved default values for torch.utils.data.DataLoader
  • worker_init_fn utility in monai.data.utils to enhance the DataLoader's default behavior when loading with randomized transforms

utilities

  • set_determinism method in monai.utils

monai.handlers

  • Learning rate schedule handler in monai.handlers
  • CheckpointSaver and CheckpointLoader event handers in monai.handlers

monai.transforms

  • SimulateDelay/SimulateDelayd Transforms for improved usability
  • DataStats/DataStatsd Transforms for improved usability
  • SplitChannel/SplitChanneld Transforms in monai.transforms
  • Activation/Activationd Transforms in monai.transforms
  • AsDiscrete/AsDiscreted Transforms in monai.transforms
  • SqueezeDim/SqueezeDimd Transforms in monai.transforms
  • KeepLargestConnectedComponent/KeepLargestConnectedComponent Transforms in monai.transforms
  • Identity/Identityd Transforms in monai.transforms
  • Various new spatial padding and cropping transforms in monai.transforms
  • Various new post-processing transforms in monai.transforms

monai.application

  • MedNISTDataset in monai.application with automatic downloading and decompressing

monai.networks

  • AffineTransforms in monai.networks.layers for trainable affine transformations
  • Squeeze and excitation layers in monai.networks.blocks
  • Upsample and MaxAvgDownsample layers in monai.networks.blocks
  • Simplified atrous spatial pyramid pooling (ASPP) in monai.networks.blocks
  • Various non-linear activations in monai.networks.layers.LayerFactory

Changed

generic

  • Base Docker image upgraded to nvcr.io/nvidia/pytorch:20.03-py3 from nvcr.io/nvidia/pytorch:19.10-py3
  • Drop the support of Python < 3.6 (now MONAI requires Python >= 3.6)
  • Unified boolean options in all modules: add_sigmoid/do_sigmoid to sigmoid, add_softmax/do_softmax to softmax
  • Contributing guideline to have more coding style instructions
  • Enabled type hinting and static type checks
  • Improved, consistent Python code style via psf/Black
  • Coding style: prefer Python f-string over the "format string" whenever possible
  • Optional import -- MONAI requires Numpy >= 1.17 and Pytorch >= 1.4, all other external packages are not required/installed by default

monai.transforms

  • Restructured monai.transforms.transforms into sub-modules, such as monai.transforms.intensity
  • image_only option to LoadPNG and LoadPNGd transforms (to track the original metadata such as filename)
  • Dropped the dtype= option in intensity and spatial transforms in monai.transforms
  • Default padding mode to nearest or edge in various transforms (instead of padding with Constant)
  • Zoom/Zoomd defaults to keep_size=True (instead of keep_size=False)
  • monai.transforms.spatial is now implemented with Pytorch native interfaces (instead of scipy, scikit-image)
  • monai.transforms.spatial interpolation order and padding mode options changed to accept only Pytorch supported choices
  • monai.transforms.util.apply_transform accepts new argument map_iterms: bool (defaults to True)
  • Dictionary-level transforms now by default works with nested dict: {"image": array, "image_meta_dict": {"affine": array, "original_affine": array}}
  • DeleteKeys/Deletekesd Transforms renamed to DeleteItems/DeleteItemsd in monai.transforms
  • Adds padding mode and interpolation order options to spatial transforms' __call__, in addtion to those in __init__.
  • Moved monai.data.nifti_reader.load_nifti to monai.data.transforms.io

monai.networks

  • GaussianFilter in monai.networks.layers now accepts anisotropic sigmas

monai.metrics

  • one_hot implementation changed for better performance
  • one_hot accepts new optional argument dtype, defaults to torch.float
  • Support of customized overlap ratio and blending_mode in sliding window inference in monai.inferer
  • Function compute_meandice is refactored to DiceMetric with a callable interface in monai.metrics

monai.data

  • Moved monai.data.sliding_window_inferences to monai.inferers
  • Randomized synthetic image generation in monai.data.synthetic accepts new optional argument random_state (defaults to None)

monai.handlers

  • By default not importing monai.handlers modules at first time importing monai
  • monai.config.print_confg() now prints optional dependency information

utilities

  • monai.utils.misc.ensure_tuple now converts string as a single element (ensure_tuple("test") -> ("test",) instead of ("t", "e", "s", "t")

Fixed

  • Various issues in docstring and the documentation website
  • Various issues in unit and integration tests

Removed

  • Automatic installation of optional dependencies including pytorch-ignite==0.3.0, nibabel, tensorboard, pillow, scipy, scikit-image
Clone this wiki locally