我正在尝试建立一个分类器来检测热图像中的人脸。所以我尝试使用Haar, LBP和HOG分类器进行训练。我正在windows上使用OpenCV 2.4.8。
opencv_traincascade.exe -data haarcascades -vec pos.vec -bg neg.txt -numPos 250 -numStages 24 -numNeg 900 -w 24 -h 24
我总共有307个阳性样本。负样尺寸为75x75。对于这三种情况中的每一种,训练都停留在一个特定的阶段——Haar(第12阶段)较早,LBP(第14/15阶段)较晚。我减少了底片的数量(最多200张),但这意味着训练在后期阶段会停滞不前。训练已经2天没有进展了。没有负号正在被消耗,命令窗口看起来像这样-
===== TRAINING 14-stage =====
<BEGIN
POS count : consumed 255 : 262
也- 消耗的POS计数和消耗的NEG计数表示什么?
- 当我将minHitRate降低到0.7时,为什么POS消耗的数量会增加?
请告诉我我做错了什么。谢谢。
我自己也有类似的问题。问题是每个阶段的分类器都取那些在前一阶段被分类为正的负例子。结果是,没有一个负样本被归为正样本代码进入无限循环,试图找到一个正样本。我通过改变源代码来解决这个问题,这样算法在找不到任何负例后终止,只使用前面的分类器阶段。如果你不想改变代码,尝试添加更多的负面例子或减少阶段的数量。
消耗的数量是在每个阶段使用的正面和负面图像的数量。你需要使用更多的正片和负片大约1000张正片和2000张负片才能得到好的效果