I want to use GMM for image classification. So, I have extracted SIFT features from each image in the corpus. Then, I apply EM algorithm to learn GMM parameters (I have coded it in matlab). I get very low Recognition rates for unseen images when I test the model on larger number of classes (>=4). Who can explain this result ? Thanks.
-
1$\begingroup$ I'm not sure to see the doirect link between SIFT features and GMM. Could you be more explicit, especially by describing what quantities/image properties you want to model with GMM's? $\endgroup$– sansuisoCommented Apr 9, 2013 at 10:59
-
1$\begingroup$ GMM stands for Gaussian Mixture Models. It is a form of unsupervised learning paradigm, which generally uses an optimization algorithm to solve it. I think a detailed description would make for an excellent question. $\endgroup$– NareshCommented Apr 9, 2013 at 13:35
3 Answers
Are you trying to model the distribution of the SIFT descriptors using GMM? Are you using the actual 128-element descriptors? If so, then you are trying to model a distribution in a 128-dimensional space, which is not likely to work well.
You need to reduce the dimensionality. If you insist on using GMM, then the simplest thing to try is to use principal components analysis (PCA) to reduce the dimensionality of your descriptors. I would not use more than 10 dimensions. Here is a paper, that tried kernel density estimation on reduced SIFT descriptors among other things.
Alternatively, you could try other algorithms, such as Bag Of Features, or the Pyramid Match Kernel.
-
$\begingroup$ Thank you for ideas. Indeed, I have tried PCA to reduce 128 dimensions down to 20 or 30 dimensions which improved considerably the speed of algorithm; but recognition rates remain the same. $\endgroup$– ZgobCommented Apr 10, 2013 at 10:24
-
$\begingroup$ My guess would be that 20 dimensions is still too many. I would try 10 or 8. $\endgroup$– DimaCommented Apr 10, 2013 at 15:49
-
$\begingroup$ I apply PCA to project data on dimension=10. I get "poor rates" I guess that reducing data dimension from 128 to 10 means loosing 50% of information because the 10 largest eigenValues of covariance matrix of training data = 0.51 $\endgroup$– ZgobCommented Apr 10, 2013 at 18:04
-
$\begingroup$ Have you tried using more Gaussians in your GMM? $\endgroup$– DimaCommented Apr 10, 2013 at 18:30
-
$\begingroup$ Yes, you are right. I have tried using Gaussians more than the number of classes and it improves recognition rates. $\endgroup$– ZgobCommented Apr 10, 2013 at 18:51
Professor Andrew Moore has worked actively on using Gaussian Mixture Models along with Expectation Maximization in order to find the GMM parameters. He could probably contacted at his email address.
The general problem with unsupervised learning is that it typically requires a very-very large data set. Otherwise it will start classifying images based on 'less important' features rather than the more important features.
In addition, reducing the number of features obtained via SIFT could probably make your model significantly better.This could be done via preprocessing the image and :
1) Cropping less important parts.
2) Smoothing the image.
3) Reducing the color range/binarizing the image.
However, care must be taken to do these things.
All in all, I find the results of unsupervised classification of images 'poor' and 'unreliable'.
-
$\begingroup$ Thank you. I find your suggestions very logical. Indeed, Applying SIFT directly on raw images without any preprocessing would yield to ambiguous features from the begining. $\endgroup$– ZgobCommented Apr 10, 2013 at 10:28
Based on posted answers, I will try to add the following steps in the model process:
- a preprocessing-step on images in corpus before applying SIFT
- a postprocessing-step on images after applying SIFT such that PCA to reduce dimensions of features
Thanks again for your help