1. 程式人生 > >行人檢測(haar+adaboost 與 hog+SVM)

行人檢測(haar+adaboost 與 hog+SVM)

最近在做行人檢測,而最流行,也是最老的兩種方法就是haar+adaboost 與 hog+SVM。兩種我都嘗試了,效果並不如想象的好,所以要想有更好的效果,一是要有預處理,二是要有更大量的正負樣本。

   下面現總結一下自己應用的 haar+Adaboost 進行的行人檢測:

   我分別訓練了兩個分類器,訓練資料庫均來自NICTA(澳大利亞資訊與通訊技術研究中心),用其中的2000張做證樣本,5000多張做負樣本(自己在網上找的)得到第一個分類器;後來因為對於側身人體檢測效果不好,我又從資料庫中找到並裁剪了800張側身正樣本(真心費眼睛啊……),負樣本同上,從而得到了第二個分類器。調整cvHaarDetectObjects()引數後得到的效果圖如(1)(2)所示。

    而對於 HOG + SVM,因為要求圖片較大,所以能找到的資料庫只有MIT和INRIA的能用。所以正樣本1511張,負樣本5748張,得到的分類器效果如(3)所示。

  (1)first classifier(haar): (2)second classifier(haar):(3)third classifier(hog):

1.     

 2.               

3.                

4.                

5.                

6.                

7.                

8.         

       

9.                

10.          

      如上圖可見:

    第一個分類器對於正面身體檢測效果較好,而對於側身檢測較弱,其中一個很重要的原因是我最開始訓練的資料集並未經過篩選,所以導致效果一般;

    第二個分類器則對於側身檢測效果較好,原因是我精選了800多張側身正樣本,但還不全面,很明顯如圖8就無法檢測出來;

    第三個分類器是用HOG特徵製作的,不得不承認,hog特徵的確十分適用於行人的檢測,1511張正樣本即可達到很高的hit rate.但隨之而來的是其過高的false positive,不準確的檢測框以及過長的時間。一直不明白為什麼hog+svm總是有很多的false positive,是因為SVM的原因?線性分類器的分類效果一般吧。有人懂嗎?

    因此,為了達到更高的hit rate與更低的false positive,我將會用二者做一個級聯分類器,從而投票決定搜尋結果。當然在此之前,我需要更多的正樣本去將每一個分類器訓練的更精確,魯棒性更強。但願實驗室給些支援呀…… 

    最後就是效率問題還是沒能解決,hog實在是太費時間了,一張小圖居然都要幾秒,完全達不到實時性,看了一篇paper,說是其中一半的時間都用來resize和搜尋框移動。嗯,接下來好好看paper,爭取優化hog分類器。