Cascade Opencv -- train new model

前言

Haar与Adaboost结合即经典的VJ人脸检测,后续衍生很多特征如LBP、HOG、SURF同Cascade(即Adaboost)结合进行对象检测;Adaboost和Cascade的算法流程图如下两图描述:


opencv将参数存储于xml文件中,在检测时直接load即可;因为需要检测新的物体(电表中的某个螺丝),所以直接需要重新训练。

编译训练环境

unbuntu 13.04 32bit

opencv2.4.11

1. 准备

新建工作目录,./traincascade/

1.1 工具

编译opencv后,生成可执行文件,opencv_createsamples 和opencv_traincascade ,并复制到./traincascade/目录下。

1.2 样本

因正样本最后完全包含待检测对象,所以使用手动鼠标划取ROI。宽高约为sampSize=260*200;获得550个尺寸在posSize附近的图像,然后
标准化至sampSize;并存储于./traincascade/pos文件夹内。

反样本使用random方式,随机生成一定的反例(不包含待检测对象);宽高也为sampSize,并存储于neg文件夹内。

最后新建./traincascade/data文件夹用于存储训练后生成的cascade.xml

1.3 信息

正例信息,需要包含正例的目录文件名以及对象在图像中的位置,因为正例图像中全部为待检测对象,所以位置可以直接设定为0,0,width,height。

ls ./pos/*.jpg > metre.info

然后使用.jpg 1 0 0 260 200 替换.jpg

反例信息,仅需要包含反例的目录文件名

ls ./neg/*.jpg > bg.txt

2. 训练

2.1 生成 *.vec

opencv_createsamples -info metre.info -num 550 -w 65 -h 50 -vec metre.vec

-w,-h根据数据库中的数据来确定,此处为260*200缩小4倍,-num后的参数550为pos文件夹内正样本的最大数量。

2.2 生成*.xml

opencv_traincascade -data data -vec metre.vec -bg bg.txt -numStages 10 -nsplits 2 -minhitrate 0.999 -maxfalsealarm 0.5 -numPos 500 -numNeg 500 -w 65 -h 50
-numStages为cascade训练的层数,-numPos 500小于opencv_createsamples生成*.vec时的数目550,一般约定为0.9
最后生成的cascad.xml在data目录下。

3. 测试

使用opencv提供的人脸检测sample,载入xml,然后测试训练后得到的xml文件能否正常工作。

4. 总结

检测结果并不理想,所以就不在这里贴图了,需要进行参数修正和样本整理。另一种思路是继续研究latent svm即cascade dmp

参考

【1】 TRAINCASCADE AND CAR DETECTION USING OPENCV

【2】 Coding Robin

【3】 OpenCV haartraining

【4】 How to train cascade properly

【5】 about traincascade paremeters, samples, and other...

【6】 haar training OpenCV assertion failed










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值