人脸检测源码解析——1、训练参数
来源:互联网 发布:linux漏洞挖掘 编辑:程序博客网 时间:2024/05/16 00:54
在后面的章节中我们将对opencv2.4.9版本的Haar特征训练级联分类器的流程进行解析。打开OpenCV解决方案,找到applications/opencv_traincascade项目,训练的主要代码都在该项目中。
打开traincascade.cpp文件,训练程序是一个命令行程序,用来设置训练的数据源和一些必要参数。二话不说先运行一把看看,编译项目运行打印如下:
<span style="font-family:Courier New;font-size:14px;">Usage: traincascade.exe -data<cascade_dir_name> -vec<vec_file_name> -bg<background_file_name> [-numPos<number_of_positive_samples = 2000>] [-numNeg<number_of_negative_samples = 1000>] [-numStages <number_of_stages = 20>] [-precalcValBufSize <precalculated_vals_buffer_size_in_Mb = 256>] [-precalcIdxBufSize <precalculated_idxs_buffer_size_in_Mb = 256>] [-baseFormatSave]--cascadeParams-- [-stageType <BOOST(default)>] [-featureType <{HAAR(default), LBP, HOG, DOI}>] [-w<sampleWidth = 24>] [-h<sampleHeight = 24>]--boostParams-- [-bt<{DAB, RAB, LB, GAB(default)}>] [-minHitRate <min_hit_rate> = 0.995>] [-maxFalseAlarmRate <max_false_alarm_rate = 0.5>] [-weightTrimRate <weight_trim_rate = 0.95>] [-maxDepth <max_depth_of_weak_tree = 1>] [-maxWeakCount <max_weak_tree_count = 100>]--haarFeatureParams-- [-mode<BASIC(default) | CORE | ALL--lbpFeatureParams----HOGFeatureParams----DOIFeatureParams--</span>
Haar训练参数
参数
作用
默认值
data
训练出来分类器数据的存放目录,训练完成会在该目录下生成cascade.xml文件,记录级联分类器的相关信息
vec
正样本数据集,由opencv附带的工具createsamples生成,把正样本的图片以vec文件的格式保存起来,包含整个正样本集的全部图片
bg
负样本图像的文件名列表,是一个文件每行存放了一个可以用作负样本的图片文件路径。需要负样本时,训练程序会自动读取列表中的图片,扣取需要大小的块作为负样本
numPos
训练一个弱分类器使用的正样本数目。不能超过vec文件包含的样本数目。
2000
numNeg
训练弱分类器的负样本数目。
2000
numStages
指定最大训练多少个层级,也就是强分类器H的个数。
14
featureType
指定使用何种特征,目前我们使用默认值Haar特征
HAAR
h
训练使用样本图像的高度,如果原始图像尺寸不一致则会缩放到该大小
24
w
训练图像的宽度
24
minHitRate
强分类器H的最小Recall值,后面我们称它为HitRate。
0.995
maxFalseAlarmRate
强分类器H的最大虚警率
0.5
weightTrimRate
boosting的过程中,更新权值后,进行下一个弱分类器训练时,可以把权值小的一部分去掉,这个值就是设置保留的比例。例如设置0.95,则保留权值高的前面95%的样本,后面的5%权值小的会被trim掉。
0.95
maxDepth
弱分类器CART树的最大深度
1
mode
使用haar特征的类型,如果设置为BASIC,则只使用5种基本特征Haar_x2 Haar_x3 Haar_y2 Haar_y3 Haar_x2_y2;如果设置为CORE,则还会使用Haar_x4 Haar_y4 Haar_point等3种特征;如果设置为ALL,则会使用tiled的特征,也就是全部类型的特征。
BASIC
Traincascade.cpp文件的代码很简单,只包含一个main函数,收集命令行输入参数付给相应的变量,然后将参数传递给到CvCascadeClassifier::train函数执行。
classifier.train( cascadeDirName, vecName, bgName, numPos, numNeg, precalcValBufSize,precalcIdxBufSize, numStages, cascadeParams, *featureParams[cascadeParams.featureType], stageParams, baseFormatSave );
- 人脸检测源码解析——1、训练参数
- 人脸检测源码解析——2、概要流程
- 人脸检测源码解析——3、准备数据
- 人脸检测源码解析——5、加载数据
- opencv 人脸检测源码解析
- dlib人脸检测源码解析
- 人脸检测源码解析——4、Haar特征集
- 人脸检测源码解析——6、强分类器的诞生
- 【人脸检测】“人脸训练代码”项目笔记(1)——头文件
- 人脸检测训练样本
- 人脸检测 训练心得
- 人脸检测 训练方法
- opencv_traincascade训练人脸检测
- 【人脸检测】“人脸训练代码”项目笔记(4)——代码结构分析:训练部分结构
- 论文解析:人脸检测中级联卷积神经网络的联合训练
- CVPR 2016|商汤科技论文解析:人脸检测中级联卷积神经网络的联合训练
- 论文解析:人脸检测中级联卷积神经网络的联合训练
- Face++ 人脸检测、注册以及训练(1)
- hdu 5073 Galaxy(数学+前缀和)
- 读取web.xml中自定义的参数与值
- Linux系统中的gadgetfs介绍
- 武汉卫星地图商用级别19级 来自百度卫星地图
- 图片如何转换成pdf
- 人脸检测源码解析——1、训练参数
- 程序的记事本--log4net
- 张小龙眼中的产品经理
- 【转载】Android之AndroidManifest.xml文件解析
- HDU 1712 ACboy needs your help(分组背包)
- 压力这杯水你可以拿多久?
- SQL Server2012 提示不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
- 将red5项目部署到tomcat下,并且red5项目嵌入到J2EE项目中
- WebLogic Server 10.3.2.0 SSL 配置及 SSL 协议传输的 WebSevice 调用