opencv_traincascade 训练自己的检测器
经过近一个月的工程实战,把自己累积的经验分享给大家,教你如何训练一个收敛的,比opencv自带的data效果好的xml。
openv有两个训练exe,一个是opencv_haartraining.exe,一个是opencv_traincascade.exe,后者是前者的新版本,一般我们都使用后者,或者有三个特征:HAAR、HOG、LBP,cascade训练,如果你的opencv么有opencv_traincascade.exe,你可以自重新编译一遍,就会生成opencv_traincascade.exe,(cmake是从新编译opencv的神器哦,还有记得把对应的opencv lib和opencv_traincascade.exe放在一起哦)。不得不提的是opencv_createsamples.exe.这个是用来生成正样本vec的。
这两个exe的 的bat如下:
opencv_createsamples.exe -info name763.dat -vec zhengmian_763.vec -num 763 -w 50 -h 55
opencv_traincascade.exe -data DATAHOG -vec 763.vec -bg negname.dat -numPos 700 -numNeg 2100 -featureType HOG -w 50 -h 55 -numStages 20
好吧,具体命令什么的有很多人都讲过了。这里不啰嗦了。讲一下我实战出来的注意事项吧:
1 关于正样本,首先正样本不是有些人说的,你实际有300个正样本,在traincascade的时候可以写成3000的,这种思路是没有用的。在采集正样本的时候你一定要注意保持所有样本宽高比大致相同,如果你自己截图,推荐使用光影魔术手。或者牛逼的你自己写个gui截图工具。为了避免出现opencv error,在用opencv_traincascade.exe的时候,-numPos要稍微低于实际的正样本数目,比如你有2100个你就可以将numpos设为1900-2000,
2 无论正样本负样本,图片命名时不要用特殊字符,你就规规矩矩的命名pos1.jpg 。。。。。等等,特殊字符包括(),会出现opencv error,或者无法识别。
3 正负样本比例1:2.5~1:3,曾经有篇文章中说,为了减小false positive ,可以加大负样本数目。
4 当出现内存不够的情况时,有几种方法:1 你可以在64为pc上跑,2 减小正负样本的数目。3 减小正样本的宽高。
经验之谈,不善之处,多提意见。
opencv_traincascade 训练自己的检测器的更多相关文章
- opencv利用Cascade Classifier训练人脸检测器
opencv默认提供了haar特征和lbp特征训练的人脸分类器,但是效果不太好,所以我们可以用opencv提供的跑opencv_traincascade函数来训练一个LBP特征的分类器.(由于open ...
- 【dlib代码解读】人脸检测器的训练【转】
转自:http://blog.csdn.net/elaine_bao/article/details/53046542 版权声明:本文为博主原创文章,转载请注明. 目录(?)[-] 综述 代码解读 ...
- 如何正确训练一个 SVM + HOG 行人检测器
这几个月一直在忙着做大论文,一个基于 SVM 的新的目标检测算法.为了做性能对比,我必须训练一个经典的 Dalal05 提出的行人检测器,我原以为这个任务很简单,但是我错了. 为了训练出一个性能达标的 ...
- 【计算机视觉】如何使用opencv自带工具训练人脸检测分类器
前言 使用opencv自带的分类器效果并不是很好,由此想要训练自己的分类器,正好opencv有自带的工具进行训练.本文就对此进行展开. 步骤 1.查找工具文件: 2.准备样本数据: 3.训练分类器: ...
- opencv_haar分类器的训练
本文为作者原创,未经允许不得转载:原文由作者发表在博客园: http://www.cnblogs.com/panxiaochun/p/5345412.html 因为工作的原因,本人需要用到分类器来检测 ...
- SIGAI机器学习第二十二集 AdaBoost算法3
讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用. AdaB ...
- 基于MATLAB的adaboost级联形式的人脸检测实现
很早之前就做过一些关于人脸检测和目标检测的课题,一直都没有好好总结出来,趁着这个机会,写个总结,希望所写的内容能给研究同类问题的博友一些见解和启发!!博客里面涉及的公式太繁琐了,直接截图了. 转载请注 ...
- KCF目标跟踪方法分析与总结
KCF目标跟踪方法分析与总结 correlation filter Kernelized correlation filter tracking 读"J. F. Henriques, R. ...
- 论文笔记(3):STC: A Simple to Complex Framework for Weakly-supervised Semantic Segmentation
论文题目是STC,即Simple to Complex的一个框架,使用弱标签(image label)来解决密集估计(语义分割)问题. 2014年末以来,半监督的语义分割层出不穷,究其原因还是因为pi ...
随机推荐
- java裁剪图片
java裁剪图片保存到指定位置 /** * 图片裁剪通用接口 * * @param src 源图片地址,图片格式PNG * @param dest 目的图片地址 * @param x 图片起始点x坐标 ...
- HDU1166 敌兵布阵_线段树
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- UVA-140 Bandwidth (回溯+剪枝)
题目大意:求一个使带宽最小的排列和最小带宽.带宽是指一个字母到其相邻字母的距离最大值. 题目分析:在递归生成全排列的过程中剪枝,剪枝方案还是两个.一.当前解不如最优解优时,减去:二.预测的理想解不必最 ...
- 关于app
刷新功能的话只需要在前端重新调用一下原来的方法即可
- 【转】socket 通信简介
转自:http://blog.csdn.net/xiaoweige207/article/details/6211577/ “一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是 ...
- 建造者模式 build
引出建造者模式: package com.disign.build; /** * Created by zhen on 2017-05-19. */ public class BuildPersonT ...
- 流程设计器jQuery + svg/vml(Demo1 - 构建设计器UI界面)
之前用Silverlight实现过一个流程设计器(Demo),使用起来不是很方便.打算参考GooFlow,结合自己对工作流的理解,用jQuery改造实现一个,力求简单实用. 第一步是要构建设计器的UI ...
- sudo-tcpdump提权法
当当前用户可以通过sudo执行tcpdump时,可以用来进行提权 tcpdump中有两个参数-z和-Z,前者用来执行一个脚本,后者用来指定tcpdump以哪个用户运行,当可以通过sudo执行时,则可以 ...
- 在Windows中配置Rsync同步
Rsync是一款不错的文件免费同步软件,可以镜像保存整个目录树和文件系统,同时保持原来文件的权限.时间.软硬链接.第一次同步时 rsync 会复制全部内容,下次只传输修改过的文件部分.传输数据过程中可 ...
- BZOJ4833: [Lydsy1704月赛]最小公倍佩尔数(min-max容斥&莫比乌斯反演)(线性多项式多个数求LCM)
4833: [Lydsy1704月赛]最小公倍佩尔数 Time Limit: 8 Sec Memory Limit: 128 MBSubmit: 240 Solved: 118[Submit][S ...