级联分类器的介绍:级联分类器训练
因为要训练负样本,windows电脑有些问题,所以就只能有mac进行训练。
在windows中训练,准备了负样本之后,进行三步。
1.opencv_createsamples 也可以用来查看和检查保存于vec正样本文件中的正样本
2.opencv_traincascade 和 opencv_haartraining 都可用来训练一个级联分类器
命令中的参数在
当 opencv_traincascade 程序训练结束以后,训练好的级联分类器将存储于文件cascade.xml中,这个文件位于 -data 指定的目录中。这个目录中的其他文件是训练的中间结果,当训练程序被中断后,再重新运行训练程序将读入之前的训练结果,而不需从头重新训练。训练结束后,你可以删除这些中间文件。
在mac中,安装opencv之后就可以进行训练了
在mac中训练分为两步
1.制作正样本
2.级联分类器训练
step 1 :/anaconda2/bin/opencv_createsamples -info positive/info.txt -vec vector/vector.vec -num 300 -w 20 -h 20
step 2 :/anaconda2/bin/opencv_traincascade -data cascades -vec vector/vector.vec -bg negative/info.txt -numPos 300 -numNeg 688 -numStages 15 -w 20 -h 20 -minHitRate 0.9999 -maxFalseAlarmRate 0.5 -mem 2048 -mode ALL
结果在cascade.xml文件即为最终的训练结果,即可拿来进行目标检测。
在训练的过程中遇到如下的问题
===== TRAINING 0-stage =====
<BEGIN
POS count : consumed 697 : 697
Train dataset for temp stage can not be filled. Branch training terminated.
Cascade classifier can't be trained. Check the used training parameters.
解决方法是负样本信息文件,是在negative文件夹下的info.txt ,文件中图片描述的路径不对,负样本文件中的每一行记录的图片名必须是从当前路径开始的。
训练的时候正样本是300张,负样本是697张。