monai-weekly 1.7.dev2627__tar.gz → 1.7.dev2629__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {monai_weekly-1.7.dev2627/monai_weekly.egg-info → monai_weekly-1.7.dev2629}/PKG-INFO +3 -1
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/__init__.py +1 -1
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/_version.py +3 -3
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/image_reader.py +13 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/__init__.py +1 -0
- monai_weekly-1.7.dev2629/monai/losses/boundary_loss.py +233 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/__init__.py +7 -0
- monai_weekly-1.7.dev2629/monai/networks/blocks/hyena.py +555 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/warp.py +7 -3
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/__init__.py +1 -0
- monai_weekly-1.7.dev2629/monai/networks/nets/hyena_nd_unetr.py +151 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/swin_unetr.py +223 -55
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/intensity/array.py +2 -5
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629/monai_weekly.egg-info}/PKG-INFO +3 -1
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai_weekly.egg-info/SOURCES.txt +3 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai_weekly.egg-info/requires.txt +3 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/setup.cfg +2 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/LICENSE +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/MANIFEST.in +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/README.md +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/_extensions/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/_extensions/gmm/gmm.cpp +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/_extensions/gmm/gmm.h +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/_extensions/gmm/gmm_cpu.cpp +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/_extensions/gmm/gmm_cuda.cu +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/_extensions/gmm/gmm_cuda_linalg.cuh +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/_extensions/loader.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/auto3dseg/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/auto3dseg/__main__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/auto3dseg/auto_runner.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/auto3dseg/bundle_gen.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/auto3dseg/data_analyzer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/auto3dseg/ensemble_builder.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/auto3dseg/hpo_gen.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/auto3dseg/transforms.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/auto3dseg/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/datasets.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/deepedit/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/deepedit/interaction.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/deepedit/transforms.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/deepgrow/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/deepgrow/dataset.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/deepgrow/interaction.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/deepgrow/transforms.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/metrics/coco.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/metrics/matching.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/networks/retinanet_detector.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/networks/retinanet_network.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/transforms/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/transforms/box_ops.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/transforms/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/utils/ATSS_matcher.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/utils/anchor_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/utils/box_coder.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/utils/box_selector.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/utils/detector_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/utils/hard_negative_sampler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/detection/utils/predict_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/generation/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/generation/maisi/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/generation/maisi/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/generation/maisi/networks/autoencoderkl_maisi.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/generation/maisi/networks/controlnet_maisi.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/mmars/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/mmars/mmars.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/mmars/model_desc.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/nnunet/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/nnunet/__main__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/nnunet/nnunet_bundle.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/nnunet/nnunetv2_runner.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/nnunet/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/nuclick/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/nuclick/transforms.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/engines/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/engines/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/handlers/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/handlers/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/inferers/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/inferers/inferer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/losses/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/losses/hovernet_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/metrics/lesion_froc.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/transforms/post/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/transforms/post/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/transforms/post/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/transforms/stain/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/transforms/stain/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/transforms/stain/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/pathology/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/complex_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/fastmri_reader.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/mri_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/networks/blocks/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/networks/blocks/varnetblock.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/networks/nets/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/networks/nets/complex_unet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/networks/nets/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/networks/nets/varnet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/transforms/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/reconstruction/transforms/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/tcia/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/tcia/label_desc.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/tcia/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/vista3d/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/vista3d/inferer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/vista3d/sampler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/apps/vista3d/transforms.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/auto3dseg/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/auto3dseg/algo_gen.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/auto3dseg/analyzer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/auto3dseg/operations.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/auto3dseg/seg_summarizer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/auto3dseg/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/bundle/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/bundle/__main__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/bundle/config_item.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/bundle/config_parser.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/bundle/properties.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/bundle/reference_resolver.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/bundle/scripts.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/bundle/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/bundle/workflows.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/config/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/config/deviceconfig.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/config/type_definitions.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/box_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/csv_saver.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/dataloader.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/dataset.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/dataset_summary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/decathlon_datalist.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/fft_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/folder_layout.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/grid_dataset.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/image_dataset.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/image_writer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/iterable_dataset.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/itk_torch_bridge.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/meta_obj.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/meta_tensor.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/samplers.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/synthetic.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/test_time_augmentation.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/thread_buffer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/torchscript_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/ultrasound_confidence_map.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/video_dataset.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/wsi_datasets.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/data/wsi_reader.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/engines/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/engines/evaluator.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/engines/trainer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/engines/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/engines/workflow.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/fl/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/fl/client/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/fl/client/client_algo.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/fl/client/monai_algo.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/fl/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/fl/utils/constants.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/fl/utils/exchange_object.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/fl/utils/filters.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/average_precision.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/calibration.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/checkpoint_loader.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/checkpoint_saver.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/classification_saver.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/clearml_handlers.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/confusion_matrix.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/decollate_batch.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/earlystop_handler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/garbage_collector.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/hausdorff_distance.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/ignite_metric.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/logfile_handler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/lr_schedule_handler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/mean_dice.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/mean_iou.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/metric_logger.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/metrics_reloaded_handler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/metrics_saver.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/mlflow_handler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/nvtx_handlers.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/panoptic_quality.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/parameter_scheduler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/postprocessing.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/probability_maps.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/regression_metrics.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/roc_auc.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/smartcache_handler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/stats_handler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/surface_distance.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/tensorboard_handlers.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/trt_handler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/handlers/validation_handler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/inferers/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/inferers/inferer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/inferers/merger.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/inferers/splitter.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/inferers/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/adversarial_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/aucm_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/barlow_twins.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/cldice.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/contrastive.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/deform.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/dice.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/ds_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/focal_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/giou_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/hausdorff_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/image_dissimilarity.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/mcc_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/multi_scale.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/nacl_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/perceptual.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/spatial_mask.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/spectral_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/ssim_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/sure_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/tversky.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/unified_focal_loss.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/losses/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/absolute_volume_difference.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/active_learning_metrics.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/average_precision.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/calibration.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/confusion_matrix.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/cumulative_average.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/embedding_collapse.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/f_beta_score.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/fid.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/froc.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/generalized_dice.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/hausdorff_distance.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/loss_metric.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/meandice.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/meaniou.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/metric.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/mmd.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/panoptic_quality.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/regression.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/rocauc.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/surface_dice.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/surface_distance.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/metrics/wrapper.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/acti_norm.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/activation.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/activation_checkpointing.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/aspp.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/attention_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/backbone_fpn_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/cablock.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/convolutions.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/crf.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/crossattention.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/denseblock.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/dints_block.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/downsample.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/dynunet_block.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/encoder.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/fcn.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/feature_pyramid_network.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/fft_utils_t.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/localnet_block.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/mednext_block.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/mlp.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/patchembedding.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/pos_embed_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/regunet_block.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/rel_pos_embedding.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/segresnet_block.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/selfattention.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/spade_norm.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/spatialattention.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/squeeze_and_excitation.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/text_embedding.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/transformerblock.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/unetr_block.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/blocks/upsample.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/conjugate_gradient.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/convutils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/drop_path.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/factories.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/filtering.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/gmm.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/simplelayers.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/spatial_transforms.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/vector_quantizer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/layers/weight_init.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/ahnet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/attentionunet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/autoencoder.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/autoencoderkl.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/basic_unet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/basic_unetplusplus.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/cell_sam_wrapper.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/classifier.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/controlnet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/daf3d.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/densenet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/diffusion_model_unet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/dints.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/dynunet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/efficientnet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/flexible_unet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/fullyconnectednet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/generator.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/highresnet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/hovernet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/masked_autoencoder_vit.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/mednext.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/milmodel.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/netadapter.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/patchgan_discriminator.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/quicknat.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/regressor.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/regunet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/resnet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/restormer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/segresnet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/segresnet_ds.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/senet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/spade_autoencoderkl.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/spade_diffusion_model_unet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/spade_network.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/torchvision_fc.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/transchex.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/transformer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/unet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/unetr.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/varautoencoder.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/vista3d.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/vit.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/vitautoenc.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/vnet.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/voxelmorph.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/nets/vqvae.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/schedulers/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/schedulers/ddim.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/schedulers/ddpm.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/schedulers/pndm.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/schedulers/rectified_flow.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/schedulers/scheduler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/trt_compiler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/networks/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/optimizers/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/optimizers/lr_finder.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/optimizers/lr_scheduler.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/optimizers/novograd.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/optimizers/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/py.typed +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/adaptors.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/compose.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/croppad/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/croppad/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/croppad/batch.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/croppad/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/croppad/functional.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/intensity/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/intensity/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/inverse.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/inverse_batch_transform.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/io/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/io/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/io/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/lazy/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/lazy/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/lazy/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/lazy/functional.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/lazy/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/meta_utility/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/meta_utility/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/nvtx.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/post/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/post/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/post/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/regularization/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/regularization/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/regularization/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/signal/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/signal/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/signal/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/smooth_field/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/smooth_field/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/smooth_field/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/spatial/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/spatial/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/spatial/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/spatial/functional.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/traits.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/transform.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/utility/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/utility/array.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/utility/dictionary.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/utils_create_transform_ims.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/utils_morphological_ops.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/transforms/utils_pytorch_numpy_unification.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/component_store.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/decorators.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/deprecate_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/dist.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/enums.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/jupyter_utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/misc.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/module.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/nvtx.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/ordering.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/profiling.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/state_cacher.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/tf32.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/utils/type_conversion.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/visualize/__init__.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/visualize/class_activation_maps.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/visualize/gradient_based.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/visualize/img2tensorboard.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/visualize/occlusion_sensitivity.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/visualize/utils.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai/visualize/visualizer.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai_weekly.egg-info/dependency_links.txt +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai_weekly.egg-info/not-zip-safe +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/monai_weekly.egg-info/top_level.txt +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/pyproject.toml +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/setup.py +0 -0
- {monai_weekly-1.7.dev2627 → monai_weekly-1.7.dev2629}/versioneer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: monai-weekly
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.dev2629
|
|
4
4
|
Summary: AI Toolkit for Healthcare Imaging
|
|
5
5
|
Home-page: https://project-monai.github.io/
|
|
6
6
|
Author: MONAI Consortium
|
|
@@ -117,6 +117,8 @@ Provides-Extra: pandas
|
|
|
117
117
|
Requires-Dist: pandas; extra == "pandas"
|
|
118
118
|
Provides-Extra: einops
|
|
119
119
|
Requires-Dist: einops; extra == "einops"
|
|
120
|
+
Provides-Extra: hyena
|
|
121
|
+
Requires-Dist: nvsubquadratic>=0.1.1; extra == "hyena"
|
|
120
122
|
Provides-Extra: transformers
|
|
121
123
|
Requires-Dist: transformers<4.41.0,>=4.36.0; python_version <= "3.10" and extra == "transformers"
|
|
122
124
|
Provides-Extra: mlflow
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-07-
|
|
11
|
+
"date": "2026-07-19T03:05:24+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.7.
|
|
14
|
+
"full-revisionid": "52cab21b1eb940ad0c4ea70165f09ec6e7cbaebb",
|
|
15
|
+
"version": "1.7.dev2629"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -735,9 +735,22 @@ class PydicomReader(ImageReader):
|
|
|
735
735
|
metadata: metadata with dict type.
|
|
736
736
|
lps_to_ras: whether to convert the affine matrix from "LPS" to "RAS". Defaults to True.
|
|
737
737
|
|
|
738
|
+
Warns:
|
|
739
|
+
UserWarning: when ImageOrientationPatient (00200037) or ImagePositionPatient
|
|
740
|
+
(00200032) is missing from metadata. The affine matrix is set to identity,
|
|
741
|
+
which may be incorrect. Common with multiframe DICOM files.
|
|
742
|
+
|
|
738
743
|
"""
|
|
739
744
|
affine: np.ndarray = np.eye(4)
|
|
740
745
|
if not ("00200037" in metadata and "00200032" in metadata):
|
|
746
|
+
warnings.warn(
|
|
747
|
+
"PydicomReader: ImageOrientationPatient (0020,0037) and/or "
|
|
748
|
+
"ImagePositionPatient (0020,0032) tags are missing, so the affine "
|
|
749
|
+
"matrix cannot be derived and defaults to the identity. The image "
|
|
750
|
+
"orientation and spacing may be incorrect (e.g. for multi-frame "
|
|
751
|
+
"Enhanced DICOM); consider using ITKReader for such files.",
|
|
752
|
+
stacklevel=2,
|
|
753
|
+
)
|
|
741
754
|
return affine
|
|
742
755
|
# "00200037" is the tag of `ImageOrientationPatient`
|
|
743
756
|
rx, ry, rz, cx, cy, cz = metadata["00200037"]["Value"]
|
|
@@ -14,6 +14,7 @@ from __future__ import annotations
|
|
|
14
14
|
from .adversarial_loss import PatchAdversarialLoss
|
|
15
15
|
from .aucm_loss import AUCMLoss
|
|
16
16
|
from .barlow_twins import BarlowTwinsLoss
|
|
17
|
+
from .boundary_loss import BoundaryLoss
|
|
17
18
|
from .cldice import SoftclDiceLoss, SoftDiceclDiceLoss
|
|
18
19
|
from .contrastive import ContrastiveLoss
|
|
19
20
|
from .deform import BendingEnergyLoss, DiffusionLoss
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# Copyright (c) MONAI Consortium
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
import warnings
|
|
15
|
+
from collections.abc import Callable
|
|
16
|
+
|
|
17
|
+
import torch
|
|
18
|
+
from torch.nn.modules.loss import _Loss
|
|
19
|
+
|
|
20
|
+
from monai.networks import one_hot
|
|
21
|
+
from monai.transforms.utils import distance_transform_edt
|
|
22
|
+
from monai.utils import LossReduction
|
|
23
|
+
|
|
24
|
+
__all__ = ["BoundaryLoss"]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class BoundaryLoss(_Loss):
|
|
28
|
+
"""
|
|
29
|
+
Compute the boundary loss for highly unbalanced segmentation.
|
|
30
|
+
|
|
31
|
+
The boundary loss is a distance-based loss that operates on the interface between segmentation
|
|
32
|
+
regions rather than on the regions themselves. This makes it particularly effective for
|
|
33
|
+
highly imbalanced segmentation tasks (e.g., small lesions, thin structures), where standard
|
|
34
|
+
Dice or Cross-Entropy losses struggle due to foreground-background imbalance.
|
|
35
|
+
|
|
36
|
+
The loss is formulated as a pixel-wise weighted sum of predicted probabilities and a
|
|
37
|
+
signed distance map derived from the ground truth. The signed distance map is negative
|
|
38
|
+
inside the foreground region and positive outside, with zero on the boundary.
|
|
39
|
+
|
|
40
|
+
The data `input` (BNHW[D] where N is number of classes) is compared with ground truth `target`
|
|
41
|
+
(BNHW[D]).
|
|
42
|
+
Note that axis N of `input` is expected to be logits or probabilities for each class, if passing logits as input,
|
|
43
|
+
must set `sigmoid=True` or `softmax=True`, or specifying `other_act`. And the same axis of `target`
|
|
44
|
+
can be 1 or N (one-hot format).
|
|
45
|
+
|
|
46
|
+
The original paper:
|
|
47
|
+
Kervadec, H. et al. (2019) Boundary loss for highly unbalanced segmentation. MIDL 2019.
|
|
48
|
+
https://arxiv.org/abs/1812.07032
|
|
49
|
+
|
|
50
|
+
Example:
|
|
51
|
+
>>> import torch
|
|
52
|
+
>>> from monai.losses import BoundaryLoss
|
|
53
|
+
>>> B, C, H, W = 2, 3, 5, 5
|
|
54
|
+
>>> input = torch.rand(B, C, H, W)
|
|
55
|
+
>>> target = torch.randint(0, C, size=(B, H, W))
|
|
56
|
+
>>> bl = BoundaryLoss(softmax=True, to_onehot_y=True)
|
|
57
|
+
>>> loss = bl(input, target)
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
def __init__(
|
|
61
|
+
self,
|
|
62
|
+
include_background: bool = True,
|
|
63
|
+
to_onehot_y: bool = False,
|
|
64
|
+
sigmoid: bool = False,
|
|
65
|
+
softmax: bool = False,
|
|
66
|
+
other_act: Callable | None = None,
|
|
67
|
+
reduction: LossReduction | str = LossReduction.MEAN,
|
|
68
|
+
batch: bool = False,
|
|
69
|
+
) -> None:
|
|
70
|
+
"""
|
|
71
|
+
Args:
|
|
72
|
+
include_background: if False, channel index 0 (background category) is excluded from the calculation.
|
|
73
|
+
if the non-background segmentations are small compared to the total image size they can get overwhelmed
|
|
74
|
+
by the signal from the background so excluding it in such cases helps convergence.
|
|
75
|
+
to_onehot_y: whether to convert the ``target`` into the one-hot format,
|
|
76
|
+
using the number of classes inferred from `input` (``input.shape[1]``). Defaults to False.
|
|
77
|
+
sigmoid: if True, apply a sigmoid function to the prediction.
|
|
78
|
+
softmax: if True, apply a softmax function to the prediction.
|
|
79
|
+
other_act: callable function to execute other activation layers, Defaults to ``None``. for example:
|
|
80
|
+
``other_act = torch.tanh``.
|
|
81
|
+
reduction: {``"none"``, ``"mean"``, ``"sum"``}
|
|
82
|
+
Specifies the reduction to apply to the output. Defaults to ``"mean"``.
|
|
83
|
+
|
|
84
|
+
- ``"none"``: no reduction will be applied.
|
|
85
|
+
- ``"mean"``: the sum of the output will be divided by the number of elements in the output.
|
|
86
|
+
- ``"sum"``: the output will be summed.
|
|
87
|
+
batch: whether to compute the distance map and loss over the batch dimension before the dividing.
|
|
88
|
+
Defaults to False, a boundary loss value is computed independently from each item in the batch
|
|
89
|
+
before any `reduction`.
|
|
90
|
+
|
|
91
|
+
Raises:
|
|
92
|
+
TypeError: When ``other_act`` is not an ``Optional[Callable]``.
|
|
93
|
+
ValueError: When more than 1 of [``sigmoid=True``, ``softmax=True``, ``other_act is not None``].
|
|
94
|
+
Incompatible values.
|
|
95
|
+
"""
|
|
96
|
+
super().__init__(reduction=LossReduction(reduction).value)
|
|
97
|
+
if other_act is not None and not callable(other_act):
|
|
98
|
+
raise TypeError(f"other_act must be None or callable but is {type(other_act).__name__}.")
|
|
99
|
+
if int(sigmoid) + int(softmax) + int(other_act is not None) > 1:
|
|
100
|
+
raise ValueError("Incompatible values: more than 1 of [sigmoid=True, softmax=True, other_act is not None].")
|
|
101
|
+
|
|
102
|
+
self.include_background = include_background
|
|
103
|
+
self.to_onehot_y = to_onehot_y
|
|
104
|
+
self.sigmoid = sigmoid
|
|
105
|
+
self.softmax = softmax
|
|
106
|
+
self.other_act = other_act
|
|
107
|
+
self.batch = batch
|
|
108
|
+
|
|
109
|
+
@torch.no_grad()
|
|
110
|
+
def compute_distance_map(self, target: torch.Tensor) -> torch.Tensor:
|
|
111
|
+
"""
|
|
112
|
+
Compute the signed distance map for each class in the target.
|
|
113
|
+
|
|
114
|
+
The signed distance map is negative inside the foreground region and positive outside,
|
|
115
|
+
with zero on the boundary.
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
target: target tensor of shape BNHW[D], with values in {0, 1} (one-hot encoded).
|
|
119
|
+
|
|
120
|
+
Returns:
|
|
121
|
+
Signed distance map of the same shape as target.
|
|
122
|
+
"""
|
|
123
|
+
if target.dim() not in (4, 5):
|
|
124
|
+
raise ValueError("Only 2D (BNHW) and 3D (BNHWD) supported")
|
|
125
|
+
|
|
126
|
+
distance_map = torch.zeros_like(target, dtype=torch.float32)
|
|
127
|
+
|
|
128
|
+
for batch_idx in range(target.shape[0]):
|
|
129
|
+
for channel_idx in range(target.shape[1]):
|
|
130
|
+
mask = target[batch_idx, channel_idx : channel_idx + 1] > 0.5
|
|
131
|
+
|
|
132
|
+
# Empty or full masks do not have a foreground/background interface.
|
|
133
|
+
if not mask.any() or mask.all():
|
|
134
|
+
continue
|
|
135
|
+
|
|
136
|
+
fg_dist: torch.Tensor = distance_transform_edt(mask) # type: ignore
|
|
137
|
+
bg_dist: torch.Tensor = distance_transform_edt(~mask) # type: ignore
|
|
138
|
+
|
|
139
|
+
signed = torch.zeros_like(mask, dtype=torch.float32)
|
|
140
|
+
signed[mask] = -(fg_dist[mask].to(torch.float32) - 1)
|
|
141
|
+
signed[~mask] = bg_dist[~mask].to(torch.float32)
|
|
142
|
+
|
|
143
|
+
distance_map[batch_idx, channel_idx] = signed[0]
|
|
144
|
+
|
|
145
|
+
return distance_map
|
|
146
|
+
|
|
147
|
+
def forward(self, input: torch.Tensor, target: torch.Tensor) -> torch.Tensor:
|
|
148
|
+
"""
|
|
149
|
+
Args:
|
|
150
|
+
input: the shape should be BNHW[D], where N is the number of classes.
|
|
151
|
+
target: the shape should be BNHW[D] or B1HW[D], where N is the number of classes.
|
|
152
|
+
|
|
153
|
+
Raises:
|
|
154
|
+
ValueError: If the input is not 2D (BNHW) or 3D (BNHWD).
|
|
155
|
+
AssertionError: When input and target (after one hot transform if set)
|
|
156
|
+
have different shapes.
|
|
157
|
+
ValueError: When ``self.reduction`` is not one of ["mean", "sum", "none"].
|
|
158
|
+
|
|
159
|
+
Example:
|
|
160
|
+
>>> import torch
|
|
161
|
+
>>> from monai.losses import BoundaryLoss
|
|
162
|
+
>>> B, C, H, W = 2, 3, 5, 5
|
|
163
|
+
>>> input = torch.rand(B, C, H, W)
|
|
164
|
+
>>> target_idx = torch.randint(0, C, size=(B, H, W)).long()
|
|
165
|
+
>>> target = one_hot(target_idx[:, None, ...], num_classes=C)
|
|
166
|
+
>>> bl = BoundaryLoss(softmax=True)
|
|
167
|
+
>>> loss = bl(input, target)
|
|
168
|
+
"""
|
|
169
|
+
if input.dim() not in (4, 5):
|
|
170
|
+
raise ValueError("Only 2D (BNHW) and 3D (BNHWD) supported")
|
|
171
|
+
|
|
172
|
+
n_pred_ch = input.shape[1]
|
|
173
|
+
|
|
174
|
+
# Apply activation to input
|
|
175
|
+
if self.sigmoid:
|
|
176
|
+
input = torch.sigmoid(input)
|
|
177
|
+
|
|
178
|
+
if self.softmax:
|
|
179
|
+
if n_pred_ch == 1:
|
|
180
|
+
warnings.warn("single channel prediction, `softmax=True` ignored.", stacklevel=2)
|
|
181
|
+
else:
|
|
182
|
+
input = torch.softmax(input, dim=1)
|
|
183
|
+
|
|
184
|
+
if self.other_act is not None:
|
|
185
|
+
input = self.other_act(input)
|
|
186
|
+
|
|
187
|
+
# Convert target to one-hot if needed
|
|
188
|
+
if self.to_onehot_y:
|
|
189
|
+
if n_pred_ch == 1:
|
|
190
|
+
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.", stacklevel=2)
|
|
191
|
+
else:
|
|
192
|
+
if target.dim() == input.dim() - 1:
|
|
193
|
+
target = target.unsqueeze(dim=1)
|
|
194
|
+
target = one_hot(target, num_classes=n_pred_ch)
|
|
195
|
+
|
|
196
|
+
# Validate shapes match
|
|
197
|
+
if input.shape != target.shape:
|
|
198
|
+
raise AssertionError(f"input and target shapes do not match: {input.shape} vs {target.shape}")
|
|
199
|
+
|
|
200
|
+
# Exclude background if requested
|
|
201
|
+
if not self.include_background:
|
|
202
|
+
if n_pred_ch == 1:
|
|
203
|
+
warnings.warn("single channel prediction, `include_background=False` ignored.", stacklevel=2)
|
|
204
|
+
else:
|
|
205
|
+
input = input[:, 1:]
|
|
206
|
+
target = target[:, 1:]
|
|
207
|
+
|
|
208
|
+
# Compute signed distance maps from target
|
|
209
|
+
distance_map = self.compute_distance_map(target)
|
|
210
|
+
|
|
211
|
+
# Compute boundary loss: sum over spatial dimensions of (probabilities * distance_map)
|
|
212
|
+
# Then average over classes and batch
|
|
213
|
+
spatial_axes = list(range(2, input.dim()))
|
|
214
|
+
|
|
215
|
+
loss = torch.sum(input * distance_map, dim=spatial_axes)
|
|
216
|
+
|
|
217
|
+
# Normalize by number of pixels per class per batch element
|
|
218
|
+
num_pixels = torch.prod(torch.as_tensor(input.shape[2:], device=input.device))
|
|
219
|
+
loss = loss / num_pixels
|
|
220
|
+
if self.batch:
|
|
221
|
+
loss = loss.mean(dim=0)
|
|
222
|
+
|
|
223
|
+
if self.reduction == LossReduction.MEAN.value:
|
|
224
|
+
loss = loss.mean()
|
|
225
|
+
elif self.reduction == LossReduction.SUM.value:
|
|
226
|
+
loss = loss.sum()
|
|
227
|
+
elif self.reduction == LossReduction.NONE.value:
|
|
228
|
+
# Return shape (B, C') unless batch=True reduces the batch dimension first.
|
|
229
|
+
pass
|
|
230
|
+
else:
|
|
231
|
+
raise ValueError(f"Unsupported reduction: {self.reduction}")
|
|
232
|
+
|
|
233
|
+
return loss
|
|
@@ -26,6 +26,13 @@ from .dynunet_block import UnetBasicBlock, UnetOutBlock, UnetResBlock, UnetUpBlo
|
|
|
26
26
|
from .encoder import BaseEncoder
|
|
27
27
|
from .fcn import FCN, GCN, MCFCN, Refine
|
|
28
28
|
from .feature_pyramid_network import ExtraFPNBlock, FeaturePyramidNetwork, LastLevelMaxPool, LastLevelP6P7
|
|
29
|
+
from .hyena import (
|
|
30
|
+
DepthwiseFFTConv2d,
|
|
31
|
+
DepthwiseFFTConv3d,
|
|
32
|
+
HyenaMixer,
|
|
33
|
+
HyenaTransformerBlock,
|
|
34
|
+
is_nvsubquadratic_available,
|
|
35
|
+
)
|
|
29
36
|
from .localnet_block import LocalNetDownSampleBlock, LocalNetFeatureExtractorBlock, LocalNetUpSampleBlock
|
|
30
37
|
from .mednext_block import MedNeXtBlock, MedNeXtDownBlock, MedNeXtOutBlock, MedNeXtUpBlock
|
|
31
38
|
from .mlp import MLPBlock
|