計算機視覺目標檢測的框架與過程

下面這篇博文轉載自:點擊打開鏈接


個人接觸機器視覺的時間不長,對於機器學習在目標檢測的大體的框架和過程有了一個初步的瞭解,不知道對不對,如有錯誤,請各位大牛不吝指點。

 

目標的檢測大體框架:

目標檢測分爲以下幾個步驟:

1、訓練分類器所需訓練樣本的創建:

       訓練樣本包括正樣本和負樣本;其中正例樣本是指待檢目標樣本(例如人臉或汽車等),負樣本指其它不包含目標的任意圖片(如背景等),所有的樣本圖片都被歸一化爲同樣的尺寸大小(例如,20x20)。

2、特徵提取:

       由圖像或波形所獲得的數據量是相當大的。例如,一個文字圖像可以有幾千個數據,一個心電圖波形也可能有幾千個數據。爲了有效地實現分類識別,就要對原始數據進行變換,得到最能反映分類本質的特徵。這就是特徵選擇和提取的過程。一般我們把原始數據組成的空間叫測量空間,把分類識別賴以進行的空間叫做特徵空間,通過變換,可把在維數較高的測量空間中表示的模式變爲在維數較低的特徵空間中表示的模式。

3、用訓練樣本來訓練分類器:

       這得先明白分類器是什麼?百度百科的解釋是:“使待分對象被劃歸某一類而使用的分類裝置或數學模型。”我覺得可以怎麼理解,舉個例子:人腦本身也算一個分類器(只是它強大到超乎想象而已),人對事物的識別本身也是一個分類的過程。人在成長或者學習過程中,會通過觀察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特徵等;他們各有千秋,得視你要檢測的目標情況而定,例如:

        拳頭:紋理特徵明顯:HaarLBP(目前有將其和HOG結合);

       手掌:輪廓特徵明顯:HOG特徵(行人檢測一般用這個);

        (在博客中,我會參考各牛人的博客和資料來整理Haar特徵、LBP特徵、HOG特徵和Shif特徵等這些內容,具體見博客更新)

2)分類器算法:

        感覺目標比較盛行的有:SVM支持向量機、AdaBoost算法等;其中檢測行人的一般是HOG特徵+SVMOpenCV中檢測人臉的一般是Haar+AdaBoostOpenCV中檢測拳頭一般是LBP+ AdaBoost

 

      在計算機視覺領域,涉及到的特徵啊,算法啊等等還是非常非常多的,不斷有牛人在提出新的東西(簡單的哲學+複雜的數學),也不斷有牛人在改進以前的東西,然後隨着歲月的腳步,科技在不停地狂奔着!


發佈了23 篇原創文章 · 獲贊 12 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章