標籤:方差 stand 自動 卷積 資料集 線性 images 通道 histogram
介紹
對於Udacity(優達學城)自動駕駛汽車納米學位的汽車檢測和跟蹤項目,如果使用傳統的電腦可視化技術將是一個挑戰,就像方向梯度長條圖(Histogram of Oriented Gradients,HOG)和其它特徵組合在一起在視頻裡跟蹤汽車一樣,理想的解決方案應該是即時啟動並執行,如>30FPS,我曾經使用線性SVM來處理視頻,在一台i7 CPU電腦上得到的結果只有可憐的3FPS。最後我使用YOLO來處理視頻終於通過了Udacity的項目,YOLO是一個超快的用於對象檢測的卷積神經網路,如果你的GPU夠快(我當時使用的是GTX 1080),視頻處理的速度可以達到65FPS,比我用SVM+HOG的方法足足快20倍。
資料集
我使用了KITTI和GTI資料集,以及來自項目訓練倉庫的一些其它資料,只有兩類資料:有車的和沒有車的,GTI資料從視頻流獲得,因此所有映像都完全是隨機的,然後被分為訓練和測試資料集,在訓練和測試資料集之間建立相關關係,我將每個資料來源30%的資料集作為驗證和測試資料集,所有映像都被重設為64x64像素的大小,以便於特徵的提取。
特徵提取
我使用的特徵向量如下:
空間特徵:除了用於自檢的像斑(16x16像素)外啥都沒有。
顏色長條圖特徵:捕獲每個像斑的統計顏色資訊,通過這種特徵向量捕獲的汽車顏色通常是非常飽和的。
方向梯度長條圖(HOG)特徵:捕獲每個映像通道的梯度結構,在不同的光線條件下,這種方法表現得還不錯。
在這篇部落格裡有關於HOG特徵的詳細描述,其思想始終是,在一個長條圖裡,在一個映像上聚集梯度,讓特徵向量在不同視角和光線條件下變得更加穩定。下面是HOG特徵應用於有車的和沒車的映像上時的可視化呈現。
最後一個特徵向量包含前面3個不同方法提取的特徵,因此有必要對每一個特徵進行計量,防止因取值範圍不同導致某一特徵佔主導地位,我使用了scikit學習包中的Standard.Scaler函數,通過移動平均值和按比例縮放到單位方差來標準化特徵。
訓練一個線性支援向量機
和其它分類和檢測問題不同,檢測汽車需要強即時,因此,要在高準確性和速度之間取得平衡,影響效能最主要的兩個參數是特徵向量的長度和汽車檢測演算法,線性SVM在速度和準確性之間提供了最好的折中方案,比隨機森林(快但準確性不夠)和非線性SVM(rbf核心,非常慢)的表現要好得多。最後測試時使用了一個包含6156個特徵的特徵向量,準確性超過了98.5%,但仍然有將近1.5%的像斑時不時的晃眼,特別是車道線、事故故障和欄杆。
滑動視窗
通常情況下,汽車檢測和攝像機使用滑動視窗掃描映像一幀一幀記錄類似,對每個視窗而言,通過計算特徵向量並輸入到分類器中,汽車在不同距離出現時,有必要搜尋多個尺度,通常會有100多個特徵向量需要提取,然後輸入到分類器中,對每一幀映像進行處理。下面是正面檢測大約150個視窗的例子,不出意外,仍然會有一些失誤。
為了過濾掉誤判結果,我一直跟著檢測視窗直到最後30幀,只考慮被準確識別的映像,最後有超過15次檢測被記錄下來,我用熱圖來呈現最終結果,可以看到噪點大大減少,
通過熱圖的閾值,包含所有非零值的熱圖最小矩形邊界框就可以確定下來。
全文點擊:http://click.aliyun.com/m/12645/
車輛追蹤演算法大PK:SVM+HOGvs.YOLO