What's Changed
- Update citation for 1.5.1 by @KumoLiu in #8582
- Bump actions/download-artifact from 4 to 5 by @dependabot[bot] in #8590
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #8588
- Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #8589
- 8564 fourier positional encoding by @NabJa in #8570
- Include more-itertools in build env by @KumoLiu in #8611
- Bump peter-evans/create-or-update-comment from 4 to 5 by @dependabot[bot] in #8612
- Bump actions/download-artifact from 5 to 6 by @dependabot[bot] in #8614
- Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #8615
- Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #8616
- added ReduceTrait and FlattenSequence by @lukas-folle-snkeos in #8531
- Fix box_iou returning 0 for floating-point results less than 1. #8369 by @reworld223 in #8553
- 8620 ModuleNotFoundError: No module named 'onnxscript' in test-py3x (3.11) pipeline by @garciadias in #8621
- timestep scheduling with np.linspace by @ytl0623 in #8623
- Correct H&E stain ordering heuristic in ExtractHEStains by @iyassou in #8551
- feat: add activation checkpointing to unet by @ferreirafabio80 in #8554
- Fix index using tuple for image cropping operation by @johnzielke in #8633
- Fix #8599: Add track_meta and weights_only arguments to PersistentDataset for MetaTensor support. by @mccle in #8628
- Update documentation links by @KumoLiu in #8637
- Fix #8350: Clarify LocalNormalizedCrossCorrelationLoss docstring by @engmohamedsalah in #8639
- 8620 modulenotfounderror no module named onnxscript in test py3x 311 pipeline by @garciadias in #8638
- Generate heatmap transforms by @eclipse0922 in #8579
- Added an optional_import check for onnxruntime and applied the @unitt… by @ytl0623 in #8641
- Bump peter-evans/slash-command-dispatch from 4.0.0 to 5.0.0 by @dependabot[bot] in #8650
- Bump al-cheb/configure-pagefile-action from 1.4 to 1.5 by @dependabot[bot] in #8648
- Bump actions/checkout from 4 to 6 by @dependabot[bot] in #8649
- resolves CI's drive-out-of-space by prune caching and use torch fro CPU by @Borda in #8673
- Consolidating Version Bumps by @ericspod in #8681
- Fix Zip Slip vulnerability in NGC private bundle download by @yueyueL in #8682
- Fix channel-first indices buffer for distance_transform_edt (return_indices=True) #8656 by @alexanderjaus in #8657
- Fix missing closing parenthesis in SSIM formula documentation by @Marshall-mk in #8661
- Replace
pyupgradewith builtin Ruff's UP rule by @Borda in #8606 - Rename NormalizeLabelsInDatasetd to RemapLabelsToSequentiald and fix label ordering bug by @aymuos15 in #8680
- Adding What's New Page for 1.5.2 Release by @ericspod in #8720
- Update base image to 25.12 by @KumoLiu in #8738
- Fixes typo by @benediktjohannes in #8709
- Fix dead code and logic error by @ytl0623 in #8714
- Fix flake8 format in
PatchEmbeddingBlockby @KumoLiu in #8742 - Fix network_type docstring formatting in PerceptualLoss by @aman0311x in #8670
- Update pre-commit hooks to latest versions by @Borda in #8693
- Fixes several typos by @benediktjohannes in #8712
- "Transfroms" -> "Transforms" (typo fix in test_nvtx_transform.py) by @benediktjohannes in #8711
- Fix docstring typos across codebase by @aymuos15 in #8688
- docs: add differentiability warning for Warp with mode='nearest' by @Kheil-Z in #8629
- Complete replace
flake8withruffand update rules by @Borda in #8694 - Fix AutoencoderKlMaisi forcing CUDA transfer on CPU inputs by @ytl0623 in #8736
- Modernize build commands for setuptools 80+ compatibility by @engmohamedsalah in #8728
- feat(metrics): Add MAPEMetric for regression evaluation. by @akshatsinha0 in #8686
- Fix type hint for image reader by @Kirscher in #8646
- Weights in alpha for FocalLoss by @ytl0623 in #8665
- Replace yesqa hook from pre-commit configuration with Ruff's RUF100 by @Borda in #8692
- fix(metrics): Corrected dimension count in MS-SSIM error message for 3D images. by @akshatsinha0 in #8685
- ENH: support additional dtypes in pad_nd by @shubham-61969 in #8672
- Update the docstrings to match the actual code defaults by @ytl0623 in #8701
- Fix #8366: Add strict shape validation to sliding_window_inference by @mattlin1124 in #8645
- fix: support decollate for numpy scalars by @arthurdjn in #8470
- Update ['pixdim'] after Spacing transform in meta dict. by @slicepaste in #8269
- Generalize TestTimeAugmentation to non-spatial predictions by @ytl0623 in #8715
- docs: clarify backward mapping logic for RandAffine and RandAffined by @ytl0623 in #8730
- Add 3D support and confusion matrix output to PanopticQualityMetric by @aymuos15 in #8684
- Change tuple() to () for slightly improved performance in trt_compiler.py by @benediktjohannes in #8749
- Fix incorrect docstring defaults for DiffusionModelUNet by @eitag-uni in #8571
- fix(losses): add missing docstring entries for default parameters by @yushiran in #8755
- Fix batch size broadcasting bug in GeneralizedWassersteinDiceLoss by @hongjie-qiu in #8744
- Add CalibrationErrorMetric and CalibrationError handler by @theo-barfoot in #8707
- Fix GEGLU docstring: Sigmoid -> GELU by @aymuos15 in #8696
- Fix the computation of the crop region end index by @AndersMollgaard in #7825
- Support MIG UUID and respect CUDA_VISIBLE_DEVICES in nnUNetV2Runner by @ytl0623 in #8716
- Adjust execution order of activation and masking in MaskedDiceLoss by @ytl0623 in #8704
- Fft cleanup/update by @aymuos15 in #8762
- Fix using a non-tuple sequence for multidimensional indexing that wil… by @aarpon in #8732
- Docker Slim Image by @ericspod in #8640
- Remove unused
n_dimsparameter fromFourier.inv_shift_fourierby @aymuos15 in #8766 - Add package in requirement file resolve the Module Not Found Error by @ytl0623 in #8792
- Deploy Script Update by @ericspod in #8745
- Replace deprecated
cuda.cudartwithcuda.bindings.runtime. by @ytl0623 in #8790 - Fix Invertd by @eclipse0922 in #8651
- Fixing SSIM Test Method Names by @ericspod in #8746
- Add missing channel_wise parameter to RandScaleIntensityFixedMean by @engmohamedsalah in #8741
- Add GradientAccumulation utility for SupervisedTrainer by @aymuos15 in #8763
- Fix #8340: Remove incorrect minus sign in rotate_range documentation by @yunhaoli24 in #8773
- Prevent implicit conversion of metatensor to numpy array by @sudomakeinstall in #8654
- Enhance ExtractDataKeyFromMetaKeyd to work with MetaTensor by @haoyu-haoyu in #8772
- Add MCC loss by @kakumarabhishek in #8785
- Fixes #8697 GPU memory leak by checking both image and label tensors for CUDA device by @benediktjohannes in #8708
- 8800 potentially wrong device using cuda variable status in monaiauto3dseganalyzerpy by @garciadias in #8801
- Follow-up for Fixing SSIM Test Method Names by @benediktjohannes in #8750
- Use [] and {} instead of list() and dict() by @benediktjohannes in #8748
- Slightly improve performance in engines/utils.py by @benediktjohannes in #8747
- Use {} for better performance in dict() by @benediktjohannes in #8751
- Adding pybind11 explicitly by @ericspod in #8814
- Fix compute_shape_offset non-tuple indexing for PyTorch >=2.9 by @Harrisaint in #8776
- Fix #8775: handle torch.Tensor input in compute_shape_offset by @williams145 in #8812
- Fix make_gaussian_kernel truncated parameter unit mismatch (#8780) by @aymuos15 in #8781
- Fix incorrect
truncatedparameter inmake_gaussian_kernelcausing corruptedLocalNormalizedCrossCorrelationLossby @ytl0623 in #8783 - fix(autoencoderkl): handle
proj_attn→out_projkey mapping inload_old_state_dictby @ytl0623 in #8786 - Add spatial shape constraint docs and test for SwinUNETR (#6771) by @Cado87 in #8817
- Replace direct np.random.* calls with np.random.RandomState instances by @haoyu-haoyu in #8798
- Excluded from MANIFEST.in and setup.py tests folder and subfolders. by @ffvogmv in #8807
- Add support for configurable GD-enhancing tumor label in ConvertToMul… by @AbdoMis in #8779
- Fix memory leak in optional_import traceback handling by @aymuos15 in #8782
- Fix TrainableBilateralFilter 3D input validation (#7444) by @getrichthroughcode in #8729
- Fix: swap input_amplitude and target_amplitude in JukeboxLoss.forward by @Zeesejo in #8821
- Docs: add spatial shape constraints to SegResNetDS docstring by @Talhax55z in #8797
- Fix: handle precomputed crops and safe no-grad cleanup in auto3dseg by @bluehyena in #8803
- Refactor download_url test into TestDownloadUrl class by @e-mny in #8829
- Add EmbeddingCollapseMetric: detect representational collapse in medi… by @ekansh-arora0 in #8815
- Fix multi-axis shear transform to compose individual shear matrices by @aymuos15 in #8778
- 7951 anchors are not centered on grid cells by @hachoj in #8475
- fix(apps/nuclick): replace np.random.choice with self.R.choice in Add… by @Zeesejo in #8836
- fix: use register_buffer for kernel and kernel_vol in LocalNormalizedCrossCorrelationLoss by @Zeesejo in #8818
- Add parameter to DiceMetric and DiceHelper classes by @VijayVignesh1 in #8774
- Enable global coordinates in spatial crop transforms by @emanuilo in #8794
- Avoid eager C-order copy in NibabelReader (fixes #8107) by @aymuos15 in #8825
- Refactoring min-dep tests by @ericspod in #8561
- Fix incomplete activation validation in HausdorffDTLoss by @aymuos15 in #8841
- Fix #8442: pass meta_data to EnsureChannelFirst when track_meta is False by @williams145 in #8835
- Fix align_corners mismatch in AffineTransform by @aymuos15 in #8690
- Fix nested Compose map_items in forward and inverse paths by @aymuos15 in #8787
- fix: replace set_track_meta with F.interpolate in RandSimulateLowResolution (#8409) by @chhayankjain in #8837
- Feature added: Get WSI at mpp by @NikolasSchmitz in #7574
- Replace pickle with JSON in Auto3DSeg algo serialization by @aymuos15 in #8695
- docs: add missing docstrings, Raises sections, and fix Args in networ… by @chhayankjain in #8850
- docs: fix docstring parameter name, add missing Args and Raises secti… by @chhayankjain in #8849
- 4609: Add AUC-Margin Loss for AUROC optimization by @shubham-61969 in #8719
- Replace BaseException with Exception across codebase by @AlexanderSanin in #8859
- Add nested dot-notation access to ConfigParser (#6837) by @aymuos15 in #8858
- Fix: make y optional in ignore_background by @Kirscher in #8647
- Fix #8239: Enhance SoftclDiceLoss and SoftDiceclDiceLoss with DiceLoss-compatible API by @aymuos15 in #8703
- 8627 perceptual loss errors out after hitting the maximum number of downloads by @virginiafdez in #8652
- 8587 test erros on pytorch release 2508 on series 50 by @garciadias in #8770
- Further CICD Cleanup by @ericspod in #8867
- fix: only instantiate CrossAttentionBlock when with_cross_attention=True by @chhayankjain in #8848
- Make get_norm_layer repr test tolerant of PyTorch bias= field by @hjmjohnson in #8880
- fix(networks): replace Tensor | None with Optional[Tensor] for TorchScript compatibility by @AlexanderSanin in #8879
- Register GlobalMutualInformationLoss bin_centers as buffer by @ugbotueferhire in #8869
- Fix For GHSA-rghg-q7wp-9767 by @ericspod in #8885
- Adding allow_pickle argument by @ericspod in #8875
- CodeQL and GPU Actions Update by @ericspod in #8883
- Minor Fixes From Testing 1.6 by @ericspod in #8897
- Release 1.6 Doc Updates by @ericspod in #8882
New Contributors
- @lukas-folle-snkeos made their first contribution in #8531
- @reworld223 made their first contribution in #8553
- @iyassou made their first contribution in #8551
- @ferreirafabio80 made their first contribution in #8554
- @mccle made their first contribution in #8628
- @engmohamedsalah made their first contribution in #8639
- @eclipse0922 made their first contribution in #8579
- @yueyueL made their first contribution in #8682
- @alexanderjaus made their first contribution in #8657
- @Marshall-mk made their first contribution in #8661
- @aymuos15 made their first contribution in #8680
- @benediktjohannes made their first contribution in #8709
- @aman0311x made their first contribution in #8670
- @Kheil-Z made their first contribution in #8629
- @akshatsinha0 made their first contribution in #8686
- @Kirscher made their first contribution in #8646
- @shubham-61969 made their first contribution in #8672
- @mattlin1124 made their first contribution in #8645
- @arthurdjn made their first contribution in #8470
- @eitag-uni made their first contribution in #8571
- @yushiran made their first contribution in #8755
- @hongjie-qiu made their first contribution in #8744
- @theo-barfoot made their first contribution in #8707
- @AndersMollgaard made their first contribution in #7825
- @aarpon made their first contribution in #8732
- @yunhaoli24 made their first contribution in #8773
- @sudomakeinstall made their first contribution in #8654
- @haoyu-haoyu made their first contribution in #8772
- @kakumarabhishek made their first contribution in #8785
- @Harrisaint made their first contribution in #8776
- @williams145 made their first contribution in #8812
- @Cado87 made their first contribution in #8817
- @ffvogmv made their first contribution in #8807
- @AbdoMis made their first contribution in #8779
- @getrichthroughcode made their first contribution in #8729
- @Zeesejo made their first contribution in #8821
- @Talhax55z made their first contribution in #8797
- @bluehyena made their first contribution in #8803
- @e-mny made their first contribution in #8829
- @ekansh-arora0 made their first contribution in #8815
- @hachoj made their first contribution in #8475
- @VijayVignesh1 made their first contribution in #8774
- @emanuilo made their first contribution in #8794
- @chhayankjain made their first contribution in #8837
- @NikolasSchmitz made their first contribution in #7574
- @AlexanderSanin made their first contribution in #8859
- @ugbotueferhire made their first contribution in #8869
Full Changelog: 1.5.2...1.6.0