OpenCV3.2.0-----训练数据/分类

来源:互联网 发布:疯狂的美工助手注册码 编辑:程序博客网 时间:2024/05/29 16:15

目录结构

—数据
—–posdata(正样本存放)
—–negdata(负样本存放)
—–xml(分类器存放)
—–posdata.txt(第三步生成)
—–negdata.txt(第三步生成)
—–pos.vec(第四步生成)

(1)准备正样本

正样本图片是自己所检测的目标物体,故越多越好,样本间的差异越大越好。统一化大小,推荐使用20x20,处理较快。根据需要对图片进行预处理,如灰度处理等。
这里写图片描述

(2)准备负样本

负样本是正样本的背景图片,可以是任意无关的物体及背景。但也不是随意选取,最好是项目所处的环境的背景图。负样本的大小要比正样本大。
正负样本数量1:3

(3)创建样本路径及描述

3.1 进入posdata目录下,创建文本文件编辑,并更名为批处理文件XXX.bat。
内容如下:dir /b/s/p/w *.jpg > 样本描述文件.txt
双击该批处理文件,生成样本描述文件.txt。将其剪切到上级目录下,更名为posdata.txt。
打开该文件,替换“jpg”为”jpg 1 0 0 20 20”
其中1为该文件代表的文件数量,left top(坐标原点?) width height(宽度长度,即像素20 20),
3.2进入negdata目录下,如上创建描述文件,但不用进行替换。

(4)创建正样本文件pos.vec

进入/数据目录,打开CMD,首先确保opencv已经在path路径中,输入:
opencv_createsamples -info posdata.txt -vec pos.vec -num 600 -w 20 -h 20
其中info为正样本描述文件(路径 大小),-vec是生成的pos.vec文件,-num是正样本的数量,即posdata每个路径后面的1相加的和,-w -h就是像素的宽和高。
回车生成pos.vec

(5)分类

对于Opencv3.2已经放弃了haartraining文件,取而代之的是”opencv_traincascade.exe”,参数如下:

  • data 训练的分类器的存储目录
  • vec 正样本文件,由open_createsamples.exe生成,正样本文件后缀名为.vec
  • bg 负样本说明文件,主要包含负样本文件所在的目录及负样本文件名即刚才的negdata.txt
  • numPos 每级分类器训练时所用到的正样本数目,应小于vec文件中正样本的数目,具体数目限制条件为:numPos+(numStages-1)numPos(1-minHitRate)<=vec文件中正样本的数目
  • numNeg 每级分类器训练时所用到的负样本数目,可以大于-bg指定的图片数目
  • numStages 训练分类器的级数,强分类器的个数
  • precalcValBufSize 缓存大小,用于存储预先计算的特征值,单位MB
  • precalcIdxBufSize 缓存大小,用于存储预先计算的特征索引,单位MB
  • baseFormatSave 仅在使用Haar特征时有效,如果指定,级联分类器将以老格式存储
  • numThreads 线程数
    ——级联参数——
  • stageType 级联类型,目前只能取BOOST 默认
  • featureType 训练使用的特征类型,目前支持的特征有Haar,LBP和HOG
  • w 训练的正样本的宽度,Haar特征的w和h一般为20,LBP特征的w和h一般为24,HOG特征的w和h一般为64
  • h 训练的正样本的高
    ——BOOST参数——
  • bt 训练分类器采用的Adaboost类型,Adaboost分为Getle Adaboost,Real Adaboost,Discrete Adaboost,Logit Adaboost,训练中默认采用Getle Adaboost
  • minHitRate
    影响每个强分类器阈值,每一级分类器最小命中率,表示每一级强分类器对正样本的的分类准确率
  • maxFalseAlarm
    最大虚警率,影响弱分类器的阈值,表示每个弱分类器将负样本误分为正样本的比例,一般默认值为0.5
  • weightTrimRate
    0-1之间的阈值,影响参与训练的样本,样本权重更新排序后(从小到大),从前面累计权重小于(1-weightTrimRate)的样本将不参与下一次训练,一般默认值为0.95
  • maxDepth
    每一个弱分类器决策树的深度,默认是1,是二叉树(stumps),只使用一个特征。
  • maxWeakCount
    每级强分类器中弱分类器的最大个数,当FA降不到指定的maxFalseAlarm时可以通过指定最大弱分类器个数停止单个强分类器
    ——Haar特征参数——
  • mode
    值为BASIC、CORE、ALL三种,根据值不同采用不同的Haar特征,BASIC是基本的Haar特征,CORE是所有的上下Haar特征,ALL是使用所有的Haar特征
    ——LBP特征参数——
  • LBP特征,CvLBPFeatureParams继承于CvFeatureParams
    无参数
    ——HOG特征参数——
  • HOG特征,CvHOGFeatureParams继承于CvFeatureParams
    无参数

输入:
opencv_traincascade -data xml -vec pos.vec -bg negdata.txt -numPos 100 -numNeg 300 -numStages 20 -featureType HAAR -w 20 -h 20
回车即可生成xml形式的分类器。在Opencv中直接加载该文件即可。

阅读全文
0 0
原创粉丝点击