Releases: Project-MONAI/MONAI
Releases · Project-MONAI/MONAI
1.4.0
Added
- Implemented Conjugate Gradient Solver to generate confidence maps. (#7876)
- Added norm parameter to
ResNet
(#7752, #7805) - Introduced alpha parameter to
DiceFocalLoss
for improved flexibility (#7841) - Integrated Tailored ControlNet Implementations (#7875)
- Integrated Tailored Auto-Encoder Model (#7861)
- Integrated Tailored Diffusion U-Net Model (7867)
- Added Maisi morphological functions (#7893)
- Added support for downloading bundles from NGC private registry (#7907, #7929, #8076)
- Integrated generative refactor into the core (#7886, #7962)
- Made
ViT
andUNETR
models compatible with TorchScript (#7937) - Implemented post-download checks for MONAI bundles and compatibility warnings (#7938)
- Added NGC prefix argument when downloading bundles (7974)
- Added flash attention support in the attention block for improved performance (#7977)
- Enhanced
MLPBlock
for compatibility with VISTA-3D (#7995) - Added support for Neighbor-Aware Calibration Loss (NACL) for calibrated models in segmentation tasks (#7819)
- Added label_smoothing parameter to
DiceCELoss
for enhanced model calibration (#8000) - Add
include_fc
anduse_combined_linear
argument in theSABlock
(#7996) - Added utilities, networks, and an inferer specific to VISTA-3D (#7999, #7987, #8047, #8059, #8021)
- Integrated a new network,
CellSamWrapper
, for cell-based applications (#7981) - Introduced
WriteFileMapping
transform to map between input image paths and their corresponding output paths (#7769) - Added
TrtHandler
to accelerate models using TensorRT (#7990, #8064) - Added box and points conversion transforms for more flexible spatial manipulation (#8053)
- Enhanced
RandSimulateLowResolutiond
transform with deterministic support (#8057) - Added a contiguous argument to the
Fourier
class to facilitate contiguous tensor outputs (#7969) - Allowed
ApplyTransformToPointsd
to receive a sequence of reference keys for more versatile point manipulation (#8063) - Made
MetaTensor
an optional print inDataStats
andDataStatsd
for more concise logging (#7814)
misc.
- Refactored Dataset to utilize Compose for handling transforms. (#7784)
- Combined
map_classes_to_indices
andgenerate_label_classes_crop_centers
into a unified function (#7712) - Introduced metadata schema directly into the codebase for improved structure and validation (#7409)
- Renamed
optional_packages_version
torequired_packages_version
for clearer package dependency management. (#7253) - Replaced
pkg_resources
with the more modern packaging module for package handling (#7953) - Refactored MAISI-related networks to align with the new generative components (#7989, #7993, #8005)
- Added a badge displaying monthly download statistics to enhance project visibility (#7891)
Fixed
transforms
- Ensured deterministic behavior in
MixUp
,CutMix
, andCutOut
transforms (#7813) - Applied a minor correction to
AsDiscrete
transform (#7984) - Fixed handling of integer weightmaps in
RandomWeightedCrop
(#8097) - Resolved data type bug in
ScaleIntensityRangePercentile
(#8109)
data
- Fixed negative strides issue in the
NrrdReader
(#7809) - Addressed wsireader issue with retrieving MPP (7921)
- Ensured location is returned as a tuple in wsireader (#8007)
- Corrected interpretation of space directions in nrrd reader (#8091)
metrics and losses
- Improved memory management for
NACLLoss
(#8020) - Fixed reduction logic in
GeneralizedDiceScore
(#7970)
networks
- Resolved issue with loading pre-trained weights in
ResNet
(#7924) - Fixed error where
torch.device
object had no attribute gpu_id during TensorRT export (#8019) - Corrected function for loading older weights in
DiffusionModelUNet
(#8031) - Switched to
torch_tensorrt.Device
instead oftorch.device
during TensorRT compilation (#8051)
engines and handlers
- Attempted to resolve the "experiment already exists" issue in
MLFlowHandler
(#7916) - Refactored the model export process for conversion and saving (#7934)
misc.
- Adjusted requirements to exclude version 2.0 (#7859)
- Updated deprecated
scipy.ndimage
namespaces in optional imports (#7847, #7897) - Resolved
load_module()
deprecation in Python 3.12 (#7881) - Fixed Ruff type check issues (#7885)
- Cleaned disk space in the conda test pipeline (#7902)
- Replaced deprecated
pkgutil.find_loader
usage (#7906) - Enhanced docstrings in various modules (#7913, #8055)
- Test cases fixing (#7905, #7794, #7808)
- Fix mypy issue introduced in 1.11.0 (#7941)
- Cleaned up warnings during test collection (#7914)
- Fix incompatible types in assignment issue (#7950)
- Fix outdated link in the docs (#7971)
- Addressed CI issues (#7983, #8013)
- Fix module can not import correctly issue (#8015)
- Fix AttributeError when using torch.min and max (#8041)
- Ensure synchronization by adding
cuda.synchronize
(#8058) - Ignore warning from nptyping as workaround (#8062)
- Suppress deprecated warning when importing monai (#8067)
- Fix link in test bundle under MONAI-extra-test-data (#8092)
Changed
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:24.08-py3
fromnvcr.io/nvidia/pytorch:23.08-py3
- Change blossom-ci to ACL security format (#7843)
- Move PyType test to weekly test (#8025)
- Adjusted to meet Numpy 2.0 requirements (#7857)
Deprecated
Removed
- Remove use of deprecated python 3.12 strtobool (#7900)
- Removed the pipeline for publishing to testpypi (#8086)
- Cleaning up some very old and now obsolete infrastructure (#8113, #8118, #8121)
New Contributors
- @alkamid made their first contribution in #7847
- @kephale made their first contribution in #7841
- @guopengf made their first contribution in #7875
- @dcfidalgo made their first contribution in #7984
- @K-Rilla made their first contribution in #7953
- @Han123su made their first contribution in #7934
- @mylapallilavanyaa made their first contribution in #7891
- @staydelight made their first contribution in #7769
- @ken-ni made their first contribution in #8055
- @borisfom made their first contribution in #7990
- @25benjaminli made their first contribution in #8057
- @bwittmann made their first contribution in #7969
- @slicepaste made their first contribution in #7814
- @che85 made their first contribution in #8091
Full Changelog: 1.3.2...1.4.0
1.3.2
1.3.1
Added
- Support for
by_measure
argument inRemoveSmallObjects
(#7137) - Support for
pretrained
flag inResNet
(#7095) - Support for uploading and downloading bundles to and from the Hugging Face Hub (#6454)
- Added weight parameter in DiceLoss to apply weight to voxels of each class (#7158)
- Support for returning dice for each class in
DiceMetric
(#7163) - Introduced
ComponentStore
for storage purposes (#7159) - Added utilities used in MONAI Generative (#7134)
- Enabled Python 3.11 support for
convert_to_torchscript
andconvert_to_onnx
(#7182) - Support for MLflow in
AutoRunner
(#7176) fname_regex
option in PydicomReader (#7181)- Allowed setting AutoRunner parameters from config (#7175)
VoxelMorphUNet
andVoxelMorph
(#7178)- Enabled
cache
option inGridPatchDataset
(#7180) - Introduced
class_labels
option inwrite_metrics_reports
for improved readability (#7249) DiffusionLoss
for image registration task (#7272)- Supported specifying
filename
inSaveimage
(#7318) - Compile support in
SupervisedTrainer
andSupervisedEvaluator
(#7375) mlflow_experiment_name
support inAuto3DSeg
(#7442)- Arm support (#7500)
BarlowTwinsLoss
for representation learning (#7530)SURELoss
andConjugateGradient
for diffusion models (#7308)- Support for
CutMix
,CutOut
, andMixUp
augmentation techniques (#7198) meta_file
andlogging_file
options toBundleWorkflow
(#7549)properties_path
option toBundleWorkflow
for customized properties (#7542)- Support for both soft and hard clipping in
ClipIntensityPercentiles
(#7535) - Support for not saving artifacts in
MLFlowHandler
(#7604) - Support for multi-channel images in
PerceptualLoss
(#7568) - Added ResNet backbone for
FlexibleUNet
(#7571) - Introduced
dim_head
option inSABlock
to set dimensions for each head (#7664) - Direct links to github source code to docs (#7738, #7779)
misc.
- Refactored
list_data_collate
andcollate_meta_tensor
to utilize the latest PyTorch API (#7165) - Added str method in
Metric
base class (#7487) - Made enhancements for testing files (#7662, #7670, #7663, #7671, #7672)
- Improved documentation for bundles (#7116)
Fixed
transforms
- Addressed issue where lazy mode was ignored in
SpatialPadd
(#7316) - Tracked applied operations in
ImageFilter
(#7395) - Warnings are now given only if missing class is not set to 0 in
generate_label_classes_crop_centers
(#7602) - Input is now always converted to C-order in
distance_transform_edt
to ensure consistent behavior (#7675)
data
- Modified .npz file behavior to use keys in
NumpyReader
(#7148) - Handled corrupted cached files in
PersistentDataset
(#7244) - Corrected affine update in
NrrdReader
(#7415)
metrics and losses
- Addressed precision issue in
get_confusion_matrix
(#7187) - Harmonized and clarified documentation and tests for dice losses variants (#7587)
networks
- Removed hard-coded
spatial_dims
inSwinTransformer
(#7302) - Fixed learnable
position_embeddings
inPatchEmbeddingBlock
(#7564, #7605) - Removed
memory_pool_limit
in TRT config (#7647) - Propagated
kernel_size
toConvBlocks
withinAttentionUnet
(#7734) - Addressed hard-coded activation layer in
ResNet
(#7749)
bundle
- Resolved bundle download issue (#7280)
- Updated
bundle_root
directory forNNIGen
(#7586) - Checked for
num_fold
and failed early if incorrect (#7634) - Enhanced logging logic in
ConfigWorkflow
(#7745)
misc.
- Enabled chaining in
Auto3DSeg
CLI (#7168) - Addressed useless error message in
nnUNetV2Runner
(#7217) - Resolved typing and deprecation issues in Mypy (#7231)
- Quoted
$PY_EXE
variable to handle Python path that contains spaces in Bash (#7268) - Improved documentation, code examples, and warning messages in various modules (#7234, #7213, #7271, #7326, #7569, #7584)
- Fixed typos in various modules (#7321, #7322, #7458, #7595, #7612)
- Enhanced docstrings in various modules (#7245, #7381, #7746)
- Handled error when data is on CPU in
DataAnalyzer
(#7310) - Updated version requirements for third-party packages (#7343, #7344, #7384, #7448, #7659, #7704, #7744, #7742, #7780)
- Addressed incorrect slice compute in
ImageStats
(#7374) - Avoided editing a loop's mutable iterable to address B308 (#7397)
- Fixed issue with
CUDA_VISIBLE_DEVICES
setting being ignored (#7408, #7581) - Avoided changing Python version in CICD (#7424)
- Renamed partial to callable in instantiate mode (#7413)
- Imported AttributeError for Python 3.12 compatibility (#7482)
- Updated
nnUNetV2Runner
to support nnunetv2 2.2 (#7483) - Used uint8 instead of int8 in
LabelStats
(#7489) - Utilized subprocess for nnUNet training (#7576)
- Addressed deprecated warning in ruff (#7625)
- Fixed downloading failure on FIPS machine (#7698)
- Updated
torch_tensorrt
compile parameters to avoid warning (#7714) - Restrict
Auto3DSeg
fold input based on datalist (#7778)
Changed
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:24.03-py3
fromnvcr.io/nvidia/pytorch:23.08-py3
Removed
1.3.0
Added
- Intensity transforms
ScaleIntensityFixedMean
andRandScaleIntensityFixedMean
(#6542) UltrasoundConfidenceMapTransform
used for computing confidence map from an ultrasound image (#6709)channel_wise
support inRandScaleIntensity
andRandShiftIntensity
(#6793, #7025)RandSimulateLowResolution
andRandSimulateLowResolutiond
(#6806)SignalFillEmptyd
(#7011)- Euclidean distance transform
DistanceTransformEDT
with GPU support (#6981) - Port loss and metrics from
monai-generative
(#6729, #6836) - Support
invert_image
andretain_stats
inAdjustContrast
andRandAdjustContrast
(#6542) - New network
DAF3D
andQuicknat
(#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 inIgniteMetric
and renamed it toIgniteMetricHandler
(#6695)CallableEventWithFilter
andEvents
options fortrigger_event
inGarbageCollector
(#6663)- Support random sorting option to
GridPatch
,RandGridPatch
,GridPatchd
andRandGridPatchd
(#6701) - Support multi-threaded batch sampling in
PatchInferer
(#6139) SoftclDiceLoss
andSoftDiceclDiceLoss
(#6763)HausdorffDTLoss
andLogHausdorffDTLoss
(#6994)- Documentation for
TensorFloat-32
(#6770) - Docstring format guide (#6780)
GDSDataset
support for GDS (#6778)- PyTorch backend support for
MapLabelValue
(#6872) filter_func
incopy_model_state
to filter the weights to be loaded andfilter_swinunetr
(#6917)stats_sender
toMonaiAlgo
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
inToTensorD
(#6737) - Improve logging message and file name extenstion in
DataAnalyzer
forAuto3DSeg
(#6758) - Set
data_range
as a property inSSIMLoss
(#6788) - Unify environment variable access (#7084)
end_lr
support inWarmupCosineSchedule
(#6662)- Add
ClearML
as optional dependency (#6827) yandex.disk
support indownload_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
whenmap_items
is bool inCompose
(#6882) - Improve performance for
NormalizeIntensity
(#6887) - Fix mismatched shape in
Spacing
(#6912) - Avoid FutureWarning in
CropForeground
(#6934) - Fix
Lazy=True
ignored when usingDataset
call (#6975) - Shape check for arbitrary types for DataStats (#7082)
data
- Fix wrong spacing checking logic in
PydicomReader
and broken link inITKReader
(#6660) - Fix boolean indexing of batched
MetaTensor
(#6781) - Raise warning when multiprocessing in
DataLoader
(#6830) - Remove
shuffle
inDistributedWeightedRandomSampler
(#6886) - Fix missing
SegmentDescription
inPydicomReader
(#6937) - Fix reading dicom series error in
ITKReader
(#6943) - Fix KeyError in
PydicomReader
(#6946) - Update
metatensor_to_itk_image
to accept RASMetaTensor
and update default 'space' inNrrdReader
toSpaceKeys.LPS
(#7000) - Collate common meta dictionary keys (#7054)
metrics and losses
- Fixed bug in
GeneralizedDiceLoss
whenbatch=True
(#6775) - Support for
BCEWithLogitsLoss
inDiceCELoss
(#6924) - Support for
weight
in Dice and related losses (#7098)
networks
- Use
np.prod
instead ofnp.product
(#6639) - Fix dimension issue in
MBConvBlock
(#6672) - Fix hard-coded
up_kernel_size
inViTAutoEnc
(#6735) - Remove hard-coded
bias_downsample
inresnet
(#6848) - Fix unused
kernel_size
inResBlock
(#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
anddataset_data
to unrequired in BundleProperty (#6607) - Set
None
to properties that do not haveREF_ID
(#6607) - Fix
AttributeError
for default value inget_parsed_content
forConfigParser
(#6756) - Update
monai.bundle.scripts
to support NGC hosting (#6828, #6997) - Add
MetaProperties
(#6835) - Add
create_workflow
and updateload
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
inmonai.bundle.script
for merging multiple configs (#7109)
engines and handlers
- Added int options for
iteration_log
andepoch_log
inTensorBoardStatsHandler
(#7027) - Support to run validator at training start (#7108)
misc.
- Fix device fallback error in
DataAnalyzer
(#6658) - Add int check for
current_mode
inconvert_applied_interp_mode
(#6719) - Consistent type in
convert_to_contiguous
(#6849) - Label
argmax
inDataAnalyzer
when retry on CPU (#6852) - Fix
DataAnalyzer
withhistogram_only=True
(#6874) - Fix
AttributeError
inRankFilter
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
fromnvcr.io/nvidia/pytorch:23.03-py3
Deprecated
allow_smaller=True
;allow_smaller=False
will be the new default inCropForeground
andgenerate_spatial_bounding_box
(#6736)dropout_prob
inVNet
in favor ofdropout_prob_down
anddropout_prob_up
(#6768)workflow
inBundleWorkflow
in favor ofworkflow_type
(#6768)pos_embed
inPatchEmbeddingBlock
in favor ofproj_type
(#6986)net_name
andnet_kwargs
indownload
in favor ofmodel
(#7016)img_size
parameter in SwinUNETR (#7093)
Removed
pad_val
,stride
,per_channel
andupsampler
inOcclusionSensitivity
(#6642)compute_meaniou
(#7019)AsChannelFirst
,AddChannel
andSplitChannel
(#7019)create_multigpu_supervised_trainer
andcreate_multigpu_supervised_evaluator
(#7019)runner_id
inrun
(#7019)data_src_cfg_filename
inAlgoEnsembleBuilder
(#7019)get_validation_stats
inEvaluator
andget_train_stats
inTrainer
(#7019)epoch_interval
anditeration_interval
inTensorBoardStatsHandler
(#7019)- some self-hosted test (#7041)
1.2.0
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
andmonai.fl.client
- Modular patch inference API including
PatchInferer
,merger
, andsplitter
- 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
andRandImageFiltered
- 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
andGridPatchDataset
(#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
inSaveImage
andSaveImaged
transforms (#6213) SpacingD
output shape compute stability (#6126)- No mutate ratio /user inputs
croppad
(#6127) - A
warn
flag to RandCropByLabelClasses (#6121) nan
to indicateno_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 fromget_transform_backends
(#5838)
data
__format__
implementation of MetaTensor (#6523)channel_dim
inTiffFileWSIReader
andCuCIMWSIReader
(#6514)- Prepend
"meta"
toMetaTensor.__repr__
andMetaTensor.__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
inHoVerNetNuclearTypePostProcessing
andHoVerNetInstanceMapPostProcessing
(#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 inConfigParser
(#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
andepoch_log
in TensorBoard and MLFlow (#5976) CheckpointSaver
logging error (#6026)- Callable options for
iteration_log
andepoch_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
fromnvcr.io/nvidia/pytorch:22.10-py3
Deprecated
resample=True
;resample=False
will be the new default inSaveImage
random_size=True
;random_size=False
will be the new default for the random cropping transformsimage_only=False
;image_only=True
will be the new default inLoadImage
AddChannel
andAsChannelFirst
in favor ofEnsureChannelFirst
Removed
- Deprecated APIs since v0.9, including WSIReader from
monai.apps
,NiftiSaver
andPNGSaver
frommonai.data
- Support for PyTorch 1.8
- Support for Python 3.7
1.1.0
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 modenni_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
andMedianSmooth
runtime_cache
option forCacheDataset
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 forWarmupCosineSchedule
- 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
@
inmonai.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 atorch.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
inRegUNet
- Optional
bias_downsample
inResNet
dtype
overflow forShiftIntensity
transform- Randomized transforms such as
RandCuCIM
now inheritRandomizableTrait
fg_indices.size
compatibility issue ingenerate_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 forRandRicianNoise
DataAnalyzer
acceptsNone
as label key and checks empty labelsiter_patch_position
now has a smaller memory footprintCumulativeAverage
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
inmonai.engines.Workflow
supports string valuesActivations
andAsDiscrete
takekwargs
as additional argumentsDataAnalyzer
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
fromnvcr.io/nvidia/pytorch:22.09-py3
- Simplified Conda environment file
environment-dev.yml
- Versioneer dependency upgraded to
0.23
from0.19
Deprecated
NibabelReader
input argumentdtype
is deprecated, the reader will use the original dtype of the image
Removed
- Support for PyTorch 1.7
1.0.1
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 whentrack_meta
isFalse
- 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
andMonaiAlgoStats
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 oncpu_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
fromnvcr.io/nvidia/pytorch:22.08-py3
- Replace
None
type metadata content with"none"
forcollate_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
andComputeHoVerMapsd
- Remove batch dim in
SobelGradients
andSobelGradientsd
Deprecated
- Deprecating
compute_meandice
,compute_meaniou
inmonai.metrics
, in favor of
compute_dice
andcompute_iou
respectively
1.0.0
Added
monai.auto3dseg
base APIs andmonai.apps.auto3dseg
components for automated machine learning (AutoML) workflowmonai.fl
module with base APIs andMonaiAlgo
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 andget_all_bundles_list
- new
monai.transforms
components includingSignalContinuousWavelet
for 1D signal,ComputeHoVerMaps
for digital pathology, andSobelGradients
for spatial gradients VarianceMetric
andLabelQualityScore
metrics for active learning- Dataset API for real-time stream and videos
- Several networks and building blocks including
FlexibleUNet
andHoVerNet
MeanIoUHandler
andLogfileHandler
workflow event handlersWSIReader
with the TiffFile backend- Multi-threading in
WSIReader
with cuCIM backend get_stats
API inmonai.engines.Workflow
prune_meta_pattern
inmonai.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
fromnvcr.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 infersbatch_size
duringforward()
- Rearrange the spatial axes in
RandSmoothDeform
transforms following PyTorch's convention - Unified several environment flags into
monai.utils.misc.MONAIEnvVars
- Simplified
__str__
implementation ofMetaTensor
instead of relying on the__repr__
implementation
Fixed
- Improved error messages when both
monai
andmonai-weekly
are pip-installed - Inconsistent pseudo number sequences for different
num_workers
inDataLoader
- 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 ofmonai.networks.nets.TorchVisionFCModel
- Index device issue for
monai.transforms.Crop
- Efficiency issue when converting the array dtype and contiguous memory
Deprecated
Addchannel
andAsChannelFirst
transforms in favor ofEnsureChannelFirst
monai.apps.pathology.data
components in favor of the corresponding components frommonai.data
monai.apps.pathology.handlers
in favor of the corresponding components frommonai.handlers
Removed
Status
section in the pull request template in favor of the pull request draft modemonai.engines.BaseWorkflow
ndim
anddimensions
arguments in favor ofspatial_dims
n_classes
,num_classes
arguments inAsDiscrete
in favor ofto_onehot
logit_thresh
,threshold_values
arguments inAsDiscrete
in favor ofthreshold
torch.testing.assert_allclose
in favor oftests.utils.assert_allclose
0.9.1
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
fromnvcr.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 MetaTensormeta_keys
,meta_key_postfix
,src_affine
arguments in various transforms, in favor of MetaTensorAsChannelFirst
andAddChannel
, in favor ofEnsureChannelFirst
transform
0.9.0
Added
monai.bundle
primary module with aConfigParser
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 intomonai.handlers
andmonai.transforms
- Flexible activation and normalization layers for
TopologySearch
andDiNTS
- 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
fromnvcr.io/nvidia/pytorch:21.10-py3
collate_fn
generates 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.conv3
inUnetResBlock
- 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
inCSVDataset
- In-place modification in
Metric
reduction wrap_array
forensure_tuple
- Contribution guide for introducing new third-party dependencies
Removed
- Deprecated
nifti_writer
,png_writer
in favor ofmonai.data.image_writer
- Support for PyTorch 1.6