Project-MONAI / GenerativeModels

MONAI Generative Models makes it easy to train, evaluate, and deploy generative models and related applications
Apache License 2.0
614 stars 87 forks source link

Which other methods of Anomaly Detection should we support? #113

Closed Warvito closed 1 year ago

Warvito commented 1 year ago

Creating this issue so we can discuss which other methods of anomaly detection (or anomaly segmentation) should we also support in this repository.

Ashayp31 commented 1 year ago

Beyond the baseline anomaly detection approach, i.e. resampling and reconstruction to create a residual based anomaly map there are some supplementary things to add to this, i.e. use of the resampling mask to 0 the residual map where no resampling has taken place. Depending on IP issues we can also use the methods using Z-scores/KDE through multiple resampling and dropout in the autoencoder to create Z-score or KDE anomaly maps Something similar can be done with the diffusion models as well I believe.

marksgraham commented 1 year ago

I think as a first step we should be looking to implement all our methods, IP issues permitting - I don't think the code is openly available for any of them, yet.

So that would include all of @Ashayp31's work for segmentation mentioned above with transformers, @Warvito's segmentation work both with transformers and diffusion models, and my full image OOD work, both transformer and diffusion based. I think starting with our work makes sense because a) we know it best b) it will create a clear template others can use to contribute their methods.

But a related question is how we implement our methods? Once the core building blocks are available, should the anomaly detection methods be implemented as new inferer classes? Or are some of the bits we need too specialised to be included in the core repo - perhaps we should be providing tutorials that implement the methods, including any extra bits that are too specialised in the tutorials themselves?

SANCHES-Pedro commented 1 year ago

Some other methods are:

[1] AnoDDPM: Anomaly Detection With Denoising Diffusion Probabilistic Models Using Simplex Noise. link [2] What is Healthy? Generative Counterfactual Diffusion for Lesion Localization link [3] Diffusion Models for Medical Anomaly Detection. link

Warvito commented 1 year ago

Beyond the baseline anomaly detection approach, i.e. resampling and reconstruction to create a residual based anomaly map there are some supplementary things to add to this

I think as a first step we should be looking to implement all our methods, IP issues permitting

@Ashayp31 @marksgraham I talked with Jorge a while ago, the implementation of the get likelihoods and simply using it to perform the anomaly detection at image level would be OK, with no issues with IP. Implementing anomaly segmentation using all the resampling parts would be a little trickier. =/

I will check with him again in our next meeting

Warvito commented 1 year ago

But a related question is how we implement our methods? Once the core building blocks are available, should the anomaly detection methods be implemented as new inferer classes? Or are some of the bits we need too specialised to be included in the core repo - perhaps we should be providing tutorials that implement the methods, including any extra bits that are too specialised in the tutorials themselves?

@marksgraham I think we can start implementing the tutorials with specialized components in the tutorials. After we have a few methods done, we can evaluate what general components could be moved from the tutorials to the package code (for example , to the inferer class). what do you think?

Maybe in the future we could have several inferer classes for each method (so it would be easy to apply the methods using bundles)