乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      OpenCV訓(xùn)練分類器制作xml文檔

       xinminima 2014-04-11

      opencv 2.1網(wǎng)上查的另一種資料

      訓(xùn)練分類器成功,在此與大家分享。

      參考英文資料網(wǎng)址: http://note./SciSoftware/haartraining.html#e134e74e

      樣本訓(xùn)練要求

      1、杯子的背景要統(tǒng)一嗎,因?yàn)橛行┍尘笆前咨行┦堑谋尘吧?,還有些深色的背景色

      答:背景色要統(tǒng)一

      2、整個(gè)圖的大小就是最外面一個(gè)框框起來那么大,

      問題是:我需要在原圖基礎(chǔ)上截圖嗎,如:只把紅框框起來的那部分截出來???

      答:不用的

      3、那圖片是256色的還是彩色的呢?

      答:灰度最佳

      5、一般來說,訓(xùn)練分類器用的什么 圖片 就用什么 圖片作測(cè)試
      即來源圖片分別用于訓(xùn)練和測(cè)試

      6、那正樣本選擇方面有沒有要求,如玻璃杯
      當(dāng)然有要求。

      最好各種形狀的玻璃杯有樣本,每種玻璃杯從不同角度拍攝的樣本都有
      7、那網(wǎng)上截些有關(guān)玻璃杯的圖可以嗎?大小是要?dú)w一化的
      可以的。網(wǎng)上的圖像實(shí)際上也來源于生活或科研拍攝的

      其實(shí)可以不是圖片的歸一化,還可以是特征的歸一化
      歸一化的話可以根據(jù)緩需求,不同應(yīng)用場(chǎng)合就有不同的歸一化方法

      8、那關(guān)于杯子這個(gè)正樣本,我要弄大約多少?gòu)垐D片呀?
      樣本要多,當(dāng)然并不是越多越好,而是每一張都有代表性能反映一定意義

      9、負(fù)樣本最好含有正樣本中的背景部分

      訓(xùn)練失敗的原因很多:

      1、負(fù)樣本數(shù)目太少,導(dǎo)致Adaboost算法漢有跳出死循環(huán),

      2、負(fù)樣本之間重復(fù)部分過多,或正樣本尺寸過大,導(dǎo)致訓(xùn)練分類器時(shí)內(nèi)在溢出。

      .vec文件里的東西是用二進(jìn)制的形式表示的。
      首先寫的是樣本的數(shù)量,然后是樣本大小width*height,后面就是圖片像素值。

      在opencv下的cvsamples.cpp就能看的很清楚了。

      本文現(xiàn)在正在做人頭檢測(cè)。視頻中的人頭尺寸,光照,角度都很不相同。
      1. 請(qǐng)問haar訓(xùn)練中正樣本是不是只能是在光照尺寸和角度都一致的情況下進(jìn)行訓(xùn)練?
      正樣本的光照可以是有變化的,正樣本應(yīng)該保留一些樣本以外的背景,但不能過大,角度的話,人臉轉(zhuǎn)90度都還可以接受。
      其實(shí)你正樣本的種類(不同角度.不同光照.不同人臉)越多,就需要更多的矩形特徵來作分類。

      2.正負(fù)樣本需要一樣的大小么?
      人臉建議使用20*20,大小要盡量統(tǒng)一,這樣在做Description txt file時(shí),比較方便。人臉在圖片中的位置盡量也相同。

      3.有人說正負(fù)樣本數(shù)量比例最好是7:3,也有人說正負(fù)樣本須一樣多。這是怎么回事?
      我怎麼聽說 正:負(fù)=1:3比較好。建議你可以先試試看1000:3000應(yīng)該不用花太多時(shí)間訓(xùn)練。

      4.在訓(xùn)練中,本人發(fā)現(xiàn)了一種情況:如果正負(fù)樣本差別較小,即負(fù)樣本從待檢測(cè)視頻圖像中的背景獲取,并且與正樣本一樣大的話,訓(xùn)練就會(huì)在某一個(gè)節(jié)點(diǎn)上停下來,并且?guī)滋煲策^不了這個(gè)節(jié)點(diǎn);而如果負(fù)樣本與正樣本差別很大(尺寸與取樣上都差別很大)的話,訓(xùn)練結(jié)束比較快,但是用得到的xml文件去做檢測(cè)的話,效果很不好。請(qǐng)問這是不是矛盾,該怎么解決?
      正負(fù)樣本照理說應(yīng)該不會(huì)差別不大,除非你是要偵測(cè)笑臉/非笑臉,另外可能是你負(fù)樣本太少,所以false alarm數(shù)值太高,所以haartraining 沒有正常terminate

      5.參數(shù)stage一般設(shè)置多大?
      我目前使用如下指令
      opencv_haartraining.exe -data "d:\training0421\20s" -vec "d:\training0421\positive\positives.vec" -bg "d:\training0421\negative\negative.txt" -npos 1681 -nneg 3406 -nstages 20 -nsplits 2 -minhitrate 0.995 -maxfalsealarm 0.5 -mode ALL -mem 2000 -w 20 -h 20
      使用profermance來測(cè)試原始訓(xùn)練樣本(200*200p)可以有八成的hitrate,false大概幾十個(gè)。

      整個(gè)過程分為兩步:

      1. 創(chuàng)建樣本

      2. 訓(xùn)練分類器

      3、 利用訓(xùn)練好的分類器進(jìn)行目標(biāo)檢測(cè)。

      現(xiàn)在讓我一一講述。

      1. 創(chuàng)建樣本

      ◆ 樣本分兩種: 正樣本與負(fù)樣本(也有人翻譯成:正例樣本和反例樣本),其中正樣本是指待檢目標(biāo)樣本(例如人臉,汽車,鼻子等),負(fù)樣本指其它任意圖片。

      ◆ 所有樣本圖片都應(yīng)該有同一尺寸,如20 * 20,并放在相應(yīng)文件目錄下,

      ◆ 集合文件格式(collection file format)和描述文件格式(description file format)

      集合文件格式(collection file format)就是如下形的描述文件:

      [filename]

      [filename]

      [filename]

      描述文件格式(description file format)就是如下形的描述文件:

      [filename] [# of objects] [[x y width height] [... 2nd object] ...]

      [filename] [# of objects] [[x y width height] [... 2nd object] ...]

      [filename] [# of objects] [[x y width height] [... 2nd object] ...]

      ….

      (x, y) 指左上角的坐標(biāo),width和 height 分別是樣本的寬和高,這里我的圖片是20*20的,所以兩個(gè)值都是20

      負(fù)樣本用集合文件格式描述,正樣本用描述文件格式描述!(這點(diǎn)網(wǎng)上很多文章都搞錯(cuò)了?。?

      ▼創(chuàng)建樣本步驟:

      一. 把所有正樣本圖片放在posdata的文件夾下,把所有負(fù)樣本圖片放在negdata文件夾下

      (這里我以人臉圖片樣本為例)

      (注:以上這些 20*20 的圖片均來自MIT人臉庫(kù),可以在csdn下載)

      二. 分別為正樣本和負(fù)樣本創(chuàng)建描述文件

      A. 為正樣本創(chuàng)建描述文件格式文件info.txt,并且把這個(gè)文件放在與樣本圖片同一目錄下,例如我的目錄為C:/OpenCV2.1/bin/posdata

      a) 在命令行下 輸入以下命令: dir /b > info.txt

      b) 打開info.txt, 按ctrl+h, 把所有的bmp 換成 bmp 1 0 0 20 20

      c) 刪除info.txt最后一行的 “info.txt”

      d) 結(jié)果如下:(1代表一個(gè)文件,0 0 20 20表示這個(gè)文件的2個(gè)頂點(diǎn)位置坐標(biāo))

      B. 為負(fù)樣本創(chuàng)建集合文件格式文件bg.txt, 并且把這個(gè)文件放在與樣本圖片同一目錄下,例如我的目錄為I:/negdata

      a) 在命令行下 輸入以下命令: dir /b > bg.txt

      b) 刪除bg.txt最后一行的 “bg.txt”

      c) 結(jié)果如下:

      三. 創(chuàng)建樣本。

      Opencv 自帶有創(chuàng)建樣本的exe 文件,在 …/OpenCV2.1/bin 目錄下, 這里我創(chuàng)建120個(gè)sample:

      命令是: opencv_createsamples.exe -info e:\test\posdata0\info.txt -vec e:\test\posdata0\pos.vec -num 120 -w 20 -h 20

      如圖:

      結(jié)果如圖:

      (關(guān)于 opencv_createsamples.exe 的參數(shù)用法,在參考英文資料網(wǎng)址http://note./SciSoftware/haartraining.html#e134e74e,里有詳細(xì)介紹;

      需要說明的是,我這里用的參數(shù)并沒有 –bg, 因?yàn)楦鶕?jù)那份文檔,有了 –vec 和 –info 之后,就表示:Create training samples from some (從很多正樣本中創(chuàng)建sample, 沒有distortions)

      經(jīng)歷千辛萬苦,我們終于看到sample被創(chuàng)建成功了,接下來的工作就簡(jiǎn)單多了

      ▼訓(xùn)練分類器

      還是在…/OpenCV2.1/bin目錄下,輸入命令:

      opencv_haartraining.exe -data e:\test\data0\cascade0 -vec e:\test\posdata0\pos.vec -bg e:\test\negdata0\negdata0.txt -npos 120 -nneg 120 -nsplits 2 -mem 512 -nonsym -w 20 -h 20 -minpos 100 -nstages 4

      回車

      (注意:

      1. 參數(shù)-vec 一定要是剛剛創(chuàng)建樣本產(chǎn)生的a.vec,且把完整路徑也寫上去,我試過用相對(duì)路徑,但總會(huì)訓(xùn)練失??; bg.txt 也要用絕對(duì)路徑;

      .vec文件里的東西是用二進(jìn)制的形式表示的。
      首先寫的是樣本的數(shù)量,然后是樣本大小width*height,后面就是圖片像素值。

      在opencv下的cvsamples.cpp就能看的很清楚了。

      2. –w 和 –h 都要寫上與樣本大小的一致的尺寸

      3. 若遇到“內(nèi)存什么不能read”的問題,很有可能是bg.txt的格式有誤,回去

      4. 關(guān)于 opencv_haartraining.exe 的參數(shù)用法,在參考英文資料網(wǎng)址http://note./SciSoftware/haartraining.html#e134e74e,里有詳細(xì)介紹

      結(jié)果如下:

      (可能實(shí)際結(jié)果與上圖有出入, 但看到最后的 ,就說明訓(xùn)練成功了。

      在E:\test\data0目錄會(huì)生成一份cascade0.xml文檔,這個(gè)就是我們想要的結(jié)果了!

      ============================================================================

      OpenCV訓(xùn)練分類器制作xml文檔之一

      我的問題:有了opencv自帶的那些xml人臉檢測(cè)文檔,我們就可以用cvLoad()這個(gè)函數(shù)加載他們,讓他們對(duì)我們的人臉進(jìn)行檢測(cè),但是,現(xiàn)在生活中的計(jì)算機(jī)視覺并不遠(yuǎn)遠(yuǎn)是檢測(cè)人臉,還有很多物品需要識(shí)別,所以,能不能自己做個(gè)xml的檢測(cè)文檔,用它來檢測(cè)自己需要的東西呢?例如,檢測(cè)一個(gè)可樂瓶!
      問題解決:
      首先了解下,目標(biāo)檢測(cè)分為三個(gè)步驟:
      1、 樣本的創(chuàng)建
      2、 訓(xùn)練分類器
      3、 利用訓(xùn)練好的分類器進(jìn)行目標(biāo)檢測(cè)。
      一,樣本的創(chuàng)建:

      (1)收集訓(xùn)練樣本:

      訓(xùn)練樣本包括正樣本和負(fù)樣本。正樣本,通俗點(diǎn)說,就是圖片中只有你需要的目標(biāo)。而負(fù)樣本的圖片只要其中不含有目標(biāo)就可以了。但需要說明的是,負(fù)樣本也并非隨便選取的。例如,你需要檢測(cè)的目標(biāo)是汽車,那么正樣本就應(yīng)該是僅僅含有汽車的圖片,而負(fù)樣本顯然不能是一些包含天空的,海洋的,風(fēng)景的圖片。因?yàn)槟阕罱K訓(xùn)練分類器的目的是檢測(cè)汽車,而汽車應(yīng)該出現(xiàn)在馬路上。也就是說,分類器最終檢測(cè)的圖片應(yīng)該是那些包含馬路,交通標(biāo)志,建筑物,廣告牌,汽車,摩托車,三輪車,行人,自行車等在內(nèi)的圖片。很明顯,這里的負(fù)樣本應(yīng)該是包含摩托車、三輪車、自行車、行人、路面、灌木叢、花草、交通標(biāo)志、廣告牌等。

      另外,需要提醒的是,adaboost方法也是機(jī)器學(xué)習(xí)中的一個(gè)經(jīng)典算法,而機(jī)器學(xué)習(xí)算法的前提條件是,測(cè)試樣本和訓(xùn)練樣本獨(dú)立同分布。所謂的獨(dú)立同分布,可以簡(jiǎn)單理解為:訓(xùn)練樣本要和最終的應(yīng)用場(chǎng)合非常接近或者一致。否則,基于機(jī)器學(xué)習(xí)的算法并不能保證算法的有效性。此外,足夠的訓(xùn)練樣本(至少得幾千張正樣本、幾千張負(fù)樣本)也是保證訓(xùn)練算法有效性的一個(gè)前提條件。

      訓(xùn)練樣本分為正例樣本和反例樣本,其中正例樣本是指待檢目標(biāo)樣本(例如可樂瓶,人臉等),反例樣本指其它任意圖片,所有的樣本圖片都被歸一化為同樣的尺寸大小(例如,20x20)。
      1 、負(fù)樣本(反例樣本)可以來自于任意的圖片,但這些圖片不能包含目標(biāo)特征。
      負(fù)樣本由背景描述文件來描述。背景描述文件是一個(gè)文本文件,每一行包含了一個(gè)負(fù)樣本圖片的文件名(基于描述文件的相對(duì)路徑)。該文件必須手工創(chuàng)建。
      2,正樣本
      現(xiàn)在,我們來看正樣本的創(chuàng)建步驟:

      正樣本由程序createsample程序來創(chuàng)建。該程序的源代碼由OpenCV給出,并且在bin目錄下包含了這個(gè)可執(zhí)行的程序
      正樣本可以由單個(gè)的目標(biāo)圖片或者一系列的事先標(biāo)記好的圖片來創(chuàng)建。
      createsamples程序的命令行參數(shù):
      命令行參數(shù):
      vec <vec_file_name>
      訓(xùn)練好的正樣本的輸出文件名。
      img<image_file_name>
      源目標(biāo)圖片(例如:一個(gè)公司圖標(biāo))
      bg<background_file_name>
      背景描述文件。
      num<number_of_samples>
      要產(chǎn)生的正樣本的數(shù)量,和正樣本圖片數(shù)目相同。 maxidev<max_intensity_deviation>
      背景色最大的偏離度。
      maxangel<max_x_rotation_angle>
      maxangle<max_y_rotation_angle>,
      maxzangle<max_x_rotation_angle>
      最大旋轉(zhuǎn)角度,以弧度為單位。
      show
      如果指定,每個(gè)樣本會(huì)被顯示出來,按下"esc"會(huì)關(guān)閉這一開關(guān),即不顯示樣本圖片,而創(chuàng)建過程繼續(xù)。這是個(gè)有用的debug選項(xiàng)。
      w<sample_width>
      輸出樣本的寬度(以像素為單位)
      h<sample_height>
      輸出樣本的高度,以像素為單位。
      注:正樣本也可以從一個(gè)預(yù)先標(biāo)記好的圖像集合中獲取。這個(gè)集合由一個(gè)文本文件來描述,類似于背景描述文件。每一個(gè)文本行對(duì)應(yīng)一個(gè)圖片。每行的第一個(gè)元素是圖片文件名,第二個(gè)元素是對(duì)象實(shí)體的個(gè)數(shù)。后面緊跟著的是與之匹配的矩形框(x , y ,寬度,高度)。
      下面是一個(gè)創(chuàng)建樣本的例子:
      假定我們要進(jìn)行人臉的檢測(cè),有18個(gè)正樣本圖片文件face00001.bmp,…face00100.bmp;有45個(gè)背景圖片文件:B1_00001.bmp, …B1_00200.bmp,文件目錄結(jié)構(gòu)如下:
      e:\test\negdata\
      face0001.bmp

      ……
      face0018.bmp

      info.txt

      e:\test\posdata

      B1_001.bmp

      ……
      B1_0045.bmp
      negdata.dat
      正樣本描述文件info.txt的內(nèi)容如下:
      face00001.bmp 1 0 0 20 20
      ……
      face00100.bmp 1 0 0 20 20

      背景(負(fù)樣本)描述文件negdata.txt的內(nèi)容如下:
      B1_00001.bmp ……
      B1_00200.bmp

      圖片imag1.bmp包含了單個(gè)目標(biāo)對(duì)象實(shí)體,矩形為(0,0,20,20)。
      注意:要從圖片集中創(chuàng)建正樣本,要用-info參數(shù)而不是用-img參數(shù)。

      info <collect_file_name>
      標(biāo)記特征的圖片集合的描述文件。cmd窗口下來進(jìn)行樣本的創(chuàng)建:

      C:\Program Files\OpenCV\bin>createsamples -info e:\test\posdata\info.txt -vec e:\test\posdata\pos.vec -num 18 -w 20 -h 20【解釋下】。。。。

      小貼士1:

      可以采用Dos命令生成樣本描述文件(一般樣本圖片上萬幅),Dos下進(jìn)入圖片目錄,輸入dir /b *.bmp > negdata.txt, 則會(huì)在此目錄中產(chǎn)生一個(gè)negdata.txt,文件中包含所有當(dāng)前目錄下的文件名,就可以建成負(fù)樣本描述文件。對(duì)于正樣本描述文件,方法同負(fù)樣本,只要把bmp替換成1 0 0 20 20即可。如果樣本圖片太多,在txt中替換會(huì)導(dǎo)致程序無法響應(yīng),可以先把內(nèi)容拷貝到word中替換后再拷貝回來。

      小貼士2:

      一些處理后的人臉圖片的網(wǎng)址
      http://vasc.ri./idb/html/face/frontal_images/

      http://www./challenges/VOC/databases.html#VOC2005_1

      三、訓(xùn)練分類器
      樣本創(chuàng)建之后,接下來要訓(xùn)練分類器,這個(gè)過程是由haartraining程序來實(shí)現(xiàn)的。該程序源碼由OpenCV自帶,且可執(zhí)行程序在OpenCV安裝目錄的bin目錄下。
      Haartraining的命令行參數(shù)如下:
      data<dir_name>
      存放訓(xùn)練好的分類器的路徑名。
      vec<vec_file_name>
      正樣本文件名(由trainingssamples程序或者由其他的方法創(chuàng)建的)
      bg<background_file_name>
      背景描述文件。
      npos<number_of_positive_samples>,
      nneg<number_of_negative_samples>
      用來訓(xùn)練每一個(gè)分類器階段的正/負(fù)樣本。合理的值是:nPos = 7000;nNeg = 3000
      nstages<number_of_stages>
      訓(xùn)練的階段數(shù)。
      nsplits<number_of_splits>
      決定用于階段分類器的弱分類器。如果1,則一個(gè)簡(jiǎn)單的stump classifier被使用。如果是2或者更多,則帶有number_of_splits個(gè)內(nèi)部節(jié)點(diǎn)的CART分類器被使用。
      mem<memory_in_MB>
      預(yù)先計(jì)算的以MB為單位的可用內(nèi)存。內(nèi)存越大則訓(xùn)練的速度越快。
      symdefault
      nonsym
      指定訓(xùn)練的目標(biāo)對(duì)象是否垂直對(duì)稱。垂直對(duì)稱提高目標(biāo)的訓(xùn)練速度。例如,正面部是垂直對(duì)稱的。
      minhitrate<min_hit_rate>
      每個(gè)階段分類器需要的最小的命中率??偟拿新蕿?/span>min_hit_ratenumber_of_stages次方。
      maxfalsealarm<max_false_alarm_rate>
      沒有階段分類器的最大錯(cuò)誤報(bào)警率??偟腻e(cuò)誤警告率為max_false_alarm_ratenumber_of_stages次方。
      weighttrimming<weight_trimming>
      指定是否使用權(quán)修正和使用多大的權(quán)修正。一個(gè)基本的選擇是0.9
      eqw
      mode<basic(default)|core|all>
      選擇用來訓(xùn)練的haar特征集的種類。basic僅僅使用垂直特征。all使用垂直和45度角旋轉(zhuǎn)特征。
      w<sample_width>
      h<sample_height>
      訓(xùn)練樣本的尺寸,(以像素為單位)。必須和訓(xùn)練樣本創(chuàng)建的尺寸相同。
      一個(gè)訓(xùn)練分類器的例子:

      C:\Program Files\OpenCV\bin>haartraining -data e:\test\data\cascade -vec e:\test\posdata\pos.vec -bg e:\test\negdata\negdata.txt -npos 18 -nneg 45 -nsplits 1 -mem 512 -mode ALL -w 20 -h 20 -minhitrage 0.998 -maxfalsealarm 0.5 -nstages

      訓(xùn)練開始,如下圖,可能會(huì)一小段時(shí)間才訓(xùn)練完成。

      (可能實(shí)際結(jié)果與上圖有出入, 但看到最后的 ,就說明訓(xùn)練成功了。

      在bin目錄會(huì)生成一份可愛的data.xml文檔,這個(gè)就是我們想要的結(jié)果了!

      訓(xùn)練結(jié)束后,會(huì)在目錄data下生成一些子目錄,即為訓(xùn)練好的分類器。

      訓(xùn)練結(jié)束后,還要使用haarconv.exe生成xml文件,可以通過下列網(wǎng)頁(yè)下載。

      http://www./forum/viewtopic.php?t=5181

      重要!可能遇到的問題:

      1.如果跑到某一個(gè)分類器時(shí),幾個(gè)小時(shí)也沒有反應(yīng),而且顯示不出訓(xùn)練百分比,這是因?yàn)槟愕呢?fù)樣本數(shù)量太少,或者負(fù)樣本的尺寸太小,所有的負(fù)樣本在這個(gè)分類器都被reject了,程序進(jìn)入不了下一個(gè)循環(huán),果斷放棄吧。解決方法:負(fù)樣本盡量要大一些,比如我的正樣本是40*15,共300個(gè),負(fù)樣本是640*480,共500個(gè)。(我當(dāng)時(shí)的錯(cuò)誤就出現(xiàn)在這,把負(fù)本改大后,就成功了)

      2.讀取樣本時(shí)報(bào)錯(cuò):Negative or too large argument of CvAlloc function,網(wǎng)上說這個(gè)錯(cuò)誤是因?yàn)閛pencv規(guī)定單幅iplimage的內(nèi)存分配不能超過10000,可是我的每個(gè)負(fù)樣本都不會(huì)超過這個(gè)大小,具體原因不明。后來我把負(fù)樣本的數(shù)量減少,尺寸加大,這個(gè)問題就解決了。

      3.訓(xùn)練的過程可能經(jīng)常出錯(cuò),耐心下來不要著急,我在訓(xùn)練MRI分類器的時(shí)候失敗了無數(shù)次。失敗的時(shí)候有兩件事可以做,第一,調(diào)整正負(fù)樣本的數(shù)量,再試。第二,調(diào)整負(fù)樣本的大小,祝大家好運(yùn)。

      =============================================================================================

      opencv haar訓(xùn)練--訓(xùn)練樣本(4)

      1.海爾訓(xùn)練
      現(xiàn)在,我們使用haartraining.exe來訓(xùn)練我們自己的分類器。訓(xùn)練語句如下:

      1. Usage: ./haartraining
      2. -data <dir_name>
      3. -vec <vec_file_name>
      4. -bg <background_file_name>
      5. [-npos <number_of_positive_samples = 2000>]
      6. [-nneg <number_of_negative_samples = 2000>]
      7. [-nstages <number_of_stages = 14>]
      8. [-nsplits <number_of_splits = 1>]
      9. [-mem <memory_in_MB = 200>]
      10. [-sym (default)] [-nonsym]
      11. [-minhitrate <min_hit_rate = 0.995000>]
      12. [-maxfalsealarm <max_false_alarm_rate = 0.500000>]
      13. [-weighttrimming <weight_trimming = 0.950000>]
      14. [-eqw]
      15. [-mode <BASIC (default) | CORE | ALL>]
      16. [-w <sample_width = 24>]
      17. [-h <sample_height = 24>]
      18. [-bt <DAB | RAB | LB | GAB (default)>]
      19. [-err <misclass (default) | gini | entropy>]
      20. [-maxtreesplits <max_number_of_splits_in_tree_cascade = 0>]
      21. [-minpos <min_number_of_positive_samples_per_cluster = 500>]


      Kuranov et. al. 指出,20*20的樣本識(shí)別的正確率最高。另外,對(duì)于18*18的尺寸,四分裂節(jié)點(diǎn)表現(xiàn)最好。而對(duì)于20*20的樣本,兩節(jié)點(diǎn)顯然更好。分裂節(jié)點(diǎn)數(shù)分別是2、3或4的弱樹分類器間的差小于它們的中間節(jié)點(diǎn)。
      此外,關(guān)于20階訓(xùn)練有個(gè)說法。假設(shè)我的測(cè)試集合代表了學(xué)習(xí)任務(wù),我可以期望一個(gè)報(bào)錯(cuò)率是0.5^20≈9.6e-07,識(shí)對(duì)率是0.999^20≈0.98。
      所以,使用20*20的樣本大小,并且Nsplit=2, Nstages=20, MINhitrate=0.9999(default: 0.995), MAXfalsealarm=0.5(default: 0.5), weighttrimming=0.95(default: 0.95)是比較優(yōu)的組合。

      1. $ haartraining -data haarcascade -vec samples.vec -bg negatives.dat -nstages 20 -nsplits 2 -minhitrate 0.999 -maxfalsealarm 0.5 -npos 7000 -nneg 3019 -w 20 -h 20 -nonsym -mem 512 -mode ALL


      "-nonsym"選項(xiàng)用于沒有垂直(左-右)對(duì)稱的對(duì)象類。如果對(duì)象類是垂直對(duì)稱的,例如正臉,則用"-sym (default)"。這樣會(huì)增大運(yùn)算速度,因?yàn)轭惡柼卣髦挥幸话胪度胧褂谩?br>"-mode ALL"使用了類海爾特征的擴(kuò)展集。默認(rèn)只使用豎直特征,ALL除了能使用豎直特征,還能使用轉(zhuǎn)角為45°的特征集合。
      "-mem 512"是以MB為單位的預(yù)計(jì)算可使用的內(nèi)存大小。默認(rèn)是200MB。
      另外還有一些選項(xiàng)沒有用到:

      1. [-bt <DAB | RAB | LB | GAB (default)>]
      2. [-err <misclass (default) | gini | entropy>]
      3. [-maxtreesplits <max_number_of_splits_in_tree_cascade = 0>]
      4. [-minpos <min_number_of_positive_samples_per_cluster = 500>]


      #你可以使用OpenMP(multi-processing).
      #一次訓(xùn)練持續(xù)三天。

      2.生成XML文件
      當(dāng)海爾訓(xùn)練過程完全結(jié)束,它將會(huì)生成一個(gè)xml文件。
      如果你想要將一個(gè)中級(jí)海爾訓(xùn)練輸出目錄樹轉(zhuǎn)化為一個(gè)xml文件,在目錄OpenCV/samples/c/convert_cascade.c下有個(gè)程序可供使用。
      輸入的格式為:

      1. $ convert_cascade --size="<sample_width>x<sampe_height>" <haartraining_ouput_dir> <ouput_file>


      舉例:

      1. $ convert_cascade --size="20x20" haarcascade haarcascade.xml

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多