天天看點

計算機視覺目标檢測的架構與過程

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

目标的檢測大體架構:

計算機視覺目标檢測的架構與過程

目标檢測分為以下幾個步驟:

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特征等;他們各有千秋,得視你要檢測的目标情況而定,例如:

Haar、LBP(目前有将其和HOG結合);

HOG特征(行人檢測一般用這個);

Haar特征、LBP特征、HOG特征和Shif特征等這些内容,具體見部落格更新)

(2)分類器算法:

繼續閱讀