All notable changes to MONAI are documented in this file.
The format is based on Keep a Changelog.
0.9.1 - 2022-07-22
- 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
- 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 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
*_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 - 2022-06-08
monai.bundle
primary module with aConfigParser
and command-line interfaces for configuration-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
- 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
- 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
- Deprecated
nifti_writer
,png_writer
in favor ofmonai.data.image_writer
- Support for PyTorch 1.6
0.8.1 - 2022-02-16
- Support of
matshow3d
with givenchannel_dim
- Support of spatial 2D for
ViTAutoEnc
- Support of
dataframe
object input inCSVDataset
- Support of tensor backend for
Orientation
- Support of configurable delimiter for CSV writers
- A base workflow API
DataFunc
API for dataset-level preprocessingwrite_scalar
API for logging with additionalengine
parameter inTensorBoardHandler
- Enhancements for NVTX Range transform logging
- Enhancements for
set_determinism
- Performance enhancements in the cache-based datasets
- Configurable metadata keys for
monai.data.DatasetSummary
- Flexible
kwargs
forWSIReader
- Logging for the learning rate schedule handler
GridPatchDataset
as subclass ofmonai.data.IterableDataset
is_onehot
option inKeepLargestConnectedComponent
channel_dim
in the image readers and support of stacking images with channels- Skipping workflow
run
if epoch length is 0 - Enhanced
CacheDataset
to avoid duplicated cache items save_state
utility function
- Optionally depend on PyTorch-Ignite v0.4.8 instead of v0.4.6
monai.apps.mmars.load_from_mmar
defaults to the latest version
- Issue when caching large items with
pickle
- Issue of hard-coded activation functions in
ResBlock
- Issue of
create_file_name
assuming local disk file creation - Issue of
WSIReader
when the backend isTiffFile
- Issue of
deprecated_args
when the function signature contains kwargs - Issue of
channel_wise
computations for the intensity-based transforms - Issue of inverting
OneOf
- Issue of removing temporary caching file for the persistent dataset
- Error messages when reader backend is not available
- Output type casting issue in
ScaleIntensityRangePercentiles
- Various docstring typos and broken URLs
mode
in the evaluator engine- Ordering of
Orientation
andSpacing
inmonai.apps.deepgrow.dataset
- Additional deep supervision modules in
DynUnet
- Deprecated
reduction
argument forContrastiveLoss
- Decollate warning in
Workflow
- Unique label exception in
ROCAUCMetric
- Logger configuration logic in the event handlers
0.8.0 - 2021-11-25
- Overview of new features in v0.8
- Network modules for differentiable neural network topology search (DiNTS)
- Multiple Instance Learning transforms and models for digital pathology WSI analysis
- Vision transformers for self-supervised representation learning
- Contrastive loss for self-supervised learning
- Finalized major improvements of 200+ components in
monai.transforms
to support input and backend in PyTorch and NumPy - Initial registration module benchmarking with
GlobalMutualInformationLoss
as an example monai.transforms
documentation with visual examples and the utility functions- Event handler for
MLfLow
integration - Enhanced data visualization functions including
blend_images
andmatshow3d
RandGridDistortion
andSmoothField
inmonai.transforms
- Support of randomized shuffle buffer in iterable datasets
- Performance review and enhancements for data type casting
- Cumulative averaging API with distributed environment support
- Module utility functions including
require_pkg
andpytorch_after
- Various usability enhancements such as
allow_smaller
when sampling ROI andwrap_sequence
when casting object types tifffile
support inWSIReader
- Regression tests for the fast training workflows
- Various tutorials and demos including educational contents at MONAI Bootcamp 2021
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:21.10-py3
fromnvcr.io/nvidia/pytorch:21.08-py3
- Decoupled
TraceKeys
andTraceableTransform
APIs fromInvertibleTransform
- Skipping affine-based resampling when
resample=False
inNiftiSaver
- Deprecated
threshold_values: bool
andnum_classes: int
inAsDiscrete
- Enhanced
apply_filter
for spatially 1D, 2D and 3D inputs with non-separable kernels - Logging with
logging
in downloading and model archives inmonai.apps
- API documentation site now defaults to
stable
instead oflatest
skip-magic-trailing-comma
in coding style enforcements- Pre-merge CI pipelines now include unit tests with Nvidia Ampere architecture
- Support for PyTorch 1.5
- The deprecated
DynUnetV1
and the related network blocks - GitHub self-hosted CI/CD pipelines for package releases
- Support of path-like objects as file path inputs in most modules
- Issue of
decollate_batch
for dictionary of empty lists - Typos in documentation and code examples in various modules
- Issue of no available keys when
allow_missing_keys=True
for theMapTransform
- Issue of redundant computation when normalization factors are 0.0 and 1.0 in
ScaleIntensity
- Incorrect reports of registered readers in
ImageReader
- Wrong numbering of iterations in
StatsHandler
- Naming conflicts in network modules and aliases
- Incorrect output shape when
reduction="none"
inFocalLoss
- Various usability issues reported by users
0.7.0 - 2021-09-24
- Overview of new features in v0.7
- Initial phase of major usability improvements in
monai.transforms
to support input and backend in PyTorch and NumPy - Performance enhancements, with profiling and tuning guides for typical use cases
- Reproducing training modules and workflows of state-of-the-art Kaggle competition solutions
- 24 new transforms, including
OneOf
meta transform- DeepEdit guidance signal transforms for interactive segmentation
- Transforms for self-supervised pre-training
- Integration of NVIDIA Tools Extension (NVTX)
- Integration of cuCIM
- Stain normalization and contextual grid for digital pathology
Transchex
network for vision-language transformers for chest X-ray analysisDatasetSummary
utility inmonai.data
WarmupCosineSchedule
- Deprecation warnings and documentation support for better backwards compatibility
- Padding with additional
kwargs
and different backend API - Additional options such as
dropout
andnorm
in various networks and their submodules
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:21.08-py3
fromnvcr.io/nvidia/pytorch:21.06-py3
- Deprecated input argument
n_classes
, in favor ofnum_classes
- Deprecated input argument
dimensions
andndims
, in favor ofspatial_dims
- Updated the Sphinx-based documentation theme for better readability
NdarrayTensor
type is replaced byNdarrayOrTensor
for simpler annotations- Self-attention-based network blocks now support both 2D and 3D inputs
- The deprecated
TransformInverter
, in favor ofmonai.transforms.InvertD
- GitHub self-hosted CI/CD pipelines for nightly and post-merge tests
monai.handlers.utils.evenly_divisible_all_gather
monai.handlers.utils.string_list_all_gather
- A Multi-thread cache writing issue in
LMDBDataset
- Output shape convention inconsistencies of the image readers
- Output directory and file name flexibility issue for
NiftiSaver
,PNGSaver
- Requirement of the
label
field in test-time augmentation - Input argument flexibility issues for
ThreadDataLoader
- Decoupled
Dice
andCrossEntropy
intermediate results inDiceCELoss
- Improved documentation, code examples, and warning messages in various modules
- Various usability issues reported by users
0.6.0 - 2021-07-08
- 10 new transforms, a masked loss wrapper, and a
NetAdapter
for transfer learning - APIs to load networks and pre-trained weights from Clara Train Medical Model ARchives (MMARs)
- Base metric and cumulative metric APIs, 4 new regression metrics
- Initial CSV dataset support
- Decollating mini-batch as the default first postprocessing step, Migrating your v0.5 code to v0.6 wiki shows how to adapt to the breaking changes
- Initial backward compatibility support via
monai.utils.deprecated
- Attention-based vision modules and
UNETR
for segmentation - Generic module loaders and Gaussian mixture models using the PyTorch JIT compilation
- Inverse of image patch sampling transforms
- Network block utilities
get_[norm, act, dropout, pool]_layer
unpack_items
mode forapply_transform
andCompose
- New event
INNER_ITERATION_STARTED
in the deepgrow interactive workflow set_data
API for cache-based datasets to dynamically update the dataset content- Fully compatible with PyTorch 1.9
--disttests
and--min
options forruntests.sh
- Initial support of pre-merge tests with Nvidia Blossom system
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:21.06-py3
fromnvcr.io/nvidia/pytorch:21.04-py3
- Optionally depend on PyTorch-Ignite v0.4.5 instead of v0.4.4
- Unified the demo, tutorial, testing data to the project shared drive, and
Project-MONAI/MONAI-extra-test-data
- Unified the terms:
post_transform
is renamed topostprocessing
,pre_transform
is renamed topreprocessing
- Unified the postprocessing transforms and event handlers to accept the "channel-first" data format
evenly_divisible_all_gather
andstring_list_all_gather
moved tomonai.utils.dist
- Support of 'batched' input for postprocessing transforms and event handlers
TorchVisionFullyConvModel
set_visible_devices
utility functionSegmentationSaver
andTransformsInverter
handlers
- Issue of handling big-endian image headers
- Multi-thread issue for non-random transforms in the cache-based datasets
- Persistent dataset issue when multiple processes sharing a non-exist cache location
- Typing issue with Numpy 1.21.0
- Loading checkpoint with both
model
andoptmizier
usingCheckpointLoader
whenstrict_shape=False
SplitChannel
has different behaviour depending on numpy/torch inputs- Transform pickling issue caused by the Lambda functions
- Issue of filtering by name in
generate_param_groups
- Inconsistencies in the return value types of
class_activation_maps
- Various docstring typos
- Various usability enhancements in
monai.transforms
0.5.3 - 2021-05-28
- Project default branch renamed to
dev
frommaster
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:21.04-py3
fromnvcr.io/nvidia/pytorch:21.02-py3
- Enhanced type checks for the
iteration_metric
handler - Enhanced
PersistentDataset
to usetempfile
during caching computation - Enhanced various info/error messages
- Enhanced performance of
RandAffine
- Enhanced performance of
SmartCacheDataset
- Optionally requires
cucim
when the platform isLinux
- Default
device
ofTestTimeAugmentation
changed tocpu
- Download utilities now provide better default parameters
- Duplicated
key_transforms
in the patch-based transforms - A multi-GPU issue in
ClassificationSaver
- A default
meta_data
issue inSpacingD
- Dataset caching issue with the persistent data loader workers
- A memory issue in
permutohedral_cuda
- Dictionary key issue in
CopyItemsd
box_start
andbox_end
parameters for deepgrowSpatialCropForegroundd
- Tissue mask array transpose issue in
MaskedInferenceWSIDataset
- Various type hint errors
- Various docstring typos
- Support of
to_tensor
anddevice
arguments forTransformInverter
- Slicing options with SpatialCrop
- Class name alias for the networks for backward compatibility
k_divisible
option for CropForegroundmap_items
option forCompose
- Warnings of
inf
andnan
for surface distance computation - A
print_log
flag to the image savers - Basic testing pipelines for Python 3.9
0.5.0 - 2021-04-09
- Overview document for feature highlights in v0.5.0
- Invertible spatial transforms
InvertibleTransform
base APIs- Batch inverse and decollating APIs
- Inverse of
Compose
- Batch inverse event handling
- Test-time augmentation as an application
- Initial support of learning-based image registration:
- Bending energy, LNCC, and global mutual information loss
- Fully convolutional architectures
- Dense displacement field, dense velocity field computation
- Warping with high-order interpolation with C++/CUDA implementations
- Deepgrow modules for interactive segmentation:
- Workflows with simulations of clicks
- Distance-based transforms for guidance signals
- Digital pathology support:
- Efficient whole slide imaging IO and sampling with Nvidia cuCIM and SmartCache
- FROC measurements for lesion
- Probabilistic post-processing for lesion detection
- TorchVision classification model adaptor for fully convolutional analysis
- 12 new transforms, grid patch dataset,
ThreadDataLoader
, EfficientNets B0-B7 - 4 iteration events for the engine for finer control of workflows
- New C++/CUDA extensions:
- Conditional random field
- Fast bilateral filtering using the permutohedral lattice
- Metrics summary reporting and saving APIs
- DiceCELoss, DiceFocalLoss, a multi-scale wrapper for segmentation loss computation
- Data loading utilities:
decollate_batch
PadListDataCollate
with inverse support
- Support of slicing syntax for
Dataset
- Initial Torchscript support for the loss modules
- Learning rate finder
- Allow for missing keys in the dictionary-based transforms
- Support of checkpoint loading for transfer learning
- Various summary and plotting utilities for Jupyter notebooks
- Contributor Covenant Code of Conduct
- Major CI/CD enhancements covering the tutorial repository
- Fully compatible with PyTorch 1.8
- Initial nightly CI/CD pipelines using Nvidia Blossom Infrastructure
- Enhanced
list_data_collate
error handling - Unified iteration metric APIs
densenet*
extensions are renamed toDenseNet*
se_res*
network extensions are renamed toSERes*
- Transform base APIs are rearranged into
compose
,inverse
, andtransform
_do_transform
flag for the random augmentations is unified viaRandomizableTransform
- Decoupled post-processing steps, e.g.
softmax
,to_onehot_y
, from the metrics computations - Moved the distributed samplers to
monai.data.samplers
frommonai.data.utils
- Engine's data loaders now accept generic iterables as input
- Workflows now accept additional custom events and state properties
- Various type hints according to Numpy 1.20
- Refactored testing utility
runtests.sh
to have--unittest
and--net
(integration tests) options - Base Docker image upgraded to
nvcr.io/nvidia/pytorch:21.02-py3
fromnvcr.io/nvidia/pytorch:20.10-py3
- Docker images are now built with self-hosted environments
- Primary contact email updated to
[email protected]
- Now using GitHub Discussions as the primary communication forum
- Compatibility tests for PyTorch 1.5.x
- Format specific loaders, e.g.
LoadNifti
,NiftiDataset
- Assert statements from non-test files
from module import *
statements, addressed flake8 F403
- Uses American English spelling for code, as per PyTorch
- Code coverage now takes multiprocessing runs into account
- SmartCache with initial shuffling
ConvertToMultiChannelBasedOnBratsClasses
now supports channel-first inputs- Checkpoint handler to save with non-root permissions
- Fixed an issue for exiting the distributed unit tests
- Unified
DynUNet
to have single tensor output w/o deep supervision SegmentationSaver
now supports user-specified data types and asqueeze_end_dims
flag- Fixed
*Saver
event handlers output filenames with adata_root_dir
option - Load image functions now ensure little-endian
- Fixed the test runner to support regex-based test case matching
- Usability issues in the event handlers
0.4.0 - 2020-12-15
- Overview document for feature highlights in v0.4.0
- Torchscript support for the net modules
- New networks and layers:
- Discrete Gaussian kernels
- Hilbert transform and envelope detection
- Swish and mish activation
- Acti-norm-dropout block
- Upsampling layer
- Autoencoder, Variational autoencoder
- FCNet
- Support of initialisation from pretrained weights for densenet, senet, multichannel AHNet
- Layer-wise learning rate API
- New model metrics and event handlers based on occlusion sensitivity, confusion matrix, surface distance
- CAM/GradCAM/GradCAM++
- File format-agnostic image loader APIs with Nibabel, ITK readers
- Enhancements for dataset partition, cross-validation APIs
- New data APIs:
- LMDB-based caching dataset
- Cache-N-transforms dataset
- Iterable dataset
- Patch dataset
- Weekly PyPI release
- Fully compatible with PyTorch 1.7
- CI/CD enhancements:
- Skipping, speed up, fail fast, timed, quick tests
- Distributed training tests
- Performance profiling utilities
- New tutorials and demos:
- Autoencoder, VAE tutorial
- Cross-validation demo
- Model interpretability tutorial
- COVID-19 Lung CT segmentation challenge open-source baseline
- Threadbuffer demo
- Dataset partitioning tutorial
- Layer-wise learning rate demo
- MONAI Bootcamp 2020
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:20.10-py3
fromnvcr.io/nvidia/pytorch:20.08-py3
monai.apps.CVDecathlonDataset
is extended to a genericmonai.apps.CrossValidation
with andataset_cls
option- Cache dataset now requires a
monai.transforms.Compose
instance as the transform argument - Model checkpoint file name extensions changed from
.pth
to.pt
- Readers'
get_spatial_shape
returns a numpy array instead of list - Decoupled postprocessing steps such as
sigmoid
,to_onehot_y
,mutually_exclusive
,logit_thresh
from metrics and event handlers, the postprocessing steps should be used before calling the metrics methods ConfusionMatrixMetric
andDiceMetric
computation now returns an additionalnot_nans
flag to indicate valid resultsUpSample
optionalmode
now supports"deconv"
,"nontrainable"
,"pixelshuffle"
;interp_mode
is only used whenmode
is"nontrainable"
SegResNet
optionalupsample_mode
now supports"deconv"
,"nontrainable"
,"pixelshuffle"
monai.transforms.Compose
class inheritsmonai.transforms.Transform
- In
Rotate
,Rotated
,RandRotate
,RandRotated
transforms, theangle
related parameters are interpreted as angles in radians instead of degrees. SplitChannel
andSplitChanneld
moved fromtransforms.post
totransforms.utility
- Support of PyTorch 1.4
- Enhanced loss functions for stability and flexibility
- Sliding window inference memory and device issues
- Revised transforms:
- Normalize intensity datatype and normalizer types
- Padding modes for zoom
- Crop returns coordinates
- Select items transform
- Weighted patch sampling
- Option to keep aspect ratio for zoom
- Various CI/CD issues
0.3.0 - 2020-10-02
- Overview document for feature highlights in v0.3.0
- Automatic mixed precision support
- Multi-node, multi-GPU data parallel model training support
- 3 new evaluation metric functions
- 11 new network layers and blocks
- 6 new network architectures
- 14 new transforms, including an I/O adaptor
- Cross validation module for
DecathlonDataset
- Smart Cache module in dataset
monai.optimizers
modulemonai.csrc
module- Experimental feature of ImageReader using ITK, Nibabel, Numpy, Pillow (PIL Fork)
- Experimental feature of differentiable image resampling in C++/CUDA
- Ensemble evaluator module
- GAN trainer module
- Initial cross-platform CI environment for C++/CUDA code
- Code style enforcement now includes isort and clang-format
- Progress bar with tqdm
- Now fully compatible with PyTorch 1.6
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:20.08-py3
fromnvcr.io/nvidia/pytorch:20.03-py3
- Code contributions now require signing off on the Developer Certificate of Origin (DCO)
- Major work in type hinting finished
- Remote datasets migrated to Open Data on AWS
- Optionally depend on PyTorch-Ignite v0.4.2 instead of v0.3.0
- Optionally depend on torchvision, ITK
- Enhanced CI tests with 8 new testing environments
MONAI/examples
folder (relocated intoProject-MONAI/tutorials
)MONAI/research
folder (relocated toProject-MONAI/research-contributions
)
dense_patch_slices
incorrect indexing- Data type issue in
GeneralizedWassersteinDiceLoss
ZipDataset
return value inconsistenciessliding_window_inference
indexing anddevice
issues- importing monai modules may cause namespace pollution
- Random data splits issue in
DecathlonDataset
- Issue of randomising a
Compose
transform - Various issues in function type hints
- Typos in docstring and documentation
PersistentDataset
issue with existing file folder- Filename issue in the output writers
0.2.0 - 2020-07-02
- Overview document for feature highlights in v0.2.0
- Type hints and static type analysis support
MONAI/research
foldermonai.engine.workflow
APIs for supervised trainingmonai.inferers
APIs for validation and inference- 7 new tutorials and examples
- 3 new loss functions
- 4 new event handlers
- 8 new layers, blocks, and networks
- 12 new transforms, including post-processing transforms
monai.apps.datasets
APIs, includingMedNISTDataset
andDecathlonDataset
- Persistent caching,
ZipDataset
, andArrayDataset
inmonai.data
- Cross-platform CI tests supporting multiple Python versions
- Optional import mechanism
- Experimental features for third-party transforms integration
For more details please visit the project wiki
- Core modules now require numpy >= 1.17
- Categorized
monai.transforms
modules into crop and pad, intensity, IO, post-processing, spatial, and utility. - Most transforms are now implemented with PyTorch native APIs
- Code style enforcement and automated formatting workflows now use autopep8 and black
- Base Docker image upgraded to
nvcr.io/nvidia/pytorch:20.03-py3
fromnvcr.io/nvidia/pytorch:19.10-py3
- Enhanced local testing tools
- Documentation website domain changed to https://docs.monai.io
- Support of Python < 3.6
- Automatic installation of optional dependencies including pytorch-ignite, nibabel, tensorboard, pillow, scipy, scikit-image
- Various issues in type and argument names consistency
- Various issues in docstring and documentation site
- Various issues in unit and integration tests
- Various issues in examples and notebooks
0.1.0 - 2020-04-17
- Public alpha source code release under the Apache 2.0 license (highlights)
- Various tutorials and examples
- Medical image classification and segmentation workflows
- Spacing/orientation-aware preprocessing with CPU/GPU and caching
- Flexible workflows with PyTorch Ignite and Lightning
- Various GitHub Actions
- CI/CD pipelines via self-hosted runners
- Documentation publishing via readthedocs.org
- PyPI package publishing
- Contributing guidelines
- A project logo and badges