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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用opencv的traincascade.exe训练行人的HAAR、LBP和HOG特征的xml

發(fā)布時間:2025/3/21 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用opencv的traincascade.exe训练行人的HAAR、LBP和HOG特征的xml 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

opencv中有兩個函數(shù)可以訓練分類器opencv_haartraining.exe和opencv_traincascade.exe,前者只能訓練haar特征,后者可以用HAAR、LBP和HOG特征訓練分類器。這兩個函數(shù)都可以在opencv\build\x86\vc10\bin文件夾下找到,opencv_haartraining.exe訓練的adaboost級聯(lián)分類器有很多了,本文主要講opencv_haartraining.exe訓練的LBP和HOG特征的分類器。

訓練的過程包過四步:

首先是樣本的準備、其次是對樣本進行處理、再次生成樣本描述文件、最后一步是訓練分類器。

1、樣本的準備

以行人訓練為例,首先正樣本是各種各樣的行人的照片,負樣本就是非人照片。樣本個數(shù)最好在上千個,個數(shù)太少訓練出來的分類器不能準確的檢測行人,網(wǎng)上對正負樣本的個數(shù)比例不盡相同,有的說3:1有的說7:3,具體的還是要自己去實驗,我用的正樣本有2000個負樣本1200個。把正負樣本分別放在不同的文件夾下,可以命名為pos、neg。同時也要把opencv自帶的訓練函數(shù)和正負樣本一起放到一個文件夾下,例如放到E盤的boost文件夾下。如圖

這樣就準備好了正負樣本了。

ps:對正負樣本的幾點說明。。。

正負樣本都要轉(zhuǎn)化成灰度圖,而且對于正樣本用haar特征訓練是規(guī)格化成20*20或其他大小,最好不要太大,過多的haar特征會影響分類器的訓練時間;對于LBP特征正樣本要規(guī)格化為24*24大小,而對于HOG要規(guī)格化成64*64. 負樣本對尺寸沒有統(tǒng)一要求,在訓練對應(yīng)的分類器時,選擇的負樣本尺寸一定要大于等于正樣本規(guī)定的尺寸。 ? ? ? ? ? ? ? ? ? a,正樣本就是人的圖片就行了,盡量包含少的背景。 ? ? b,,負樣本有兩點要求:一,不能包含正樣本且盡可能多的提供場景的背景圖;二,負樣本盡可能的多,而且要多樣化,和正樣本有一定的差距但是差別也不要太大,否則容易在第一級就全部被分類器reject,訓練時不能顯示負樣本的個數(shù),從而導(dǎo)致卡死。

2、對樣本進行處理

以下的處理過程都是在命令行下進行的,在計算機【開始】里面輸入“cmd”就可以進入命令行了。。。。。。

然后進入你剛才新建的包含以上樣本的文件夾下 ?首先進入E盤 直接輸入E:就可以了,其次輸入“cd boost”就可以進入剛才的文件夾下。輸入“CD..”可以返回上一程

輸入dir /b >pos.txt 可以在pos文件夾下生成正樣本描述文件,文件是txt文件,包含的內(nèi)容是正樣本中圖片的對應(yīng)序號和格式。把其中的格式j(luò)pg改成jpg 1 0 0 24 24

后面的0 0 24 24是你規(guī)格化圖片的大小,即矩形框的大小,和你自己規(guī)格化的正樣本圖片大小要保持一致。全部替換以后,再把最后一行的pos.txt刪除就可以了。對于負樣本,以上生成方式一樣,不需要對txt文件的圖片格式進行修改,只需要刪除最后一行的neg.txt即可。這樣正負樣本就處理好了。。。

3、生成樣本描述文件

對正負樣本進行以上預(yù)處理之后,就可以創(chuàng)建正樣本vec文件了。

命令行進入opencv_createsamples.exe文件夾下,依次輸入:opencv_createsamples.exe -info pos\pos.txt -vec pos.vec -bg neg\neg.txt -num 2000 -w 24 -h 24 回車之后文件夾下就會出現(xiàn)pos.vec文件。


以上參數(shù)的含義如下:
-vec <vec_file_name>:訓練好的正樣本的輸出文件名。
-img<image_file_name>:源目標圖片(例如:一個公司圖標)
-bg<background_file_name>:背景描述文件。
-num<number_of_samples>:要產(chǎn)生的正樣本的數(shù)量,和正樣本圖片數(shù)目相同。
-bgcolor<background_color>:背景色(假定當前圖片為灰度圖)。背景色制定了透明色。對于壓縮圖片,顏色方差量由bgthresh參數(shù)來指定。則在bgcolor-bgthresh 和bgcolor+bgthresh 中間的像素被認為是透明的。
-bgthresh<background_color_threshold>

-inv:如果指定,顏色會反色
-randinv:如果指定,顏色會任意反色
-maxidev<max_intensity_deviation>:背景色最大的偏離度。
-maxangel<max_x_rotation_angle>,
-maxangle<max_y_rotation_angle>,
-maxzangle<max_x_rotation_angle>:最大旋轉(zhuǎn)角度,以弧度為單位。
-show:如果指定,每個樣本會被顯示出來,按下"esc"會關(guān)閉這一開關(guān),即不顯示樣本圖片,而創(chuàng)建過程
繼續(xù)。這是個有用的debug 選項。
-w<sample_width>:輸出樣本的寬度(以像素為單位)
-h<sample_height>:輸出樣本的高度(以像素為單位)

只需要對正樣本進行以上操作,負樣本不需要生成vec文件。。。

4、訓練分類器

在以上準備工作都做好的情況下,就可以進行訓練分類器了。

在cmd命令行下輸入:opencv_traincascade.exe -data xml -vec pos.vec -bg neg\neg.txt -numpos 1800 -numneg 1200 -numstages 20 -featureType LBP -w 24 -h 24


講一下我實戰(zhàn)出來的注意事項吧:

1 關(guān)于正樣本,首先正樣本不是有些人說的,你實際有300個正樣本,在traincascade的時候可以寫成3000的,這種思路是沒有用的。在采集正樣本的時候你一定要注意保持所有樣本寬高比大致相同,如果你自己截圖,推薦使用光影魔術(shù)手。或者牛逼的你自己寫個gui截圖工具。為了避免出現(xiàn)opencv error,在用opencv_traincascade.exe的時候,-numPos要稍微低于實際的正樣本數(shù)目,比如你有2100個你就可以將numpos設(shè)為1900-2000,

2 ?無論正樣本負樣本,圖片命名時不要用特殊字符,你就規(guī)規(guī)矩矩的命名pos1.jpg 。。。。。等等,特殊字符包括(),會出現(xiàn)opencv error,或者無法識別。

3 正負樣本比例1:2.5~1:3,曾經(jīng)有篇文章中說,為了減小false positive ,可以加大負樣本數(shù)目。

4 當出現(xiàn)內(nèi)存不夠的情況時,有幾種方法:1 你可以在64為pc上跑,2 減小正負樣本的數(shù)目。3 減小正樣本的寬高。

? ? ? ?經(jīng)驗之談,不善之處,多提意見。


總結(jié)

以上是生活随笔為你收集整理的用opencv的traincascade.exe训练行人的HAAR、LBP和HOG特征的xml的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。