2

I am working with thermal videos. My project determines in real-time whether each frame contains a face or not. By "contains a face", I mean this:

enter image description here

(one face, this size and angle, per frame)

I've trained an LBP cascade classifier for this purpose. The classifier performs pretty well and is able to detect thermal faces with very low chance of false negative as shown above. However, the rate of false positives is quite alarming. Non-face objects in the void are detected, as shown below.

enter image description here enter image description here enter image description here

Note: these images were used as negative samples

By adjusting parameters of detectMultiScale method, the number of false positives can be reduced. But still, with a scaleFactor of 1.5 and minNeighbors of 10, I get false positives 20% of the time.

For the cascade training I had 600 negative images (60x80) and 90 positive images (60x50), out of which 1200 positive samples were generated.

So what are other possible solutions or work-around for this problem, without compromising speed of detection or frame rate?

EDIT: I have tried extracting hard negatives from my samples by using the trained classifier on the negative images and marking up the false negatives to include them in the next training. So far, I have been able to reduce the false positives to about 12%. However i am still not satisfied with this result.

FartVader
  • 143
  • 1
  • 3
  • 13
  • 1
    1. During training use much more/different negatives. 2. during detection maybe you can use some clever post-processing. – Micka Mar 14 '17 at 10:24
  • Hi Micka. I read about computing the histogram of the detected object and comparing it to that of an average face, but that seems tedious for the program. Can you suggest something in particular? – FartVader Mar 14 '17 at 10:30
  • 1
    sorry, never worked with thermal imaging. Maybe assume that faces will have some minimum average intensity? This should eliminate the first two of your three sample false positives. Did you try to train an additional haar cascade classifier? You could combine both and only accept if both detect some region as a face. – Micka Mar 14 '17 at 10:33
  • How big was your training data? – Michał Gacka Mar 14 '17 at 10:52
  • i have 600 negative images (60x80) and 90 positive images (60x50) out of which 1200 positive samples were generated. – FartVader Mar 14 '17 at 10:55
  • 2
    take a look at the paper in [this post](https://github.com/opencv/opencv/pull/7910) i think it will be helpful for better training – sturkmen Mar 14 '17 at 12:33
  • Thanks sturkmen. That looks promising! – FartVader Mar 14 '17 at 14:48

0 Answers0