OpenCV:OpenCV目标检测Boost方法训练
来源:互联网 发布:淘宝卖家骂人怎么投诉 编辑:程序博客网 时间:2024/05/30 04:34
在古老的CNN方法出现以后,并不能适用于图像中目标检测。20世纪60年代,Hubel和Wiesel( 百度百科 )在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks-简称CNN)。
参考:DNN的演进结构——CNN
AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年(Adaboost原理与推导)提出。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在 每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。
使用OpenCV作图像检测, Adaboost+haar训练过程,工程已经生成了opencv_haartraining.exe文件。
打开OpenCV的源码工程,发现函数调用栈是这样的。
1、对OpenCV源代码载入工程
源代码apps里面opencv_haartraining 工程的sources\apps\haartraining\haartraining.cpp
main函数使用了cvCreateTreeCascadeClassifier()函数,函数体在\sources\apps\haartraining\cvhaartraining.cpp文件
在cvhaartraining.h 前面添加 #define cvBoost_API __declspec (dllexport)
函数名
void cvCreateTreeCascadeClassifier(const char* dirname,const char* vecfilename,const char* bgfilename,int npos, int nneg, int nstages,int numprecalculated,int numsplits,float minhitrate, float maxfalsealarm,float weightfraction,int mode, int symmetric,int equalweights,int winwidth, int winheight,int boosttype, int stumperror,int maxtreesplits, int minpos, bool bg_vecfile = false);
修改为:
#ifdef __cplusplusextern "C"{#endifcvBoost_API void __stdcall cvCreateTreeCascadeClassifier(const char* dirname,const char* vecfilename,const char* bgfilename,int npos, int nneg, int nstages,int numprecalculated,int numsplits,float minhitrate, float maxfalsealarm,float weightfraction,int mode, int symmetric,int equalweights,int winwidth, int winheight,int boosttype, int stumperror,int maxtreesplits, int minpos, bool bg_vecfile = false);}
对应函数体的头修改为:
cvBoost_API void cvCreateTreeCascadeClassifier(const char* dirname,//__declspec (dllimport) void __stdcall cvCreateTreeCascadeClassifier(const char* dirname, const char* vecfilename, const char* bgfilename, int npos, int nneg, int nstages, int numprecalculated, int numsplits, float minhitrate, float maxfalsealarm, float weightfraction, int mode, int symmetric, int equalweights, int winwidth, int winheight, int boosttype, int stumperror, int maxtreesplits, int minpos, bool bg_vecfile ){}
去掉opencv_haartraining 工程的main函数,
修改opencv_haartraining 工程exe 替换为 dll工程,则可以生成lib和dll文件,可添加引用。
(若不生成lib文件,则表示在opencv_haartraining_engine.lib 中导出了函数声明,需要引用此库)
函数体为:
CNN 维基百科:https://en.wikipedia.org/wiki/Convolutional_neural_network
Adaboost维基百科: https//en.wikipedia.org/wiki/AdaBoost
- OpenCV:OpenCV目标检测Boost方法训练
- Opencv运动目标检测常用方法
- 目标检测之训练opencv自带的分类器
- OpenCV自带的adaboost程序训练并检测目标
- opencv cascade训练LBP特征进行目标检测
- Opencv目标检测之级联分类器训练与测试
- OpenCV运动目标检测
- opencv 运动目标检测
- 目标检测 OpenCV
- 【OpenCV】目标检测
- opencv神经网络训练时的目标矩阵构建方法
- opencv目标检测算法资源
- opencv 模板匹配目标检测
- python opencv检测目标颜色
- 应用OpenCV检测自定义目标
- 如何用OpenCV自带的adaboost程序训练并检测目标
- 如何用OpenCV自带的adaboost程序训练并检测目标
- 目标检测之训练opencv自带的分类器(opencv_haartraining 或 opencv_traincascade)
- 使用SqlBulkCopy将DataTable中的数据批量插入数据库中
- 三元表达式的巧妙运用
- 网络学习起步
- Java反射机制
- java 导出报表到excel
- OpenCV:OpenCV目标检测Boost方法训练
- python3中global 和 nonlocal 的作用域
- 百度DNS/阿里DNS/114DNS/谷歌DNS/OpenDNS 对比评测
- java之用volatile和不用volatile的区别
- ridis集群安装
- The constructor UrlEncodedFormEntity(List<NameValuePair>, String) is undefined
- Codeforces Gym 100803C Shopping 贪心好题
- Wampserver安装redis
- 什么是SequenceInputStream:序列流