MONAI
MONAI copied to clipboard
Add Post-processing Transforms in MONAI for Nuclei Prediction
Description It is an overall PR created to track the progress of adding post-processing transforms in MONAI.
Describe the solution you'd like Several post-processing transforms need to be added to MONAI which I simply divided into two categories.
- Common transforms which can be integrated into MONAI core
- HoVerNet-specific transforms which can be integrated into apps/pathology/transforms
Tasks
Common transforms:
- [x] Get a bounding box
BoundingRect
- [x] Remove small objects
RemoveSmallObjects
- [x] Get Sobel kernel #5015
- [ ] Process NP branch output(an output branch in HoVerNet) which turns the probability map from the network into the instance segmentation result #5173
- [ ] Calculate the distance from a sequence of coordinates that describes a boundary between foreground and background #4181
HoVerNet-specific transforms:
- [ ] #5178
- [x] #5179
- [ ] #5180
Additional context There is already a draft implementation in the tutorial repo refer to https://github.com/Project-MONAI/tutorials/pull/890. Related PR: https://github.com/Project-MONAI/MONAI/issues/4181 Related Issues: https://github.com/Project-MONAI/MONAI/issues/4180
cc @wyli @Nic-Ma @drbeh @JHancox @shaneahmed
I think @drbeh may have already tackled the last Common Transform ("Calculate the distance from sequence...")
The first 2 HNet-specific Transforms are to do with representing contours. There may be a different representation that we would prefer to adopt. This one just provides compatibility with the existing OpenCV-based outputs (which are better, IMHO, than SciPy's)
Hi @KumoLiu, I think we will need to discuss on how to take this forward. i.e., which of the post processing algorithms to be made part of MONAI. As most of the post-processing algorithms are available in libraries like scikit-learn/image e.g., peak detection, distance transform etc. If there is GPU optimization then probably it should be part of MONAI. One of these as @JHancox mentioned is to generate contours from segmentation masks which can be optimized.
I'm closing as all the post-processing added. Optimizing the efficiency of these transforms are very important and should be planned for the future releases.