自己训练了一个识别五角星的分类器,不过只用了50个正样本,2000个负样本(不含正样本的背景图),所以用起来误判率很高,
把训练步骤弄清楚,只要背景和正样本选取得足够多,足够好,就可以较准确的识别物体.
现在把步骤总结一下.
训练分类器最终用到一个 haartraining的自带程序,
haartraining -data cascade //样本输出目录
-vec pos.vec //正样本vec文件
-bg negdata.dat //负样本表述文件
-npos x //正样本图片个数
-nneg x //负样本图片个数
-mem 500 //程序可用空间,尽量大些,越大越快!
-mode ALL
-w 20 //正样本图片宽度
-h 20 //正样本图片高度 一般取20
先创建负样本: ,一般几千张,越多越准确,但耗时多. 在windows下用命令 dir /b>dataname 生成dataname的表述文件,再把里面不要的东西删除,只留下图片路径和文件名,文件名最好不要空格.先创建好负样本描述文件待用.
创建正样本vec文件: 先用上述方法创建一个正样本描述文件 posdata.dat,再用createsamples程序生成.vec的文件.
createsamples -info posdata.dat //正样本描述文件
-vec pos.vec //正样本.vec文件 输出
-num 50 //正样本图片个数 ,我只用了50幅
-w 20 //正样本图片宽度
-h 20 //正样本图片高度
在训练完后2.1版的会自动执行 performance. 而生成.xml的文件,之后就可以用xml分类器进行物体识别了
在PC机上 ,50正样本,2000负样本就花了1个多小时,上万幅的样本估计要几天几夜了!