OpenCV Haar训练

本文介绍如何使用OpenCV的Haar训练分类器来创建自定义对象检测器,重点是人脸检测。首先讲解了数据收集,包括收集正样本(人脸图像)和负样本(非人脸图像),然后讨论了正负样本的选择标准和数量。接着,描述了如何创建样本集,包括训练集和测试集的划分,并解释了opencv的createsamples参数。最后提到了Alexander Kuranov等人的研究,为haar特征选择提供参考。
摘要由CSDN通过智能技术生成

目标

OpenCV库为我们提供了一个非常有趣的演示:人脸检测程序。这个人脸检测程序被称为神圣而伟大的haartraining训练分类器,这样我们就可以使用这些功能创建自己的对象分类。是不是很有趣!

然而,Opencv上面的代码直接给我们提供了一个已经训练好的人脸HAAR XML包,这让我情何以堪。OpenCV开发人员使用haartraining进行人脸检测,正是因为他们没有给咋们提供一些信息如图像和参数用于训练,所以本报告的目的是提供一步一步的操作。

[1]Opencv Python人脸检测程序

1.数据收集

正样本图像 Positive (Face) Images

这个时候,我们需要收集一些自己感兴趣的目标正样本,当然这些样本只包括目标区域。例如,人脸。

Kuranov et. al[1] 提到他们使用5000个正面人脸图像,其中这5000个正面人脸图像是来自1000个原始的人脸图像,从1000到5000是通过平移、旋转、翻转等方法去增加正样本的数量,减少我们人工收集的数量。在后面会描述如何增加更多的样本。

在这之前,我下载并使用UMIST人脸数据库。UMIST人脸数据库是从视频流提取出来的,包括从侧面到正面的人脸。一开始我认为这样的图片训练集会产生一个鲁棒性的面部检测器,毕竟是包括了人脸的侧脸和正面了嘛。可是呀,这个最终的效果却没有想象中的那样,检测器实际上并没有很好地工作。So Sad。

MIT CBCL Face Data数据集合一个很好的人脸识别样本。因为里面包含了2429个正面人脸,其中正面人脸样本当中光照变化和姿势变化都比较少,最后通过敬仰总结这样的数据将是很好的haartraining训练集。然而,图像的大小最初是小的19×19。如果只用19*19的样本,这样对于大的图像进行检测效果也不是很好。

因此总结一下正样本的特性:

1.正样本光照变化和姿势变化尽可能少,最后的效果比较稳定。

2.正样本的图像大小不能太小。如果正样本图像太小,最终检测小的物体效果还可以,如果检测图像中较大的物体效果不太理想。

3.正样本不宜超过1000,opencv的haartraining程序默认最大的正样本集是1000,我尝试过输入2000最后等了半天之后出现宏错误,暂时没有修复。

负样本图像

我们需要收集的负样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值