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 ...
随机推荐
- ActiveRecord 惰性加载,和使用gem faker
rails console后: 2.1.4 :001 > User # => User (call 'User.connection' to establish a connection) ...
- Leetcode 18
class Solution { public: vector<vector<int>> fourSum(vector<int>& nums, int ta ...
- 第一个mpvue小程序开发总结
前言 说起小程序,其实在去年我都还只试着照着官方文档写过demo的,不过现在这家公司小程序做得比较多,我来之后也参与了几个小程序的开发了,最开始那几个是用的wepy,最近一个开始转用mpvue开发,最 ...
- PHP:第五章——字符串与数组及其他函数
<?php header("Content-Type:text/html;charset=utf-8"); //1.str_split——将字符串转换为数组. /*$str= ...
- html绘制三角形(兼容IE6)
.sanjiao { width:; height:; overflow: hidden; border-width: 10px; border-color: red transparent tran ...
- 认识Applet和Ajax
一.Applet 1.Applet的定义:Applet是采用Java编程语言编写的小应用程序,该程序可以包含在HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同. Java写出 ...
- python 安装psutil包报错:
报错: Failed building wheel for psutil Google得知,需要安装python-devel 和 wheel sudo dnf install python-devel ...
- Redis学习笔记-数据操作篇(Centos7)
一.基本操作 1.插入数据 127.0.0.1:6379> set name cos1eqlg0 OK 这样就在redis中设置了一个key-value键值对 2.查询数据 127.0.0.1: ...
- 第2本MATLAB书
前面看的<DSP using MATLAB>后面还有两章,其内容太难了,看不下去,暂时放放: 因为工作中需要MATLAB和电磁场的相关知识,从网上找了本 初步翻了翻,里面有代码有图片,英文 ...
- 对Linux内核中进程上下文和中断上下文的理解
内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间.现代的CPU都具有不同的操作模式,代表不同的 级别,不同的级别具有不同的功能,在较低的级别中将禁止某 ...