Object Detection in Images (HOG)

I want to detect objects inside microscopy image cells. I have a lot of annotated images (50,000 images with an object and 500,000 without an object).

So far I have tried to extract functions using HOG and classify using logistic regression and LinearSVC. I tried several parameters for HOG or color spaces (RGB, HSV, LAB), but I do not see much difference, the prediction speed is about 70%.

I have a few questions. How many images should be used for descriptor training? How many images should be used to verify the prediction?

I tried about 1000 images for training, which gives me 55% of positive results and 5000, which gives me about 72% of positive results. However, it also depends heavily on the test suite; sometimes the test suite can reach 80-90% of the positive detected images.

Here are two examples containing an object and two images without an object:

object 01

object 02

cell 01

cell 02

Another problem is that sometimes images contain several objects:

objects

Should I try to increase the training set examples? How to choose images for the training set, just random? What else could I try?

Any help would be greatly appreciated, I just started learning machine learning. I am using Python (scikit image and scikit-learn).

+7
python scikit-learn image object-detection scikit-image
source share
1 answer

I think you are on the right track, but let me raise some considerations:

1 - The number of training sets will always be important in classifying the problem (usually better is better). However, you should have good annotations and your method should be emission resistant.

2 - From the images you put, it seems that the color histogram is more discriminatory than the HOG. When using color histograms, I usually go for laboratory color space with correlated histograms ab. L is brightness and is very dependent on image capture (e.g. brightness). One method that is used to re-identify the pedestrian is to divide the images into blocks and computes the histograms inside these blocks. This may be helpful.

3 - The best way to test your classification method is cross-validation: http://en.wikipedia.org/wiki/Cross-validation_%28statistics%29#k-fold_cross-validation

4 - Have you tried other classifiers? Wake can be very interesting. It easily tests various methods / parameters: http://www.cs.waikato.ac.nz/ml/weka/

5 - Finally, if you still have poor results and have no idea which ones you should use, you can apply deep neural networks to it!

Hope this helps.

+2
source share

All Articles