计算机视觉目标检测的框架与过程
計算機視覺目標檢測的框架與過程
FROM:http://blog.csdn.net/zouxy09/article/details/7928771
個人接觸機器視覺的時間不長,對于機器學習在目標檢測的大體的框架和過程有了一個初步的了解,不知道對不對,如有錯誤,請各位大牛不吝指點。
?
目標的檢測大體框架:
目標檢測分為以下幾個步驟:
1、訓練分類器所需訓練樣本的創建:
?????? 訓練樣本包括正樣本和負樣本;其中正例樣本是指待檢目標樣本(例如人臉或汽車等),負樣本指其它不包含目標的任意圖片(如背景等),所有的樣本圖片都被歸一化為同樣的尺寸大小(例如,20x20)。
2、特征提取:
?????? 由圖像或波形所獲得的數據量是相當大的。例如,一個文字圖像可以有幾千個數據,一個心電圖波形也可能有幾千個數據。為了有效地實現分類識別,就要對原始數據進行變換,得到最能反映分類本質的特征。這就是特征選擇和提取的過程。一般我們把原始數據組成的空間叫測量空間,把分類識別賴以進行的空間叫做特征空間,通過變換,可把在維數較高的測量空間中表示的模式變為在維數較低的特征空間中表示的模式。
3、用訓練樣本來訓練分類器:
?????? 這得先明白分類器是什么?百度百科的解釋是:“使待分對象被劃歸某一類而使用的分類裝置或數學模型?!蔽矣X得可以怎么理解,舉個例子:人腦本身也算一個分類器(只是它強大到超乎想象而已),人對事物的識別本身也是一個分類的過程。人在成長或者學習過程中,會通過觀察A類事物的多個具體事例來得到對A類事物性質和特點的認識,然后以后遇到一個新的物體時,人腦會根據這個事物的特征是否符合A類事物性質和特點,而將其分類為A類或者非A類。(這里只是用簡單的二分類問題來說明)。那么訓練分類器可以理解為分類器(大腦)通過對正樣本和負樣本的觀察(學習),使其具有對該目標的檢測能力(未來遇到該目標能認出來)。
??????? 從數學來表達,分類器就是一個函數y=f(x),x是某個事物的特征,y是類別,通俗的說就是例如,你輸入張三的特征x1,分類器就給你認出來這個是張三y1,你輸入李四的特征x2,它就給你認出來這個是李四y2。那么分類器是個函數,它的數學模型是什么呢?一次函數y=kx+b?高次函數?等等好復雜的都有,我們需要先確定它的模型;確定了模型后,模型是不是由很多參數呢?例如上面的一次函數y=kx+b的k和b,高斯函數的均值和方差等等。這個就可以通過什么最小化分類誤差、最小化懲罰啊等等方法來確定,其實訓練分類器好像就是找這些參數,使得達到最好的分類效果。呵呵,不知道自己說得對不對。
????????另外,為了使分類檢測準確率較好,訓練樣本一般都是成千上萬的,然后每個樣本又提取出了很多個特征,這樣就產生了很多的的訓練數據,所以訓練的過程一般都很耗時的。
4、利用訓練好的分類器進行目標檢測:
???????得到了分類器就可以用來對你輸入的圖像進行分類了,也就是在圖像中檢測是否存在你想要檢測的目標。一般的檢測過程是這樣的:用一個掃描子窗口在待檢測的圖像中不斷的移位滑動,子窗口每到一個位置,就會計算出該區域的特征,然后用我們訓練好的分類器對該特征進行篩選,判定該區域是否為目標。然后因為目標在圖像的大小可能和你訓練分類器時使用的樣本圖片大小不一樣,所以就需要對這個掃描的子窗口變大或者變小(或者將圖像變小),再在圖像中滑動,再匹配一遍。
5、學習和改進分類器
?????? 現在如果樣本數較多,特征選取和分類器算法都比較好的情況下,分類器的檢測準確度都挺高的了。但也會有誤檢的時候。所以更高級點的話就是加入了學習或者自適應,也就是說你把這張圖分類錯誤了,我就把這張圖拿出來,標上其正確的類別,再放到樣本庫中去訓練分類器,讓分類器更新、醒悟,下次別再給我弄錯了。你怎么知道他弄錯了?我理解是:大部分都是靠先驗知識(例如目標本身存在著結構啊或者什么的約束)或者和跟蹤(目標一般不會運動得太快)等綜合來判斷的。
?
??????? 其實上面這個模式分類的過程是適合很多領域的,例如圖像啊,語音識別等等。那么這整一個過程關鍵點在哪呢?
(1)特征選取:
??????? 感覺目標比較盛行的有:Haar特征、LBP特征、HOG特征和Shif特征等;他們各有千秋,得視你要檢測的目標情況而定,例如:
??????? 拳頭:紋理特征明顯:Haar、LBP(目前有將其和HOG結合);
?????? 手掌:輪廓特征明顯:HOG特征(行人檢測一般用這個);
??????? (在博客中,我會參考各牛人的博客和資料來整理Haar特征、LBP特征、HOG特征和Shif特征等這些內容,具體見博客更新)
(2)分類器算法:
????????感覺目標比較盛行的有:SVM支持向量機、AdaBoost算法等;其中檢測行人的一般是HOG特征+SVM,OpenCV中檢測人臉的一般是Haar+AdaBoost,OpenCV中檢測拳頭一般是LBP+ AdaBoost;
?
??????在計算機視覺領域,涉及到的特征啊,算法啊等等還是非常非常多的,不斷有牛人在提出新的東西(簡單的哲學+復雜的數學),也不斷有牛人在改進以前的東西,然后隨著歲月的腳步,科技在不停地狂奔著!
總結
以上是生活随笔為你收集整理的计算机视觉目标检测的框架与过程的全部內容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: AdaBoost人脸检测原理
- 下一篇: 颜色,形状,纹理特征