1
$\begingroup$

I am trying to use the example from here to detect a stop sign.

But when I change the image to search for stop signs in there are a huge number of false positives.

Am I doing something wrong?

$\endgroup$
2
  • $\begingroup$ Hi i'm also trying the trainCascadeObjectDetector for detecting people but it doesn't show me a good results someone could help me plz . my data set contains 270 negative images and 450 postive images . other question please i need to know haw to test haar feature in trainCascadeObjectDetector('personDetector.xml',data ,negativeFolder,'FalseAlarmRate', 0.2, 'NumCascadeStages',18); i know that hog is the default feature . thank you :) $\endgroup$
    – narjes
    Commented Mar 25, 2015 at 10:31
  • $\begingroup$ Please do not use answer slots to ask similar questions. You can use the comments block under the question, or start a new thread if your case is different enough. $\endgroup$
    – sansuiso
    Commented Mar 25, 2015 at 11:55

1 Answer 1

2
$\begingroup$

You are not doing anything wrong. This particular example is there for a quick illustration, and it does not produce a very good detector. It trains a 5-stage detector from a very small training set. A decent detector may have 20 stages or more, and you would need thousands of positive samples and negative images to train it.

Take a look at this tutorial for more information.

$\endgroup$
7
  • $\begingroup$ Okay, thanks for letting me know that. I have noticed that it actually works pretty good on images that contain stop signs about the same size (in pixels) as the test image. Do you happen to know of a more in depth explanation of how to train a cascade object detector in MATLAB than the one you provided? $\endgroup$
    – user8919
    Commented May 29, 2014 at 4:53
  • $\begingroup$ Adding to what I previously wrote: So I guess you would say that the example is not very robust to changes in scale. I have read that the algorithm used is pretty robust to changes in scale though. Should I have to train the classifier with many different scales of the same images? $\endgroup$
    – user8919
    Commented May 29, 2014 at 5:03
  • $\begingroup$ In this example the ObjectTrainingSize is set automatically to [33,32]. So stop signs smaller than that will not be detected, but the ones bigger than that should be. If they are not, then try decreasing ScaleFactor parameter of vision.CascadeObjectDetector. $\endgroup$
    – Dima
    Commented May 29, 2014 at 13:56
  • $\begingroup$ I don't know of a better tutorial off hand. Is there anything specific that is not clear to you? Please keep in mind, that this is a toy example. You need vastly more data to get a useful object detector. Also keep in mind that stop signs at oblique angles are not likely to be detected, because they would have a different aspect ratio. $\endgroup$
    – Dima
    Commented May 29, 2014 at 13:59
  • $\begingroup$ So the particular object I am trying to train the detector for has a pretty constant aspect ratio. But for my application the object is very wide compared to tall. So when I turn the object 90 degrees the object has the opposite aspect ratio. So do I need to train the detector with examples turned 90 degrees, or does the algorithm automatically train for orientation shifts in the plane like that? $\endgroup$
    – user8919
    Commented May 29, 2014 at 17:40

Not the answer you're looking for? Browse other questions tagged or ask your own question.