正负样本格式: 
  正样本 灰度化 24*24 2000张 
  负样本 灰度化 50*50 1000张

训练过程 
  第一步:dir /b >pos.txt 以及dir /b >neg.txt

  第二步:调整pos及neg文件 ,删除第一行和最后一行 
在neg.txt 中每一行加neg/ 在pos.txt中每一行加pos.txt并且在每一行最后增加 1 0 0 24 24 
在工作路径下手动建立一个文件夹名叫xml 
  第三步:opencv_createsamples -info pos.txt -vec pos.vec -bg neg.txt -num 600 -w 24 -h 24

  第四步:opencv_traincascade -data xml -vec pos.vec -bg neg.txt -numPos 270 -numNeg 300 -numStages 15 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -w 24 -h 24 –mode ALL


问题集锦:

  报错 :error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale 
  解决: 把face_cascade的值改为使用绝对路径cv2.CascadeClassifier(‘D:/…你的.xml路径’) 
或者在原来代码下加一行scade.load(‘D:/….你的xml路径’)

  报错:Traincascade Error: Bad argument (Can not get new positive sample. Themost possible reason is insufficient count of samples in given vec-file.)

  解决:设置的numPos过大,由于训练时pos count 会从你设置的numPos增大,每一级都按一定的次序增大,后来可能会超过样本库中正样本的个数,就会报这个错误。

另附一个:不是报错 是Stages 0-4 are loaded 原因:xml文件已经生成,需要删了重来

  警告:traincascade’s error (Required leaf false alarm rate achieved. Branch training terminated.) 
  这不是一个错误。鉴于所提供的样本设置,级联已达到其预期的潜力。需要添加更多的数据或者设置更苛刻条件。 
解决办法:-minHitRate默认设置为0.995,默认-maxFalseAlarmRate设置为0.5。这意味着对于您当前的模型,在训练过程中,允许有1000个肯定样本中有5个得到错误分类,而每个阶段需要达到个人错误接受率由0.5值表示。 
所以请尝试下列其中一项:

-minHitRate更改为0.999并使其难以达到目标。然而,这不是最好的方法,容易过度训练
更改-maxFalseAlarmRate为0.7,迫使各个阶段要更加复杂
在训练级联时,指定numPos为所有的正样本。当正样本不能用于进一步处理时,级联分类器会尝试用新样本替换掉样本。而所有正样本都加入了没有可以代替的,所以应该用numPos的较低值重新运行训练。
关于这些numPos numNeg等值的公式
vec-file number >= (numPos + (numStages-1) * (1 – minHitRate) * numPos) + S
其中vec-file number指的是正样本数
numStages默认为20
minHitRate默认设为0.95 可以增大0.999使得训练更复杂
S是负样本数

  

  报错: OpenCV Error: Insufficient memory (Failed to allocate 965425142 bytes) 
内存分配不足 我的内存是4G 尚未找到解决办法 但是发现之前自己会出现这个错误是因为路径中样本有1000 个,createsample的时候就使用1000 然后继续下面的traincascade工作使用1000就报错了。后来改为使用500才没有报错

  报错:Train dataset for temp stage can not be filled 
一般显示的acceptanceRatio 是大概这样的数值0.000412662 或者更小。但如果出现像这样 7.83885e-07 ,说明已经导致过拟合,此时要适当减小训练层数,即减小numStages的值


训练结果: 

