利用Opencv中的Haartraining訓練特徵的經驗談…..

來源:互聯網
上載者:User

最近需要熟悉一下haar特徵,帶著一個師妹熟悉一下從特徵提取到訓練的整個過程。

第一次接觸,熟悉玩haar特徵和adaboost原理後。實驗開始了

實驗中採用了MIT CACL人臉的資料庫。

實驗中產生樣本資料的命令如下:

char order0[1024] = "opencv_createsamples.exe \-vec pos.vec \-info faces\\faces.txt \-w 20 \-h 20 \-num 2000";

這一步一般都沒有問題

之後就是資料訓練了,命令如下:

char order[1024] = "opencv_haartraining.exe \-data test \-vec pos.vec \-bg nonfaces\\nonfaces.txt \-minhitrate 0.995 \-maxfalsealarm 0.45 \-nstages 15\-npos 2000 \-nneg 3000 \-w 20 \-h 20 \-nonsym \-mem 1024 \-mode basic \-noeqw";

這裡預設的nstegas為14,因此minhitrate一般最好大於0.99

訓練中總是在運行到7或8層的時候停住,有時候等上一上午也不見進展

翻閱很多網友的報告後,總結如下:

1、正負樣本比例

2、反例樣本的品質

3、記憶體的大小

分析了半天,有看了看adaboost原理

如果負樣本品質不高,也就是說負樣本跟正樣本的相似性不大,那麼在訓練的過程中:

正檢測率為1,負檢測率為0,程式金輝進入死迴圈。

因為每一層的訓練,都會有新的負樣本補充進來,形成新的訓練樣本。

而越是進行到後面的迭代負樣本的品質要求越高

要是相似性太大或者負樣本少了,都有可能造成死迴圈。

因此我修改了負樣本,加入了很多差別比較大的突破,最終達到了8000+

訓練很快就完成了(用伺服器跑的)

最後實驗的效果也不錯,檢測速率和效果也說不錯的。

實驗的程式給大家貼出來,就不用老進dos了。

#include <windows.h>#include <cstring>#include <iostream>#include <stdio.h>#include <string.h>#include <ctype.h>using namespace std;char order[1024] = "opencv_haartraining.exe \-data test \-vec pos.vec \-bg nonfaces\\nonfaces.txt \-minhitrate 0.95 \-maxfalsealarm 0.45 \-nstages 15\-npos 2000 \-nneg 3000 \-w 20 \-h 20 \-nonsym \-mem 1024 \-mode basic \-noeqw";char order0[1024] = "opencv_createsamples.exe \-vec pos.vec \-info faces\\faces.txt \-w 20 \-h 20 \-num 100";int main(){//cout<<order<<endl;system(order0);system(order);return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.