pyod
pyod copied to clipboard
[Question] Which algorithm to use for unsupervised image outlier detection
The project I am working on is exactly as described under "1. Unsupervised Outlier Detection" on the pyod website (https://pyod.readthedocs.io/en/latest/relevant_knowledge.html). I have tried to figure out which algorithm would be most applicable for this usecase, but I don't have the answer yet.
Is the (V)AE model applicable for this use-case, where I have unlabeled (inlier/outlier) images? If not, are there any other suggestions? Many thanks!
Disclaimer: I'm not an official package contributor.
IMHO there are multiple ways of approaching your problem. Most of the models use samples with multiple features as input.
Now in your case a sample is an image. But the more important question is: what are the features?
That really depends on your use case. The easiest way would be to use every pixel of an image as an input feature (would not recommend it, as thousands or millions of features and features are very correlated, etc.)
You could look into feature engineering for images. In the easiest case this could be mean (Brightness) and variance. But there is a whole bunch of literature on the topic of image features (e.g. this article).
If you extracted a feature vector of each image you could use almost all models in this package.
Other than that you could also use a convolutional neural network for feature extraction (very basic example). There exist hundreds of papers for different network implementations regarding this problem (example paper).
These models are currently not part of the package, but they might be in the future (See #387).
All links are just examples compiled in a few minutes. Please extend with your own research.