opencv_traincascade级联训练人脸数据

正负样本格式: 
  正样本 灰度化 24*24 2000张 
  负样本 灰度化 50*50 1000张

训练过程 
  第一步:dir /b >pos.txt 以及dir /b >neg.txt

  第二步:调整pos及neg文件 ,删除第一行和最后一行 
在neg.txt 中每一行加neg/ 在pos.txt中每一行加pos.txt并且在每一行最后增加 1 0 0 24 24 
在工作路径下手动建立一个文件夹名叫xml 
  第三步:opencv_createsamples -info pos.txt -vec pos.vec -bg neg.txt -num 600 -w 24 -h 24

  第四步:opencv_traincascade -data xml -vec pos.vec -bg neg.txt -numPos 270 -numNeg 300 -numStages 15 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -w 24 -h 24 –mode ALL


问题集锦:

  报错 :error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale 
  解决: 把face_cascade的值改为使用绝对路径cv2.CascadeClassifier(‘D:/…你的.xml路径’) 
或者在原来代码下加一行scade.load(‘D:/….你的xml路径’)

  报错:Traincascade Error: Bad argument (Can not get new positive sample. Themost possible reason is insufficient count of samples in given vec-file.)

  解决:设置的numPos过大,由于训练时pos count 会从你设置的numPos增大,每一级都按一定的次序增大,后来可能会超过样本库中正样本的个数,就会报这个错误。

另附一个:不是报错 是Stages 0-4 are loaded 原因:xml文件已经生成,需要删了重来

  警告:traincascade’s error (Required leaf false alarm rate achieved. Branch training terminated.) 
  这不是一个错误。鉴于所提供的样本设置,级联已达到其预期的潜力。需要添加更多的数据或者设置更苛刻条件。 
解决办法:-minHitRate默认设置为0.995,默认-maxFalseAlarmRate设置为0.5。这意味着对于您当前的模型,在训练过程中,允许有1000个肯定样本中有5个得到错误分类,而每个阶段需要达到个人错误接受率由0.5值表示。 
所以请尝试下列其中一项: 

-minHitRate更改为0.999并使其难以达到目标。然而,这不是最好的方法,容易过度训练 
更改-maxFalseAlarmRate为0.7,迫使各个阶段要更加复杂 
在训练级联时,指定numPos为所有的正样本。当正样本不能用于进一步处理时,级联分类器会尝试用新样本替换掉样本。而所有正样本都加入了没有可以代替的,所以应该用numPos的较低值重新运行训练。 
关于这些numPos numNeg等值的公式 
vec-file number >= (numPos + (numStages-1) * (1 – minHitRate) * numPos) + S 
其中vec-file number指的是正样本数 
numStages默认为20 
minHitRate默认设为0.95 可以增大0.999使得训练更复杂 
S是负样本数

  

  报错: OpenCV Error: Insufficient memory (Failed to allocate 965425142 bytes) 
内存分配不足 我的内存是4G 尚未找到解决办法 但是发现之前自己会出现这个错误是因为路径中样本有1000 个,createsample的时候就使用1000 然后继续下面的traincascade工作使用1000就报错了。后来改为使用500才没有报错

  报错:Train dataset for temp stage can not be filled 
一般显示的acceptanceRatio 是大概这样的数值0.000412662 或者更小。但如果出现像这样 7.83885e-07 ,说明已经导致过拟合,此时要适当减小训练层数,即减小numStages的值


训练结果: 

 

posted @ 2018-04-19 18:25  扣子老三  阅读(860)  评论(0编辑  收藏  举报