Hi all!
I'm working on a research project, it involves swimmers in a swimming-pool. The first objective is to detect the swimmers and not the waves, reflections or other stuff in the swimming pool like balls and other toys. I figured a HOG-detector could do the job but this seems to be more difficult than expected. I've captured a bunch of mostly shoulders and heads of the swimmers as positive images. For negative images i use a wide variety of images including the empty swimming-pool. The camera used is pretty high up so the swimmers are fairly small in the pictures, a head covers roughly 36-44 pixels depending on the angle between camera and head.
For the training i've tried several resolutions for the HOG, color or grayscaled images, normalized colors, gamma filter, blurr, sharpen and combinations of these. For finding a good, or best, value for C i've used the same method as the LibSVM's grid.py script does but without the gamma search because it is not used by linear kernels.
The problem i seem to be having are the false positives. When testing, the amount of false positives is roughly 30% although the prediction results on the training-data are 100% accurate and cross-validation is also close to or exactly 100% accurate. I've tried smaller and bigger amounts of positives and negatives, 660 up to 12K positives and 1:1 up to 82K negatives. When not using a 1:1 positive/negative dataset the weights are set to match the ratio.
I've created some fair to good descriptors before so i know how to cook but i can't seem to get this recipe right.
Are there ways i may have missed to get these results any better? Is there a way to make the HOG more color-sensitive?
Using LibLinear for the training and HOG components from Mitov's libraries which are OpenCV based.
Regards, Burke