opencv_traincascade级联训练人脸数据的更多相关文章

  1. 人脸检测及识别python实现系列(3)——为模型训练准备人脸数据

    人脸检测及识别python实现系列(3)——为模型训练准备人脸数据 机器学习最本质的地方就是基于海量数据统计的学习,说白了,机器学习其实就是在模拟人类儿童的学习行为.举一个简单的例子,成年人并没有主动 ...

  2. 百度DMLC分布式深度机器学习开源项目(简称“深盟”)上线了如xgboost(速度快效果好的Boosting模型)、CXXNET(极致的C++深度学习库)、Minerva(高效灵活的并行深度学习引擎)以及Parameter Server(一小时训练600T数据)等产品,在语音识别、OCR识别、人脸识别以及计算效率提升上发布了多个成熟产品。

    百度为何开源深度机器学习平台?   有一系列领先优势的百度却选择开源其深度机器学习平台,为何交底自己的核心技术?深思之下,却是在面对业界无奈时的远见之举.   5月20日,百度在github上开源了其 ...

  3. 利用Python sklearn的SVM对AT&T人脸数据进行人脸识别

    要求:使用10-fold交叉验证方法实现SVM的对人脸库识别,列出不同核函数参数对识别结果的影响,要求画对比曲线. 使用Python完成,主要参考文献[4],其中遇到不懂的功能函数一个一个的查官方文档 ...

  4. 万张PubFig人脸数据实现基于python+OpenCV的人脸特征定位程序(1)

    在最近刷今日头条以及其他媒体软件时,经常会发现一些AI换脸的视频,于是我想,可不可以自己实现一个可以进行人脸识别的软件程序.我的具体流程是先配合python网络爬虫先进行万张PubFig人脸公共图片的 ...

  5. opencv python训练人脸识别

    总计分为三个步骤 一.捕获人脸照片 二.对捕获的照片进行训练 三.加载训练的数据,识别 使用python3.6.8,opencv,numpy,pil 第一步:通过笔记本前置摄像头捕获脸部图片 将捕获的 ...

  6. scipy笔记—scipy.misc.imresize用法(方便训练图像数据)

    scipy.misc.imresize 不同于普通的reshape, imresize不是单纯的改变图像矩阵的维度,而是能将图片重采样为指定像素,这样给深度学习中训练图像数据带来方便. import ...

  7. 【计算机视觉】如何使用opencv自带工具训练人脸检测分类器

    前言 使用opencv自带的分类器效果并不是很好,由此想要训练自己的分类器,正好opencv有自带的工具进行训练.本文就对此进行展开. 步骤 1.查找工具文件: 2.准备样本数据: 3.训练分类器: ...

  8. opencv利用Cascade Classifier训练人脸检测器

    opencv默认提供了haar特征和lbp特征训练的人脸分类器,但是效果不太好,所以我们可以用opencv提供的跑opencv_traincascade函数来训练一个LBP特征的分类器.(由于open ...

  9. 人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型

    人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型 经过前面稍显罗嗦的准备工作,现在,我们终于可以尝试训练我们自己的卷积神经网络模型了.CNN擅长图像处理,keras库的te ...

随机推荐

  1. Tensorflow ARM交叉编译错误集锦

    版权声明:本文为博主(Jimchen)原创文章,未经博主允许不得转载. ttps://www.cnblogs.com/jimchen1218/p/11611975.html 前言: Tensorflo ...

  2. django中解决跨域问题

    -跨域问题 -浏览器的:同源策略,浏览器拒绝不是当前域域返回的数据 -ip地址和端口号都相同才是同一个域 -如何解决: -CORS:跨域资源共享 -简单请求:发一次请求 -非简单请求:非简单请求是发送 ...

  3. Linux学习笔记(九)shell基础:echo、命令别名和常用快捷键

    一.echo在屏幕上打印内容 echo [选项] [输出内容] -e 支持转义字符控制的字符转换 输出带颜色的文本 二.第一个脚本 编写脚本 注意: #!/bin/bash 此行不是注释,必须有 #! ...

  4. 14.Vue组件

    1.定义Vue组件 什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可: 组件化和模块化的不 ...

  5. linux基础--命令使用

    rpm命令 rpm -qa 包 查看包是否安装 rpm qa 列出系统安装的所有包 rpm -ql 包 查看软件包安装的位置及配置的目录 rpm -ivh 包 安装rpm包或强制安装包 rpm -Uv ...

  6. less-@arguments变量

    @arguments变量:包含了所有传递进来的参数. 如果你不想单独处理每一个参数的话可以像这样写: /*arguments*/ //之前这么写 .border_arg(@w:30px,@c:red, ...

  7. test11111111

    test 博文内容中字符过多,拒绝显示 123123123

  8. 关键字final 修饰类、方法、属性、参数类型

    笔记: /** 关键字final(最终的) 标记的类不能被继承, 提高安全性,提高程序的可读性 * 1.final 修饰类,这个类就不能被继承: 如:String类.StringBuffer类.Sys ...

  9. 程序安装时注册dsoframer.ocx控件

    我使用的是Smart Install Maker打包软件 (1)将dsoframer.ocx控件添加进 (2)添加ActiveX控件 dsoframer.ocx属于ActiveX控件,在ActiveX ...

  10. 0001SpringBoot整合Mybatis

    SpringBoot整合Mybatis主要分为以下几个步骤: 1.添加Mybatis的起步依赖(pom.xml) 2.添加数据库驱动坐标(pom.xml) 3.添加数据库连接信息(applicatio ...