You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Refactor morphological functions as transform (or transform utils) #8003
changed the title [-]Refactor morphological functions as transform *or transform utils)[/-][+]Refactor morphological functions as transform (or transform utils)[/+]on Aug 8, 2024
Should MONAI use ITK's / SimpleITK's implementations? They offer a multitude of options: binary, grayscale, open, close, generalized - and all are multi-threaded, I believe some contain logic to specifically to only perform convolution only at an object's edges to significantly speed results compared to full convolution, and other developers have created GPU/CUDA accelerated versions but they aren't in ITK by default.
We should look into what the implementation would look like, it's definitely possible to at least support using ITK implementations, though the virtue of what was added with MAISI was that it is only Pytorch. We could support using ITK if present but then default to Pytorch implementations if not.
Currently the usage of erode/dilate needs to be on GPUs, and it will be more work to do if we deviate from the torch implementation.
In my opinion, the role of itk is more like another backend on top of numpy and torch. So my gut feeling of ITK integration is that a wrapper that can bridge torch and itk/simple-itk, but I could be wrong here.
new error: ModuleNotFoundError: No module named 'monai.transforms.utils_morphological_ops' my env is
Hi @qic999 , you'll need the dev version or the weekly build. The morphological operations are added recently and they are not available in monai 1.3.2, which is the version you are using. Check this page for installation guide:
If my comment above can't resolve your issue, please open a new issue so that the team can better support you. I would like to keep this thread simply focus the implementation plan. Thank you!
Activity
mingxin-zheng commentedon Aug 8, 2024
Since this operation is used by MAISI and VISTA3D both, do you think it will help? @heyufan1995 @Can-Zhao @guopengf ?
[-]Refactor morphological functions as transform *or transform utils)[/-][+]Refactor morphological functions as transform (or transform utils)[/+]KumoLiu commentedon Aug 8, 2024
Also cc @yiheng-wang-nv @ericspod
ericspod commentedon Aug 13, 2024
We should look at what other requirements there are but I think it would make sense to have a morphological operations transform to encapsulate them.
aylward commentedon Aug 13, 2024
+1 for making them transforms.
Should MONAI use ITK's / SimpleITK's implementations? They offer a multitude of options: binary, grayscale, open, close, generalized - and all are multi-threaded, I believe some contain logic to specifically to only perform convolution only at an object's edges to significantly speed results compared to full convolution, and other developers have created GPU/CUDA accelerated versions but they aren't in ITK by default.
ericspod commentedon Aug 13, 2024
We should look into what the implementation would look like, it's definitely possible to at least support using ITK implementations, though the virtue of what was added with MAISI was that it is only Pytorch. We could support using ITK if present but then default to Pytorch implementations if not.
qic999 commentedon Aug 13, 2024
I meet the error
ModuleNotFoundError: No module named 'monai.transforms.morphological_ops'KumoLiu commentedon Aug 13, 2024
Hi @qic999, it should be
monai.transforms.utils_morphological_ops.qic999 commentedon Aug 13, 2024
OK. Thanks. This error occurs on line 24 of https://github.com/Project-MONAI/tutorials/tree/main/generation/maisi/scripts/utils.py.
KumoLiu commentedon Aug 13, 2024
Thanks, will fix it in the following prs.
qic999 commentedon Aug 13, 2024
new error:

ModuleNotFoundError: No module named 'monai.transforms.utils_morphological_ops'my env is
mingxin-zheng commentedon Aug 14, 2024
Hi @aylward , the current implementations of erode/dilate are basically padding and conv2d/3d with
torchMONAI/monai/transforms/utils_morphological_ops.py
Line 90 in 4877767
Currently the usage of erode/dilate needs to be on GPUs, and it will be more work to do if we deviate from the
torchimplementation.In my opinion, the role of
itkis more like another backend on top ofnumpyandtorch. So my gut feeling of ITK integration is that a wrapper that can bridge torch and itk/simple-itk, but I could be wrong here.mingxin-zheng commentedon Aug 14, 2024
Hi @qic999 , you'll need the
devversion or theweeklybuild. The morphological operations are added recently and they are not available inmonai 1.3.2, which is the version you are using. Check this page for installation guide:https://docs.monai.io/en/stable/installation.html
If my comment above can't resolve your issue, please open a new issue so that the team can better support you. I would like to keep this thread simply focus the implementation plan. Thank you!
mingxin-zheng commentedon Apr 4, 2025
Closing this ticket as there are no similar requests, and I am using the function calls for the morph operation right now in my work.