经过多时的摸索,终于实现分类器的训练。不敢保证每次都成功,但有一次实现,就可以把该注意的记录下来
分类器的训练分三步进行:
第一步:收集材料
正负样本材料的收集,本人是在灰度图下进行实验的。正样本的大小最好一致,负样本的大小没有要求,只要图片内没有目标就行。
1.正样本描述文件
正样本放在单独的文件夹下,并建立描述文件,描述文件格式为txt,每行的描述形式为
./face是和描述文件在同一路径下的正样本文件夹,后面分别问样本图片名、目标格式、坐上标坐标、宽、高。
-----建立vec格式的描述文件,直接上doc命令下的指令:
createsamples.exe为opencv自带的文件,放在同一目录下;32为正样本图片宽高;10为样本的个数(实际上式正样本越多越好,且要求尽量多样化)。运行后就生成后面训练分类器用到的.vec文件。
2.负样本描述文件
负样本的描述文件比较简单,和描述正样本的txt文件差不多,也是建立一个txt文件,就是少了目标个数个矩形框宽高的描述:
第二步:训练弱分类器
弱分类器的训练用到上面的负样本描述文件及图片文件夹,以及vec格式的正样本描述文件,还有就是opencv自带的haartraining.exe。
doc命令窗口下的命令:
注意:data为新建的放置弱分类器的文件夹,-npos 、-nneg的数量要与前面描述文件的数量相同,-w -h的大小要与正样本的大小相一致;-nstages为弱分类器的等级。
运行之后就会在data文件夹下生成多个弱分类器,用在第三步的强分类器的训练。
第三部:强分类器的训练
用到的材料:第二步生成的data文件夹,以及opencv自带的haarconv.exe,还有几个DLL文件
和上面两部一样,在doc下的命令:
运行后最后是生成face.xml强分类器。
以上三步是在鄙人电脑上运行成功的,换到其他的电脑上不知效果如果,仅此作为备忘!