训练haar分类器

分类器的训练分为两个阶段:

A:创建样本,用OpenCV自带的createsamples.exe来完成。

B:训练分类器,生成xml文件,由OpenCV自带的haartraining.exe完成。

(以上用到的两个可执行文件在OpenCV的bin目录下:C:/Program Files/OpenCV/bin。以下的所有操作均在该目录下完成。)

1.     先准备好大量的正样本和负样本图片,分别存入文件夹img和-img。

2.     创建正样本文件img.txt,文件的内容如下:

    img/1.jpg 1 0 0 60 40

img/2.jpg 1 0 0 60 40

img/3.jpg 1 0 0 60 40

img/4.jpg 1 0 0 60 40

img/5.jpg 1 0 0 60 40

……

其中,后面的两个参数分别表示样本的大小为60×40。可修改

3.     创建负样本文件-img.txt,文件内容如下:

    -img/1.jpg

-img/2.jpg

-img/3.jpg

-img/4.jpg

-img/5.jpg

……

4.       createsamples训练样本:

//----- --从DOS命令行输入以下参数,生成w.vec文件-------

createsamples.exe -vec Vec_Directory.vec -num Num -w Width -h Height

l           Vec_Directory:建立此信息文件的文件名及位置。

l           Num_:正样本的数量。

l           Width:目标object最佳宽度,单位为pixel。

l           Height:目标object最佳高度,单位为pixel。

例如,输入参数为:

createsamples.exe  -info ./haartraining.txt -vec ./w.vec -num 25 -w 60 -h 40  

训练结果如下:

训练haar分类器 - 034080116 - MR BLUE

5.       haartraining训练分类器

//--------从DOS命令行输入以下参数,生成data/cascade文件夹和cascade.xml文件--------

haartraining.exe -data classifier_directory –vec data/ Vec_Directory.vec -bg negatives_info_directory.txt -npos Num_of_Positives -nneg Num_of_Negatives -nstages Num_of_Stages -nsplits Num_of_Splits -mem Mem_Allocated -mode Mode -w Width -h Height

 

l           classifier_directory:cascade classifier的数据夹位置。

l           Vec_Directory.vec:create samples时所建立信息文件的位置。

l           negatives_info_directory.txt:negative images的信息文件。

l           Num_of_Positives:positive images的数量。

l           Num_of_Negatives:negative images的数量。

l           Num_of_Stages:the number of stages you want to train。(-nstages最后的s一定要记得)

l           Num_of_Splits:默认值为1,使用2时,效果明显比1好很多,但耗时。(-nsplits亦同)

l           Mem_Allocated:分配使用的内存。

l           Mode: BASIC(预设)| CORE | ALL,BASIC用于正立的object,ALL旋转的也适用。

l           Width:目标object的宽度,必须与create samples时设定的相同。

l           Height:目标object的高度,必须与create samples时设定的相同。

例如,输入参数为:

haartraining.exe -data data/cascade -vec ./w.vec -bg ./-img.txt -mode ALL -w 60 -h 40

训练结果如下:

训练haar分类器 - 034080116 - MR BLUE

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Haar分类器是一种基于Haar特征的目标检测方法。它是通过训练一个级联分类器来进行目标的识别和分类。以下是实现Haar分类器的一般步骤: 1. 数据收集:首先需要收集包含正样本和负样本的训练数据集。正样本是含有目标的图像,负样本是不含目标的图像。 2. 特征提取:通过Haar特征提取方法,从正样本和负样本中提取特征。Haar特征是基于图像局部区域的像素差值计算得出的。 3. 特征选择:从提取的Haar特征中选择一部分较为区分目标和非目标的特征。这一步通常使用Adaboost算法来进行特征选择,通过训练多个弱分类器。 4. 弱分类器训练:通过训练多个基于选择的特征的弱分类器,每个弱分类器根据特征的权重对图像进行分类。 5. 级联分类器构建:将多个弱分类器连接起来形成一个级联分类器。级联分类器的结构是由多个弱分类器按顺序排列组成,每个弱分类器的输出都通过下一个弱分类器进行检验。 6. 级联分类器训练:通过训练级联分类器,迭代地对图像进行识别和分类,直到达到所需的准确率。 7. 检测:将训练好的级联分类器应用于待检测的图像,对图像进行目标检测和分类。 总的来说,Haar分类器的实现主要包括数据收集、特征提取、特征选择、弱分类器训练、级联分类器构建、级联分类器训练和目标检测等步骤。这些步骤的顺序和具体实现方式可能会根据具体情况有所不同,但是核心思想和方法是类似的。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值