opencv学习笔记——自己训练人脸识别分类器

这篇博客详细记录了使用opencv自训练人脸识别分类器的过程,包括样本采集、分类器训练和应用。作者通过采集正负样本,使用opencv_createsamples.exe创建样本描述文件,然后用opencv_haartraining.exe进行训练,最终生成自己的分类器。尽管样本数量有限,分类效果有待提升,但整个流程提供了一个实践教程。
摘要由CSDN通过智能技术生成

       在使用opencv自带的分类器haarcascade_frontalface_alt.xml进行人脸识别的基础认识后,决定自己训练一个分类器看一下效果。该过程大致可分为三个阶段:样本采集、分类器训练和运用训练好的分类器进行人脸检测。

1、样本的采集

       在训练前,我们需要进行正样本及负样本的采集。

       正样本采用的是ORL人脸数据库中的部分图像,本次共选用63张图像,初始图像大小为92*112,但在训练时出现了内存不足的问题,因此将其尺寸归一化为20*20。部分截图如下:


       负样本采用的是weizmann团队http://www.wisdom.weizmann.ac.il/~vision/Seg_Evaluation_DB/dl.html 网站上的图像分割数据库里面的灰色图像,总共200幅图片,大小大约在300*200像素,截图如下所示:


       图像采集完毕后,将其分别放在两个文件夹pos_img(正样本)和neg_img(负样本)下。再新建一个xml文件夹,xml文件夹存放后面训练过程中产生的数据模型,最后opencv会将其转换生成一个xml文件,也就是最终的分类器。

       然后,从OpenCv安装目录中查找出如下两个exe可执行文件:


opencv_createsamples.exe:用于创建样本描述文件,后缀名是.vec。专门为OpenCV训练准备,只有正样本需要,负样本不需要。 

opencv_haartraining.exe:是OpenCV自带的一个工具,封装了haar特征提取以及adaboost分类器训练过程。 

       一般来说,正负样本数目比例为1:3时训练结果较好,但是不是绝对。由于每个样本的差异性不同等因素,所以没有绝对的比例关系。但是负样本需要比正样本多,因为原则上说负样本的多样性越大越好,我们才能有效降低误检率,而不仅仅是通过正样本的训练让其能识别物体。在本次训练中,我选择了63个正样本和200个负样本,均为灰度

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值