Skip to content

Releases: Project-MONAI/MONAI

1.3.0

12 Oct 17:37
865972f
Compare
Choose a tag to compare

Added

  • Intensity transforms ScaleIntensityFixedMean and RandScaleIntensityFixedMean (#6542)
  • UltrasoundConfidenceMapTransform used for computing confidence map from an ultrasound image (#6709)
  • channel_wise support in RandScaleIntensity and RandShiftIntensity (#6793, #7025)
  • RandSimulateLowResolution and RandSimulateLowResolutiond (#6806)
  • SignalFillEmptyd (#7011)
  • Euclidean distance transform DistanceTransformEDT with GPU support (#6981)
  • Port loss and metrics from monai-generative (#6729, #6836)
  • Support invert_image and retain_stats in AdjustContrast and RandAdjustContrast (#6542)
  • New network DAF3D and Quicknat (#6306)
  • Support sincos position embedding (#6986)
  • ZarrAvgMerger used for patch inference (#6633)
  • Dataset tracking support to MLFlowHandler (#6616)
  • Considering spacing and subvoxel borders in SurfaceDiceMetric (#6681)
  • CUCIM support for surface-related metrics (#7008)
  • loss_fn support in IgniteMetric and renamed it to IgniteMetricHandler (#6695)
  • CallableEventWithFilter and Events options for trigger_event in GarbageCollector (#6663)
  • Support random sorting option to GridPatch, RandGridPatch, GridPatchd and RandGridPatchd (#6701)
  • Support multi-threaded batch sampling in PatchInferer (#6139)
  • SoftclDiceLoss and SoftDiceclDiceLoss (#6763)
  • HausdorffDTLoss and LogHausdorffDTLoss (#6994)
  • Documentation for TensorFloat-32 (#6770)
  • Docstring format guide (#6780)
  • GDSDataset support for GDS (#6778)
  • PyTorch backend support for MapLabelValue (#6872)
  • filter_func in copy_model_state to filter the weights to be loaded and filter_swinunetr (#6917)
  • stats_sender to MonaiAlgo for FL stats (#6984)
  • freeze_layers to help freeze specific layers (#6970)

misc.

  • Refactor multi-node running command used in Auto3DSeg into dedicated functions (#6623)
  • Support str type annotation to device in ToTensorD (#6737)
  • Improve logging message and file name extenstion in DataAnalyzer for Auto3DSeg (#6758)
  • Set data_range as a property in SSIMLoss (#6788)
  • Unify environment variable access (#7084)
  • end_lr support in WarmupCosineSchedule (#6662)
  • Add ClearML as optional dependency (#6827)
  • yandex.disk support in download_url (#6667)
  • Improve config expression error message (#6977)

Fixed

transforms

  • Make convert_box_to_mask throw errors when box size larger than the image (#6637)
  • Fix lazy mode in RandAffine (#6774)
  • Raise ValueError when map_items is bool in Compose (#6882)
  • Improve performance for NormalizeIntensity (#6887)
  • Fix mismatched shape in Spacing (#6912)
  • Avoid FutureWarning in CropForeground (#6934)
  • Fix Lazy=True ignored when using Dataset call (#6975)
  • Shape check for arbitrary types for DataStats (#7082)

data

  • Fix wrong spacing checking logic in PydicomReader and broken link in ITKReader (#6660)
  • Fix boolean indexing of batched MetaTensor (#6781)
  • Raise warning when multiprocessing in DataLoader (#6830)
  • Remove shuffle in DistributedWeightedRandomSampler (#6886)
  • Fix missing SegmentDescription in PydicomReader (#6937)
  • Fix reading dicom series error in ITKReader (#6943)
  • Fix KeyError in PydicomReader (#6946)
  • Update metatensor_to_itk_image to accept RAS MetaTensor and update default 'space' in NrrdReader to SpaceKeys.LPS (#7000)
  • Collate common meta dictionary keys (#7054)

metrics and losses

  • Fixed bug in GeneralizedDiceLoss when batch=True (#6775)
  • Support for BCEWithLogitsLoss in DiceCELoss (#6924)
  • Support for weight in Dice and related losses (#7098)

networks

  • Use np.prod instead of np.product (#6639)
  • Fix dimension issue in MBConvBlock (#6672)
  • Fix hard-coded up_kernel_size in ViTAutoEnc (#6735)
  • Remove hard-coded bias_downsample in resnet (#6848)
  • Fix unused kernel_size in ResBlock (#6999)
  • Allow for defining reference grid on non-integer coordinates (#7032)
  • Padding option for autoencoder (#7068)
  • Lower peak memory usage for SegResNetDS (#7066)

bundle

  • Set train_dataset_data and dataset_data to unrequired in BundleProperty (#6607)
  • Set None to properties that do not have REF_ID (#6607)
  • Fix AttributeError for default value in get_parsed_content for ConfigParser (#6756)
  • Update monai.bundle.scripts to support NGC hosting (#6828, #6997)
  • Add MetaProperties (#6835)
  • Add create_workflow and update load function (#6835)
  • Add bundle root directory to Python search directories automatically (#6910)
  • Generate properties for bundle docs automatically (#6918)
  • Move download_large_files from model zoo to core (#6958)
  • Bundle syntax # as alias of :: (#6955)
  • Fix bundle download naming issue (#6969, #6963)
  • Simplify the usage of ckpt_export (#6965)
  • update_kwargs in monai.bundle.script for merging multiple configs (#7109)

engines and handlers

  • Added int options for iteration_log and epoch_log in TensorBoardStatsHandler (#7027)
  • Support to run validator at training start (#7108)

misc.

  • Fix device fallback error in DataAnalyzer (#6658)
  • Add int check for current_mode in convert_applied_interp_mode (#6719)
  • Consistent type in convert_to_contiguous (#6849)
  • Label argmax in DataAnalyzer when retry on CPU (#6852)
  • Fix DataAnalyzer with histogram_only=True (#6874)
  • Fix AttributeError in RankFilter in single GPU environment (#6895)
  • Remove the default warning on TORCH_ALLOW_TF32_CUBLAS_OVERRIDE and add debug print info (#6909)
  • Hide user information in print_config (#6913, #6922)
  • Optionally pass coordinates to predictor during sliding window (#6795)
  • Proper ensembling when trained with a sigmoid in AutoRunner (#6588)
  • Fixed test_retinanet by increasing absolute differences (#6615)
  • Add type check to avoid comparing a np.array with a string in _check_kwargs_are_present (#6624)
  • Fix md5 hashing with FIPS mode (#6635)
  • Capture failures from Auto3DSeg related subprocess calls (#6596)
  • Code formatting tool for user-specified directory (#7106)
  • Various docstring fixes

Changed

  • Base Docker image upgraded to nvcr.io/nvidia/pytorch:23.08-py3 from nvcr.io/nvidia/pytorch:23.03-py3

Deprecated

  • allow_smaller=True; allow_smaller=False will be the new default in CropForeground and generate_spatial_bounding_box (#6736)
  • dropout_prob in VNet in favor of dropout_prob_down and dropout_prob_up (#6768)
  • workflow in BundleWorkflow in favor of workflow_type(#6768)
  • pos_embed in PatchEmbeddingBlock in favor of proj_type(#6986)
  • net_name and net_kwargs in download in favor of model(#7016)
  • img_size parameter in SwinUNETR (#7093)

Removed

  • pad_val, stride, per_channel and upsampler in OcclusionSensitivity (#6642)
  • compute_meaniou (#7019)
  • AsChannelFirst, AddChanneland SplitChannel (#7019)
  • create_multigpu_supervised_trainer and create_multigpu_supervised_evaluator (#7019)
  • runner_id in run (#7019)
  • data_src_cfg_filename in AlgoEnsembleBuilder (#7019)
  • get_validation_stats in Evaluator and get_train_stats in Trainer (#7019)
  • epoch_interval and iteration_interval in TensorBoardStatsHandler (#7019)
  • some self-hosted test (#7041)

1.2.0

08 Jun 17:16
c33f1ba
Compare
Choose a tag to compare

Added

  • Various Auto3DSeg enhancements and integration tests including multi-node multi-GPU optimization, major usability improvements
  • TensorRT and ONNX support for monai.bundle API and the relevant models
  • nnU-Net V2 integration monai.apps.nnunet
  • Binary and categorical metrics and event handlers using MetricsReloaded
  • Python module and CLI entry point for bundle workflows in monai.bundle.workflows and monai.fl.client
  • Modular patch inference API including PatchInferer, merger, and splitter
  • Initial release of lazy resampling including transforms and MetaTensor implementations
  • Bridge for ITK Image object and MetaTensor monai.data.itk_torch_bridge
  • Sliding window inference memory efficiency optimization including SlidingWindowInfererAdapt
  • Generic kernel filtering transforms ImageFiltered and RandImageFiltered
  • Trainable bilateral filters and joint bilateral filters
  • ClearML stats and image handlers for experiment tracking

misc.

  • Utility functions to warn API default value changes (#5738)
  • Support of dot notation to access content of ConfigParser (#5813)
  • Softmax version to focal loss (#6544)
  • FROC metric for N-dimensional (#6528)
  • Extend SurfaceDiceMetric for 3D images (#6549)
  • A track_meta option for Lambda and derived transforms (#6385)
  • CLIP pre-trained text-to-vision embedding (#6282)
  • Optional spacing to surface distances calculations (#6144)
  • WSIReader read by power and mpp (#6244)
  • Support GPU tensor for GridPatch and GridPatchDataset (#6246)
  • SomeOf transform composer (#6143)
  • GridPatch with both count and threshold filtering (#6055)

Fixed

transforms

  • map_classes_to_indices efficiency issue (#6468)
  • Adaptive resampling mode based on backends (#6429)
  • Improve Compose encapsulation (#6224)
  • User-provided FolderLayout in SaveImage and SaveImaged transforms (#6213)
  • SpacingD output shape compute stability (#6126)
  • No mutate ratio /user inputs croppad (#6127)
  • A warn flag to RandCropByLabelClasses (#6121)
  • nan to indicate no_channel, split dim singleton (#6090)
  • Compatible padding mode (#6076)
  • Allow for missing filename_or_obj key (#5980)
  • Spacing pixdim in-place change (#5950)
  • Add warning in RandHistogramShift (#5877)
  • Exclude cuCIM wrappers from get_transform_backends (#5838)

data

  • __format__ implementation of MetaTensor (#6523)
  • channel_dim in TiffFileWSIReader and CuCIMWSIReader (#6514)
  • Prepend "meta" to MetaTensor.__repr__ and MetaTensor.__str__ for easier identification (#6214)
  • MetaTensor slicing issue (#5845)
  • Default writer flags (#6147)
  • WSIReader defaults and tensor conversion (#6058)
  • Remove redundant array copy for WSITiffFileReader (#6089)
  • Fix unused arg in SlidingPatchWSIDataset (#6047)
  • reverse_indexing for PILReader (#6008)
  • Use np.linalg for the small affine inverse (#5967)

metrics and losses

  • Removing L2-norm in contrastive loss (L2-norm already present in CosSim) (#6550)
  • Fixes the SSIM metric (#6250)
  • Efficiency issues of Dice metrics (#6412)
  • Generalized Dice issue (#5929)
  • Unify output tensor devices for multiple metrics (#5924)

networks

  • Make RetinaNet throw errors for NaN only when training (#6479)
  • Replace deprecated arg in torchvision models (#6401)
  • Improves NVFuser import check (#6399)
  • Add device in HoVerNetNuclearTypePostProcessing and HoVerNetInstanceMapPostProcessing (#6333)
  • Enhance hovernet load pretrained function (#6269)
  • Access to the att_mat in self-attention modules (#6493)
  • Optional swinunetr-v2 (#6203)
  • Add transform to handle empty box as training data for retinanet_detector (#6170)
  • GPU utilization of DiNTS network (#6050)
  • A pixelshuffle upsample shape mismatch problem (#5982)
  • GEGLU activation function for the MLP Block (#5856)
  • Constructors for DenseNet derived classes (#5846)
  • Flexible interpolation modes in regunet (#5807)

bundle

  • Optimized the deepcopy logic in ConfigParser (#6464)
  • Improve check and error message of bundle run (#6400)
  • Warn or raise ValueError on duplicated key in json/yaml config (#6252)
  • Default metadata and logging values for bundle run (#6072)
  • pprint head and tail in bundle script (#5969)
  • Config parsing issue for substring reference (#5932)
  • Fix instantiate for object instantiation with attribute path (#5866)
  • Fix _get_latest_bundle_version issue on Windows (#5787)

engines and handlers

  • MLflow handler run bug (#6446)
  • monai.engine training attribute check (#6132)
  • Update StatsHandler logging message (#6051)
  • Added callable options for iteration_log and epoch_log in TensorBoard and MLFlow (#5976)
  • CheckpointSaver logging error (#6026)
  • Callable options for iteration_log and epoch_log in StatsHandler (#5965)

misc.

  • Avoid creating cufile.log when import monai (#6106)
  • monai._extensions module compatibility with rocm (#6161)
  • Issue of repeated UserWarning: "TypedStorage is deprecated" (#6105)
  • Use logging config at module level (#5960)
  • Add ITK to the list of optional dependencies (#5858)
  • RankFilter to skip logging when the rank is not meeting criteria (#6243)
  • Various documentation issues

Changed

  • Overall more precise and consistent type annotations
  • Optionally depend on PyTorch-Ignite v0.4.11 instead of v0.4.10
  • Base Docker image upgraded to nvcr.io/nvidia/pytorch:23.03-py3 from nvcr.io/nvidia/pytorch:22.10-py3

Deprecated

  • resample=True; resample=False will be the new default in SaveImage
  • random_size=True; random_size=False will be the new default for the random cropping transforms
  • image_only=False; image_only=True will be the new default in LoadImage
  • AddChannel and AsChannelFirst in favor of EnsureChannelFirst

Removed

  • Deprecated APIs since v0.9, including WSIReader from monai.apps, NiftiSaver and PNGSaver from monai.data
  • Support for PyTorch 1.8
  • Support for Python 3.7

1.1.0

19 Dec 21:05
a2ec375
Compare
Choose a tag to compare

Added

  • Hover-Net based digital pathology workflows including new network, loss, postprocessing, metric, training, and inference modules
  • Various enhancements for Auto3dSeg AutoRunner including template caching, selection, and a dry-run mode nni_dry_run
  • Various enhancements for Auto3dSeg algo templates including new state-of-the-art configurations, optimized GPU memory utilization
  • New bundle API and configurations to support experiment management including MLFlowHandler
  • New bundle.script API to support model zoo query and download
  • LossMetric metric to compute loss as cumulative metric measurement
  • Transforms and base transform APIs including RandomizableTrait and MedianSmooth
  • runtime_cache option for CacheDataset and the derived classes to allow for shared caching on the fly
  • Flexible name formatter for SaveImage transform
  • pending_operations MetaTensor property and basic APIs for lazy image resampling
  • Contrastive sensitivity for SSIM metric
  • Extensible backbones for FlexibleUNet
  • Generalize SobelGradients to 3D and any spatial axes
  • warmup_multiplier option for WarmupCosineSchedule
  • F beta score metric based on confusion matrix metric
  • Support of key overwriting in LambdaD
  • Basic premerge tests for Python 3.11
  • Unit and integration tests for CUDA 11.6, 11.7 and A100 GPU
  • DataAnalyzer handles minor image-label shape inconsistencies

Fixed

  • Review and enhance previously untyped APIs with additional type annotations and casts
  • switch_endianness in LoadImage now supports tensor input
  • Reduced memory footprint for various Auto3dSeg tests
  • Issue of @ in monai.bundle.ReferenceResolver
  • Compatibility issue with ITK-Python 5.3 (converting itkMatrixF44 for default collate)
  • Inconsistent of sform and qform when using different backends for SaveImage
  • MetaTensor.shape call now returns a torch.Size instead of tuple
  • Issue of channel reduction in GeneralizedDiceLoss
  • Issue of background handling before softmax in DiceFocalLoss
  • Numerical issue of LocalNormalizedCrossCorrelationLoss
  • Issue of incompatible view size in ConfusionMatrixMetric
  • NetAdapter compatibility with Torchscript
  • Issue of extract_levels in RegUNet
  • Optional bias_downsample in ResNet
  • dtype overflow for ShiftIntensity transform
  • Randomized transforms such as RandCuCIM now inherit RandomizableTrait
  • fg_indices.size compatibility issue in generate_pos_neg_label_crop_centers
  • Issue when inverting ToTensor
  • Issue of capital letters in filename suffixes check in LoadImage
  • Minor tensor compatibility issues in apps.nuclick.transforms
  • Issue of float16 in verify_net_in_out
  • std variable type issue for RandRicianNoise
  • DataAnalyzer accepts None as label key and checks empty labels
  • iter_patch_position now has a smaller memory footprint
  • CumulativeAverage has been refactored and enhanced to allow for simple tracking of metric running stats.
  • Multi-threading issue for MLFlowHandler

Changed

  • Printing a MetaTensor now generates a less verbose representation
  • DistributedSampler raises a ValueError if there are too few devices
  • OpenCV and VideoDataset modules are loaded lazily to avoid dependency issues
  • device in monai.engines.Workflow supports string values
  • Activations and AsDiscrete take kwargs as additional arguments
  • DataAnalyzer is now more efficient and writes summary stats before detailed all case stats
  • Base Docker image upgraded to nvcr.io/nvidia/pytorch:22.10-py3 from nvcr.io/nvidia/pytorch:22.09-py3
  • Simplified Conda environment file environment-dev.yml
  • Versioneer dependency upgraded to 0.23 from 0.19

Deprecated

  • NibabelReader input argument dtype is deprecated, the reader will use the original dtype of the image

Removed

  • Support for PyTorch 1.7

1.0.1

24 Oct 17:54
8271a19
Compare
Choose a tag to compare

Fixes

  • DiceCELoss for multichannel targets
  • Auto3DSeg DataAnalyzer out-of-memory error and other minor issues
  • An optional flag issue in the RetinaNet detector
  • An issue with output offset for Spacing
  • A LoadImage issue when track_meta is False
  • 1D data output error in VarAutoEncoder
  • An issue with resolution computing in ImageStats

Added

  • Flexible min/max pixdim options for Spacing
  • Upsample mode deconvgroup and optional kernel sizes
  • Docstrings for gradient-based saliency maps
  • Occlusion sensitivity to use sliding window inference
  • Enhanced Gaussian window and device assignments for sliding window inference
  • Multi-GPU support for MonaiAlgo
  • ClientAlgoStats and MonaiAlgoStats for federated summary statistics
  • MetaTensor support for OneOf
  • Add a file check for bundle logging config
  • Additional content and an authentication token option for bundle info API
  • An anti-aliasing option for Resized
  • SlidingWindowInferer adaptive device based on cpu_thresh
  • SegResNetDS with deep supervision and non-isotropic kernel support
  • Premerge tests for Python 3.10

Changed

  • Base Docker image upgraded to nvcr.io/nvidia/pytorch:22.09-py3 from nvcr.io/nvidia/pytorch:22.08-py3
  • Replace None type metadata content with "none" for collate_fn compatibility
  • HoVerNet Mode and Branch to independent StrEnum
  • Automatically infer device from the first item in random elastic deformation dict
  • Add channel dim in ComputeHoVerMaps and ComputeHoVerMapsd
  • Remove batch dim in SobelGradients and SobelGradientsd

Deprecated

  • Deprecating compute_meandice, compute_meaniou in monai.metrics, in favor of
    compute_dice and compute_iou respectively

1.0.0

16 Sep 14:56
1700933
Compare
Choose a tag to compare

Added

  • monai.auto3dseg base APIs and monai.apps.auto3dseg components for automated machine learning (AutoML) workflow
  • monai.fl module with base APIs and MonaiAlgo for federated learning client workflow
  • An initial backwards compatibility guide
  • Initial release of accelerated MRI reconstruction components, including CoilSensitivityModel
  • Support of MetaTensor and new metadata attributes for various digital pathology components
  • Various monai.bundle enhancements for MONAI model-zoo usability, including config debug mode and get_all_bundles_list
  • new monai.transforms components including SignalContinuousWavelet for 1D signal, ComputeHoVerMaps for digital pathology, and SobelGradients for spatial gradients
  • VarianceMetric and LabelQualityScore metrics for active learning
  • Dataset API for real-time stream and videos
  • Several networks and building blocks including FlexibleUNet and HoVerNet
  • MeanIoUHandler and LogfileHandler workflow event handlers
  • WSIReader with the TiffFile backend
  • Multi-threading in WSIReader with cuCIM backend
  • get_stats API in monai.engines.Workflow
  • prune_meta_pattern in monai.transforms.LoadImage
  • max_interactions for deepedit interaction workflow
  • Various profiling utilities in monai.utils.profiling

Changed

  • Base Docker image upgraded to nvcr.io/nvidia/pytorch:22.08-py3 from nvcr.io/nvidia/pytorch:22.06-py3
  • Optionally depend on PyTorch-Ignite v0.4.10 instead of v0.4.9
  • The cache-based dataset now matches the transform information when read/write the cache
  • monai.losses.ContrastiveLoss now infers batch_size during forward()
  • Rearrange the spatial axes in RandSmoothDeform transforms following PyTorch's convention
  • Unified several environment flags into monai.utils.misc.MONAIEnvVars
  • Simplified __str__ implementation of MetaTensor instead of relying on the __repr__ implementation

Fixed

  • Improved error messages when both monai and monai-weekly are pip-installed
  • Inconsistent pseudo number sequences for different num_workers in DataLoader
  • Issue of repeated sequences for monai.data.ShuffleBuffer
  • Issue of not preserving the physical extent in monai.transforms.Spacing
  • Issue of using inception_v3 as the backbone of monai.networks.nets.TorchVisionFCModel
  • Index device issue for monai.transforms.Crop
  • Efficiency issue when converting the array dtype and contiguous memory

Deprecated

  • Addchannel and AsChannelFirst transforms in favor of EnsureChannelFirst
  • monai.apps.pathology.data components in favor of the corresponding components from monai.data
  • monai.apps.pathology.handlers in favor of the corresponding components from monai.handlers

Removed

  • Status section in the pull request template in favor of the pull request draft mode
  • monai.engines.BaseWorkflow
  • ndim and dimensions arguments in favor of spatial_dims
  • n_classes, num_classes arguments in AsDiscrete in favor of to_onehot
  • logit_thresh, threshold_values arguments in AsDiscrete in favor of threshold
  • torch.testing.assert_allclose in favor of tests.utils.assert_allclose

0.9.1

25 Jul 18:28
356d2d2
Compare
Choose a tag to compare

Added

  • Support of monai.data.MetaTensor as core data structure across the modules
  • Support of inverse in array-based transforms
  • monai.apps.TciaDataset APIs 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.StrEnum class to simplify Enum-based type annotations

Changed

  • Base Docker image upgraded to nvcr.io/nvidia/pytorch:22.06-py3 from nvcr.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 Convolution when 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_metadata not raising exceptions
  • Fixed issue with monai.transforms.GridPatch returns 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

  • *_transforms and *_meta_dict fields in dictionary-based transforms in favor of MetaTensor
  • meta_keys, meta_key_postfix, src_affine arguments in various transforms, in favor of MetaTensor
  • AsChannelFirst and AddChannel, in favor of EnsureChannelFirst transform

0.9.0

13 Jun 18:12
af0e0e9
Compare
Choose a tag to compare

Added

  • monai.bundle primary module with a ConfigParser and 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_writer to 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
  • NrrdReader for 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 TestTimeAugmentation using de-collate and invertible transforms APIs
  • Refactoring monai.apps.pathology modules into monai.handlers and monai.transforms
  • Flexible activation and normalization layers for TopologySearch and DiNTS
  • Anisotropic first layers for 3D resnet
  • Flexible ordering of activation, normalization in UNet
  • Enhanced performance of connected-components analysis using Cupy
  • INSTANCE_NVFUSER for enhanced performance in 3D instance norm
  • Support of string representation of dtype in convert_data_type
  • Added new options iteration_log, iteration_log to the logging handlers
  • Base Docker image upgraded to nvcr.io/nvidia/pytorch:22.04-py3 from nvcr.io/nvidia/pytorch:21.10-py3
  • collate_fn generates more data-related debugging info with dev_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.conv3 in UnetResBlock
  • Issue of torchscript compatibility for ViT and self-attention blocks
  • Issue of hidden layers in UNETR
  • allow_smaller in spatial cropping transforms
  • Antialiasing in Resize
  • Issue of bending energy loss value at different resolutions
  • kwargs_read_csv in CSVDataset
  • In-place modification in Metric reduction
  • wrap_array for ensure_tuple
  • Contribution guide for introducing new third-party dependencies

Removed

  • Deprecated nifti_writer, png_writer in favor of monai.data.image_writer
  • Support for PyTorch 1.6

0.8.1

16 Feb 23:46
Compare
Choose a tag to compare

Added

  • Support of spatial 2D for ViTAutoEnc
  • Support of dataframe object input in CSVDataset
  • Support of tensor backend for Orientation
  • Support of configurable delimiter for CSV writers
  • A base workflow API
  • DataFunc API for dataset-level preprocessing
  • write_scalar API for logging with additional engine parameter in TensorBoardHandler
  • 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 kwargs for WSIReader
  • Logging for the learning rate schedule handler
  • GridPatchDataset as subclass of monai.data.IterableDataset
  • is_onehot option in KeepLargestConnectedComponent
  • channel_dim in the image readers and support of stacking images with channels
  • Support of matshow3d with given channel_dim
  • Skipping workflow run if epoch length is 0
  • Enhanced CacheDataset to avoid duplicated cache items
  • save_state utility function

Changed

  • Optionally depend on PyTorch-Ignite v0.4.8 instead of v0.4.6
  • monai.apps.mmars.load_from_mmar defaults to the latest version

Fixed

  • Issue when caching large items with pickle
  • Issue of hard-coded activation functions in ResBlock
  • Issue of create_file_name assuming local disk file creation
  • Issue of WSIReader when the backend is TiffFile
  • Issue of deprecated_args when the function signature contains kwargs
  • Issue of channel_wise computations 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
  • mode in the evaluator engine
  • Ordering of Orientation and Spacing in monai.apps.deepgrow.dataset

Removed

  • Additional deep supervision modules in DynUnet
  • Deprecated reduction argument for ContrastiveLoss
  • Decollate warning in Workflow
  • Unique label exception in ROCAUCMetric
  • Logger configuration logic in the event handlers

0.8.0

25 Nov 21:19
714d00d
Compare
Choose a tag to compare

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.transforms to support input and backend in PyTorch and NumPy
  • Initial registration module benchmarking with GlobalMutualInformationLoss as an example
  • monai.transforms documentation with visual examples and the utility functions
  • Event handler for MLfLow integration
  • Enhanced data visualization functions including blend_images and matshow3d
  • RandGridDistortion and SmoothField in monai.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_pkg and pytorch_after
  • Various usability enhancements such as allow_smaller when sampling ROI and wrap_sequence when casting object types
  • tifffile support in WSIReader
  • 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-py3 from nvcr.io/nvidia/pytorch:21.08-py3
  • Decoupled TraceKeys and TraceableTransform APIs from InvertibleTransform
  • Skipping affine-based resampling when resample=False in NiftiSaver
  • Deprecated threshold_values: bool and num_classes: int in AsDiscrete
  • Enhanced apply_filter for spatially 1D, 2D and 3D inputs with non-separable kernels
  • Logging with logging in downloading and model archives in monai.apps
  • API documentation site now defaults to stable instead of latest
  • skip-magic-trailing-comma in coding style enforcements
  • Pre-merge CI pipelines now include unit tests with Nvidia Ampere architecture

Removed

  • Support for PyTorch 1.5
  • The deprecated DynUnetV1 and 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_batch for dictionary of empty lists
  • Typos in documentation and code examples in various modules
  • Issue of no available keys when allow_missing_keys=True for the MapTransform
  • 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" in FocalLoss
  • Various usability issues reported by users

0.7.0

24 Sep 01:21
bfa054b
Compare
Choose a tag to compare

Added

  • Overview of new features in v0.7
  • Initial phase of major usability improvements in monai.transforms to 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
    • OneOf meta 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
  • Transchex network for vision-language transformers for chest X-ray analysis
  • DatasetSummary utility in monai.data
  • WarmupCosineSchedule
  • Deprecation warnings and documentation support for better backwards compatibility
  • Padding with additional kwargs and different backend API
  • Additional options such as dropout and norm in various networks and their submodules

Changed

  • Base Docker image upgraded to nvcr.io/nvidia/pytorch:21.08-py3 from nvcr.io/nvidia/pytorch:21.06-py3
  • Deprecated input argument n_classes, in favor of num_classes
  • Deprecated input argument dimensions and ndims, in favor of spatial_dims
  • Updated the Sphinx-based documentation theme for better readability
  • NdarrayTensor type is replaced by NdarrayOrTensor for simpler annotations
  • Self-attention-based network blocks now support both 2D and 3D inputs

Removed

  • The deprecated TransformInverter, in favor of monai.transforms.InvertD
  • GitHub self-hosted CI/CD pipelines for nightly and post-merge tests
  • monai.handlers.utils.evenly_divisible_all_gather
  • monai.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 label field in test-time augmentation
  • Input argument flexibility issues for ThreadDataLoader
  • Decoupled Dice and CrossEntropy intermediate results in DiceCELoss
  • Improved documentation, code examples, and warning messages in various modules
  • Various usability issues reported by users