OpenCV 训练联级叠层分类器, 识别你想要的任何物体
博客专区 > denua_ 的博客 > 博客详情
OpenCV 训练联级叠层分类器, 识别你想要的任何物体
denua_ 发表于12个月前
OpenCV 训练联级叠层分类器, 识别你想要的任何物体
  • 发表于 12个月前
  • 阅读 30
  • 收藏 2
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

OpenCV物体检测需要的叠层分类器, OpenCv自带的训练器

OpenCV 2.4

windows 7 64

<1> 收集样本

样本分为正样本和负样本,并且大小要一致, 一般为20 *20大小的图片, 正样本是包含要检测的物体, 不能包含其他物体, 负样本只要不是要检测的物体就可以.例如要检测人脸, 则正样本只能包含人脸. 不能有其他, 负样本则不能包含有人脸, 样本最好是能突显所要检测物体的特性.

样本的数量, 多样性决定了分类器的准确性.

将收集的样本分别放在两个文件夹, 这里的两个文件夹为, 正样本face\ , 负样本 neg\

在两个样本文件夹下分别新建一个文本文档, 命名为正样本info.txt,  负样本bg.txt. 并且在这两个文件夹下执行命令 dir /d > infi.txt ,  dir /d > bg.txt, 则所有样本文件名都被导入文本文档,将每行改为如下格式,

样本1.bmp 1 0 0 20 20

样本2.bmp 1 0 0 20 20

  1是样本数量, 0是开始区域左上坐标, 20是右下坐标, 在本例中, 整个图片都为要样本有效区则0开始20结束:

 

<2>创建样本文件

生成样本文件程序在OpenCv 目录下的位置, :

OpenCv\opencv\build\x64\cv12\bin\ opencv_createsamples.exe

在OpenCv\opencv\build\x64\cv12\bin\ 目录下执行命令,

opencv_createsamples.exe -info face\info.txt -vec data.vec  -num 2700    -w 20 -h 20

参数说明:

Info

正样本描述文件位置

Vec

生成的样本保存位置

Num

样本数量

W

样本宽度

H

样本高度

...

其他参数

执行以上命令后将生成一个样本文件.vec

<3>训练联级分类器

训练程序路径;OpenCv\opencv\build\x64\cv12\bin\

训练命令: opencv_haartraining.exe -vec data.vec -data dat -bg nonfaces\bg.txt -npos 2710 -nneg 2710 -nstages 5 -nsplits 3 -mem 512 -minpos 100 -w 20 -h 20

参数说明:

Vec

样本文件路径(用traininssample创建)

Data

存放训练好的分类器的路径

Bg

负样本描述文件路径

Npos

用来训练正样本的数量

Nneg

用来训练的负样本数量

Nstages

训练的层数

Nsplits

决定用于阶段分类器的弱分类器.如果为1,则应该简单的stump classifier

被使用,如果是2或更多,则带有number_of_splits个内部节点的CART分类器被使用

Mem

预算内存, 越大速度快

Nosnsym

是否垂直对称

Mode

表示haar特征集

W h

训练样本的尺寸

结果:

N: 层数 %

  SMP: 样本使用率

F: +表示通过翻转,否则是 -

   ST.THR: 分类器阈值

   HR: 当前分类器 对正样本识别正确的概率

   FA: 当前分类器 对负样本识别错误的概率

  EXP.ERR:分类器的期望错误率

标签: OpenCV
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 7
码字总数 6881
×
denua_
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: