Opencv haar training-特征训练器

1.正样本文件采集:

需要使用到的工具:objectmarker

用于待识别对象的标注,并生成标注文件。需要注意的是,生成完标注文件之后(通常是info.txt文件),用编辑器打开文件,将所有路径信息删除,只保留文件名和其对应的标注信息,修改完成之后,将文件保存为sample_pos.dat(注意,文件名字不要改变,否则以后会很坑,这个具体还没去研究源码,应该是程序的问题);

ps:如果已经有了图像的标注信息,那就可以跳过这一步了。

2.正样本vec文件生成(sample文件)

工具:opencv_createsamples.exe

在工具所在目录创建文件夹:pos,将采集到的正样本,以及标注文件放入pos文件夹;

使用cmd进入工具所在目录,执行命令:

opencv_createsamples.exe -info ./pos/sample_pos.dat -vec ./pos/sample_pos.vec -num 17 -w 20 -h 20 -show YES

ps:-num:正样本个数

3.负样本采集

建议正负样本比例在1:3(具体还不知道,参考网上提供的数据)。负样本在采集的时候尤其需要注意,尽量保持和正样本环境相似,比如,正样本图像中包含要检测的对象,负样本图像中最好剔除要检测的对象,只保留背景。有条件的同学可以直接写程序,对负样本图片进行切割,标准是40*40(因为我们的正样本采用的是20*20)。

负样本采集完成之后,在pos目录的统计目录创建文件夹:neg,将负样本拷贝至neg目录,然后使用命令行进入neg目录,执行命令:

dir /b > sample_neg.dat

用文本编辑器打开dat文件,删除最后一行:sample_neg.dat,保存文件;

ps:文件名字不要改变,否则会出错

4.训练样本

到此为止,我们要准备的文件都已经准备好,可以进行训练了。

使用的工具:opencv_haartraining.exe

进入工具所在目录,先创建目录:cascade,然后执行命令:

opencv_haartraining.exe -data ./cascade -vec ./pos/sample_pos.vec -bg ./neg/sample_neg.dat -nstage 20 -npos 100 -nneg 300 -mem 256 -mode ALL -w 20 -h 20
-nstage:要训练多少层
-npos:每层的正样本个数
-nneg:每层的负样本个数

ps:在这一步经常会抛异常,通常都是负样本文件不对,同时dat文件的名字一定要按照上面说的命名,否则会出错;

5.合并xml文件

样本训练完成之后,cascade目录下会生成多个子目录,需要将这些目录合并生成xml文件才能使用:

工具:c-example-convert_cascade.exe(ps:根据opencv的版本不同,这个工具的名字也可能不同)

执行命令:

c-example-convert_cascade.exe --size=20x20 ./cascade haar_adaboost.xml

到此,会在目录中生成haar_adaboost.xml文件!

done!

说明:

1.所有的工具及其依赖文件建议统一放置在一个目录中(比如:build);

2.除了负样本描述文件的生成命令需要在neg目录中执行,其他命令全部在build(假设你也有这个目录,以各自的实际目录为准)目录中执行;

3.good luck!

参考:

1.http://www.cnblogs.com/wengzilin/p/3845271.html

2.http://blog.csdn.net/xuejiren/article/details/39493537

(Opencv Error: Assertion failed (elements_read==1))

时间: 2024-08-02 16:20:25

Opencv haar training-特征训练器的相关文章

opencv - haar人脸特征的训练

step 1: 把正样品,负样品,opencv_createsamples,opencv_haartraining放到一个文件夹下面,利于后面的运行.step 2: 生成正负样品的描述文件 正样品描述文件find positive_boosted -iname "*.bmp" -exec echo \{\} 1 0 0 20 20 \; > face.info生成positive_boosted/face00244.bmp 1 0 0 20 20positive_boosted/

opencv 构造训练器

D:/face   构造face训练器为例 一:样本创建 训练样本分为正例样本和反例样本,其中正例样本是指待检目标样本,反例样本指其它任意图片. 负样本可以来自于任意的图片,但这些图片不能包含目标特征.负样本由背景描述文件来描述.背景描述文件是一个. 创建 正 负 样本目录 mkdir D:\face\posdata mkdir D:\face\negdata 把正负样本图片,分别放入2个文件夹下. 生成负样本描述文件 cd  D:\face\negdata dir /b > negdata.d

如何使用opencv自带工具训练人脸检测分类器

前言 参考 1.opencv人脸检测训练分类器及其常见问题-译文-Good: 2.FAQ-opencv-haartraining-原文: 3.人脸检测训练心得: 4.opencv_traincascade支持Haar和LBP特征: 5.如何使用opencv自带工具训练分类器: 6.如何使用工具进行训练: 7.如何训练详解: 8.opencv中文论坛-级联分类器训练: 完 原文地址:https://www.cnblogs.com/happyamyhope/p/9706844.html

OpenCV的HOG+SVM训练程序注意事项

行人训练:http://www.tuicool.com/articles/MvYfui 字符识别:http://www.haogongju.net/art/2328003 用OpenCV使用HOG特征进行SVM算法训练的大概流程是 1)设置训练样本集 需要两组数据,一组是数据的类别,一组是数据的向量信息. 2)设置SVM参数,参考<机器模式->libSVM之参数说明> 注意必须使用线性SVM进行训练,因为检测函数只支持线性检测!!! 3)使用HOGDescriptor计算hog特征 4)

opencv提取surf特征点出现的错误

opencv实现surf特征的提取.本来是一个非常easy的代码,结果我执行时却出现了各种错误,以下来谈谈我出现的错误及问题的解决过程. 首先,我把提取surf特征的过程整合成了一个函数,我单独建立一个project读取两张图片,然后调用这个surf提取的函数时时不管是debug还是release模式下都是没有问题的.当我把这个函数加入到我如今已有的project代码里面的时候出现了各种奇葩错误.以下是我surf特征提取的函数 void surfdetect(IplImage *image1,I

用OpenCV制作视频控制播放器(无声音)

申明:OpenCV是计算机视觉库,所以用在图片或视频处理上,故播放的视频暂时没有声音 软件:用OpenCV制作视频控制播放器(无声音) 功能说明:新建播放窗口,添加进度条可以拖动视频播放. 流程图: 功能说明: 1. 新建进度条 cvCreatTrackbar("","",&,frames,callback) 2.获取总帧数 cvGetCaptureProperty(&,id) double cvGetCaptureProperty( CvCaptu

NLP用CNN分类Mnist,提取出来的特征训练SVM及Keras的使用(demo)

用CNN分类Mnist http://www.bubuko.com/infodetail-777299.html /DeepLearning Tutorials/keras_usage 提取出来的特征训练SVMhttp://www.bubuko.com/infodetail-792731.html ./dive_into _keras 自己动手写demo实现

【OpenCV入门教程之十八】OpenCV仿射变换 &amp; SURF特征点描述合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 本篇文章中,我们一起探讨了OpenCV中

OpenCV仿射变换 &amp; SURF特征点描述合辑

OpenCV仿射变换 & SURF特征点描述合辑 转载地址:http://blog.csdn.net/poem_qianmo/article/details/33320997?utm_source=tuicool&utm_medium=referral