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