在古老的CNN方法出现以后,并不能适用于图像中目标检测。20世纪60年代,Hubel和Wiesel( 百度百科 )在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks-简称CNN)。

参考:DNN的演进结构——CNN

AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年(Adaboost原理与推导)提出。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在 每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。

不同于同属于集成算法的随机森林算法,随机森林使用了模型平均,而boost后一层是学习前一层的残差,因此产生了“boost”功能。

boost算法的功能致力于降低模型偏差,增强学习器的准确性;随机森林使用模型平均,致力于降低模型的方差,增强模型的泛化性能

使用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 __cplusplus
extern "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方法单独训练相关推荐

  1. 【OpenCV】目标检测

      OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification).haar支持的目标有人脸.眼.嘴.鼻.身体 ...

  2. python目标检测与识别_Python 使用Opencv实现目标检测与识别的示例代码

    在上章节讲述到图像特征检测与匹配 ,本章节是讲述目标检测与识别.后者是在前者的基础上进一步完善. 在本章中,我们使用HOG算法,HOG和SIFT.SURF同属一种类型的描述符.功能代码如下: impo ...

  3. pythonopencv目标检测_Python 使用Opencv实现目标检测与识别的示例代码

    本章节是讲述目标检测与识别.后者是在前者的基础上进一步完善. 在本章中,我们使用HOG算法,HOG和SIFT.SURF同属一种类型的描述符.功能代码如下: import cv2 def is_insi ...

  4. python数据挖掘视频_python+opencv实时视频目标检测

    python+opencv实时视频目标检测 opencv环境 1.访问Python Extension Packages for Windows,下载python对应版本的opencv. 比如小编下载 ...

  5. CaDDN:基于单目的3D目标检测新方法(CVPR2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨元气满满的打工人 来源丨CV研习社 文章导读 导读:在自动驾驶的技术中,3D目标检测能够提更加丰 ...

  6. # 经典目标检测识别方法概述RCNN/FAST/FASTER RCNN/MASK RCNN/SSD/DSSD/YOLO V1/YOLO V2等

    经典目标检测识别方法概述@陈子逸 经典目标检测识别方法概述 由于水硕期间自学了一些目标探测的方法,这里做一个概述,肯定有不完美的地方,还请指正一起进步. 综述 1.分别简单描述一下RCNN系列: 在我 ...

  7. 基于深度学习 利用目标检测的方法定位瑕疵位置

    利用目标检测的方法定位瑕疵位置 通过语义分割的方法分割瑕疵(使用传统方法,如二值化等方法分割亦可) 图像分类的方法判断类别 问题:检测手机屏幕表面的瑕疵,在图中画出瑕疵位置并标明瑕疵种类.Screen ...

  8. 【ICML2022】LightNAS系列解读之一:基于最大熵原理的目标检测搜索方法MAE-Det

    本文解读我们ICML2022上发表的论文<MAE-DET: Revisiting Maximum Entropy Principle in Zero-Shot NAS for Efficient ...

  9. 处理激光雷达数据实现目标检测的方法

    处理激光雷达数据实现目标检测的方法 1.三维数据的精确性和匿名性 1.音乐节现场人数如何检测? 2.需要考虑哪些方面? 4.关于点云对象的壳体与边框 5.人们会怎么移动? 6.结果:以列表形式呈现 7 ...

最新文章

  1. Linux文件分割与合并:splitcat(转载)
  2. 求x从0到n,f(x)=x^2+1的和
  3. springboot集成neo4j
  4. 软件开发文档整理(之)一张示意图 | 清晰明了
  5. 毫秒级百万数据分页存储过程
  6. loadrunner linux 端口,Linux下loadrunner generator的安装
  7. CLion 输出遇到乱码解决办法,GBK和utf-8的转换
  8. dao传递类参数 mybatis_Mybatis (ParameterType) 如何传递多个不同类型的参数
  9. php命令执行无法重定向输出,PHP标头重定向无法正常工作
  10. SAP License:SAP传输错误所引起的系统崩溃事件反思
  11. mysql索引linke和等于_MySQL索引怎么用?秒懂只需四个点!
  12. html中c b和b s,Web开发中B/S架构和C/S架构的区别
  13. Redis 的操作为什么是的原子性的详解
  14. 免费真实增加网站访问量的方法
  15. Keil代码折来叠功能显示与隐藏!!!
  16. 西班牙国家德比次回合时间确定 中国球迷需熬夜
  17. happen-before是什么
  18. word批注怎么删除计算机名字,word 2007 如何删除批注者姓名?
  19. COB,COF,COG区别
  20. 乐游api接口平台(接口商)

热门文章

  1. su命令 sudo命令 限制root远程登录
  2. RHCSA 系列(十四): 在 RHEL 7 中设置基于 LDAP 的认证
  3. 新的博客 bincoding.github.io
  4. 网站被写入恶意代码的主要原因及防范策略
  5. android wifi工作流程
  6. 二、逻辑回归算法梳理
  7. fatal: remote origin already exists.解决方法
  8. ML numpy、pandas、matplotlib的使用
  9. Django Cookie于Session
  10. centos7下kubernetes(18。kubernetes-健康检查)