正负样本格式: 
  正样本 灰度化 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. 阿里高级架构师教你使用Spring JMS处理消息事务源码案例

    消费者在接收JMS异步消息的过程中会发生执行错误,这可能会导致信息的丢失.该源码展示如何使用本地事务解决这个问题.这种解决方案可能会导致在某些情况下消息的重复(例如,当它会将信息储存到数据库,然后监听 ...

  2. hashCode 及hashcode与equals的区别

    1.hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值 详细了解请 参考 [1]  public int hashCode()返回该对象的哈希码值.支持此方法是为了提高哈 ...

  3. 新版mysql的配置文件my.ini位置

    在网上的博客上找了好久的my.ini,一直找不到.最后发现原来新版本的mysql已经不把my.ini放在原始的安装目录了.而是放在了C:/ProgramData下.

  4. [转]从Deadlock报错理解Go channel机制

    原文: https://www.jianshu.com/p/147bd63801b6 -------------------------------------- Go与其他语言不一样,它从语言层面就 ...

  5. 操作系统-chapter1

    课程:https://mooc.study.163.com/learn/1000002004?tid=2402971010&_trace_c_p_k2_=f79694c7fc04429bb9b ...

  6. 分享一个我改进过的ocr算法

    https://github.com/zhangbo2008/chineseOCR-jingjianban 欢迎大家前来拍砖

  7. POJ 2893 M × N Puzzle——八数码有解条件

    题意:给定M*N的数码图,问能否移动到最终状态 分析 有解的判定条件可见 八数码有解条件 值得一提的是,这道题求逆序对卡树状数组,只能用归并排序. #include<cstdio> #in ...

  8. 配置IIS使其支持APK文件的下载

    在管理工具里打开Internet 信息服务(IIS)管理器.然后选择需要配置的网站. 右侧的界面中会显示该网站的所有功能配置,我们选择并点击进入“MIME类型”   在左侧的操作区选择点击“添加”MI ...

  9. webdriver对各种浏览器的支持

    1.Firefox WebDriver实现了FireFoxDriver,无需用户下载FireFoxDriver. 优点:FireFoxDriver对页面的自动化测试支持得比较好,很直观地模拟页面的操作 ...

  10. 分页控件Webdiyer.MvcPager

    MVC 1.安装控件 install-package Webdiyer.MvcPager 2.Cotroller using System; using System.Collections.Gene ...