日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

OpenCV:OpenCV目标检测Boost方法单独训练

發布時間:2023/12/31 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV:OpenCV目标检测Boost方法单独训练 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????? 在古老的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方法单独训练的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。