车辆追踪算法大PK:SVM+HOG vs. YOLO
作者:Kaspar Sakmann
Twitter
Facebook
介紹
?????? 對于Udacity(優達學城)自動駕駛汽車納米學位的汽車檢測和跟蹤項目,如果使用傳統的計算機可視化技術將是一個挑戰,就像方向梯度直方圖(Histogramof Oriented Gradients,HOG)和其它特征組合在一起在視頻里跟蹤汽車一樣,理想的解決方案應該是實時運行的,如>30FPS,我曾經使用線性SVM來處理視頻,在一臺i7CPU計算機上得到的結果只有可憐的3FPS。最后我使用YOLO來處理視頻終于通過了Udacity的項目,YOLO是一個超快的用于對象檢測的卷積神經網絡,如果你的GPU夠快(我當時使用的是GTX1080),視頻處理的速度可以達到65FPS,比我用SVM+HOG的方法足足快20倍。
使用YOLO來處理Udacity汽車跟蹤項目視頻在檢測汽車時表現優異
數據集
??????? 我使用了KITTI和GTI數據集,以及來自項目訓練倉庫的一些其它數據,只有兩類數據:有車的和沒有車的,GTI數據從視頻流獲得,因此所有圖像都完全是隨機的,然后被分為訓練和測試數據集,在訓練和測試數據集之間建立相關關系,我將每個數據源30%的數據集作為驗證和測試數據集,所有圖像都被重置為64x64像素的大小,以便于特征的提取。
特征提取
??? 我使用的特征向量如下:
- 空間特征:除了用于自檢的像斑(16x16像素)外啥都沒有。
- 顏色直方圖特征:捕獲每個像斑的統計顏色信息,通過這種特征向量捕獲的汽車顏色通常是非常飽和的。
- 方向梯度直方圖(HOG)特征:捕獲每個圖像通道的梯度結構,在不同的光線條件下,這種方法表現得還不錯。
在這篇博客里有關于HOG特征的詳細描述,其思想始終是,在一個直方圖里,在一個圖像上聚集梯度,讓特征向量在不同視角和光線條件下變得更加穩定。下面是HOG特征應用于有車的和沒車的圖像上時的可視化呈現。
HOG特征,從左邊開始的4列:訓練數據和它們在HLS顏色空間里的通道,右邊3列:每個通道HOG向量的可視化效果
??? 最后一個特征向量包含前面3個不同方法提取的特征,因此有必要對每一個特征進行計量,防止因取值范圍不同導致某一特征占主導地位,我使用了scikit學習包中的Standard.Scaler函數,通過移動平均值和按比例縮放到單位方差來標準化特征。
訓練一個線性支持向量機
??????? 和其它分類和檢測問題不同,檢測汽車需要強實時,因此,要在高準確性和速度之間取得平衡,影響性能最主要的兩個參數是特征向量的長度和汽車檢測算法,線性SVM在速度和準確性之間提供了最好的折中方案,比隨機森林(快但準確性不夠)和非線性SVM(rbf內核,非常慢)的表現要好得多。最后測試時使用了一個包含6156個特征的特征向量,準確性超過了98.5%,但仍然有將近1.5%的像斑時不時的晃眼,特別是車道線、事故故障和欄桿。
盡管有98.5%的的準確性,仍然有像斑分類錯誤
滑動窗口
????????? 通常情況下,汽車檢測和攝像機使用滑動窗口掃描圖像一幀一幀記錄類似,對每個窗口而言,通過計算特征向量并輸入到分類器中,汽車在不同距離出現時,有必要搜索多個尺度,通常會有100多個特征向量需要提取,然后輸入到分類器中,對每一幀圖像進行處理。下面是正面檢測大約150個窗口的例子,不出意外,仍然會有一些失誤。
??????? 為了過濾掉誤判結果,我一直跟著檢測窗口直到最后30幀,只考慮被準確識別的圖像,最后有超過15次檢測被記錄下來,我用熱圖來呈現最終結果,可以看到噪點大大減少,如下:
左圖:一幀的所有檢測窗口。右圖:最后30幀的熱圖
??? 通過熱圖的閾值,包含所有非零值的熱圖最小矩形邊界框就可以確定下來。
左圖:15次檢測生成了關鍵的熱圖閾值。右圖:畫出邊界矩形的最終效果
??? 在視頻中應用全部通道后,圍繞汽車畫出的矩形邊界如下所示:
視頻鏈接
與YOLO比較及結論
??? 從2005年開始,使用HOG特征和線性SVM是最佳選擇,直到最近,出現了非常快速的對象檢測神經網絡,對象檢測速度可以達到準實時。我下載了暗網(darknet)倉庫里的代碼,使用YOLO處理項目視頻,只需要稍稍修改一下代碼,允許直接保存視頻,結果相當讓人吃驚,檢測時并沒有使用滑動窗口,但速度仍然非常快,一幀圖像通過網絡時只需要被處理一次,因此稱之為YOLO--“youonly look once”。
視頻鏈接
??? 用神經網絡來處理一整幅圖像與提取每個像斑的特征向量然后用SVM來處理相比,前者的代價更大,但是,對一幅圖像來說,這種方法只需要處理一次,而SVM+HOG方案需要處理大約150次。上面大家看到的視頻,我還沒有進行過優化,如減少圖像或定義興趣區域,或者針對汽車做特定訓練。在準確性相當時,YOLO比SVM+HOG要快20多倍,檢測閾值可以被設置為任意置信水平,我保留默認值(50%),并且除了汽車之外不再檢測其它對象,這讓我相當興奮,我將在另一個獨立項目中進一步驗證汽車檢測的可能性。
???? 以上為譯文。
??? 文章原標題《Vehicle tracking using a support vector machine vs. YOLO》,作者:Kaspar Sakmann,譯者:耕牛的人,校核:主題曲(身形)。
??? 文章為簡譯,更為詳細的內容,請查看 原文。總結
以上是生活随笔為你收集整理的车辆追踪算法大PK:SVM+HOG vs. YOLO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Chrome的广告和弹窗拦截插件
- 下一篇: 人人网回归了!历史记录全保留!前任们的黑