1

I'm generating samples from a single positive image, positive.jpg. There's about 4000 negative filepaths in the bg.txt file. The negative image files are 100x100. The positive.jpg image is 50x50.

opencv_createsamples -img positive.jpg -bg bg.txt -info info/info.lst -maxxangle 0.5 -maxyangle 0.5 -maxzangle 0.5 -num 1950
opencv_createsamples -info info/info.lst -num 1950 -w 20 -h 20 -vec positives.vec
opencv_traincascade -data data -vec positives.vec -bg bg.txt -numPos 1800 -numNeg 900 -numStages 10 -w 20 -h 20

Here's the output from training:

===== TRAINING 0-stage =====
<BEGIN
POS count : consumed   1800 : 1800
NEG count : acceptanceRatio    900 : 1
Precalculation time: 4
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3| 0.996667| 0.393333|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 0 minutes 14 seconds.

===== TRAINING 1-stage =====
<BEGIN
POS count : consumed   1800 : 1806
NEG count : acceptanceRatio    900 : 0.318923
Precalculation time: 4
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3| 0.997222| 0.216667|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 0 minutes 29 seconds.

===== TRAINING 2-stage =====
<BEGIN
POS count : consumed   1800 : 1811
NEG count : acceptanceRatio    900 : 0.111857
Precalculation time: 4
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3| 0.996667| 0.381111|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 0 minutes 44 seconds.

===== TRAINING 3-stage =====
<BEGIN
POS count : consumed   1800 : 1817
NEG count : acceptanceRatio    900 : 0.0552418
Precalculation time: 4
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3| 0.997778| 0.165556|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 0 minutes 59 seconds.

===== TRAINING 4-stage =====
<BEGIN
POS count : consumed   1800 : 1821
NEG count : acceptanceRatio    900 : 0.00951797
Precalculation time: 4
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3| 0.997222| 0.482222|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 1 minutes 15 seconds.

===== TRAINING 5-stage =====
<BEGIN
POS count : consumed   1800 : 1826
NEG count : acceptanceRatio    900 : 0.00523308
Precalculation time: 4
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1| 0.996667| 0.435556|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 1 minutes 23 seconds.

===== TRAINING 6-stage =====
<BEGIN
POS count : consumed   1800 : 1832
NEG count : acceptanceRatio    900 : 0.00389186
Precalculation time: 4
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2| 0.997778| 0.493333|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 1 minutes 35 seconds.

===== TRAINING 7-stage =====
<BEGIN
POS count : consumed   1800 : 1836
NEG count : acceptanceRatio    900 : 0.00280947
Precalculation time: 4
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1| 0.998333| 0.433333|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 1 minutes 44 seconds.

===== TRAINING 8-stage =====
<BEGIN
POS count : consumed   1800 : 1839
NEG count : acceptanceRatio    4 : 0.00078125
Required leaf false alarm rate achieved. Branch training terminated.
Marian Montagnino
  • 125
  • 1
  • 4
  • 11

1 Answers1

2

that means your classifier already has a false alarm rate of less than 0.5^10 after 8 stages which was your chosen aim => training was finished successfully (0.00078125 < 0.0009765625)

But probably there just aren't enough negative samples present. Try to get more/different samples. Only 4 negatives could be collected in the 9th stage.

Micka
  • 19,585
  • 4
  • 56
  • 74
  • Thanks @Micka! When increasing the negatives, I typically increase the positive also, but then I run into a separate issue (fails for not enough samples). Im currently generating 1950 positive samples from a single image and have downloaded 4000 negative files. How does one determine which numbers to use for generating samples vs negative images? Thanks! – Marian Montagnino May 05 '18 at 16:37
  • is it possible to train a haar cascade file detecting a static logo from a single positive image of that logo by generating enough positive samples? – Marian Montagnino May 05 '18 at 16:42
  • you can use artificial positives (augmentation) but typically it is better to use different samples from real images, to get more different real teansformations hard to imitate like lighting, weather, etc.. You can use full-size negative images to find more negative samples, no need to resize to 100x100 since negatives will be mined from subimages and resizes automatically – Micka May 05 '18 at 17:41
  • I had 186 Positive and 792 Negative Images with each having 1280*720 and receiving the same error. What's the issue? Also having NEG count: acceptanceRatio 0 : 0 – Kashif Iftikhar Mar 12 '21 at 08:59
  • @Kashif Iftikhar: It is not an error. It means that either your task is solved, or that you have to choose harder target false alarm rate, or that your negative samples are too simple (or not diverse enough). – Micka Mar 12 '21 at 09:02