1. 程式人生 > >【Machine Learning】【Python】五、Sliding Window + SVM + NMS for Localization ---- 《SVM物體分類和定位檢測》

【Machine Learning】【Python】五、Sliding Window + SVM + NMS for Localization ---- 《SVM物體分類和定位檢測》

建議用後面EdgeBoxes做邊框預測,比SW快一點準一點。如果大家感興趣,也建議用faster rcnn SPN層中的anchor技術。

--------------------------------------------------------------------------

SVM物體分類和定位檢測》這一系列博文結束了。

總結一下我用著最好的方法流程吧。

1. 先HoG提取特徵feature

2. 用PCA對feature降維然後用PSO優化引數C和gamma,降維的目的是加快PSO執行速度,否則太慢,但分類效果降低

3. 用第一步拿到的feature和第二步拿到的引數訓練一個初始SVM模型

4. 用Hard Negative Mining優化SVM模型

5. 用滑窗進行detection,最後用NMS做邊框迴歸

目前2700正樣本,2700負樣本,只經過PSO優化引數後訓練好模型,分類測試準確率84%。測試集1200負樣本,700正樣本。

但是檢測框的精確不高,誤檢測很多。

------------【2017.07.10 更新】-------------------------------------------------------------------------------------------

對detection程式碼修改了一點,對資料集進行了一些處理。通過PSO優化引數後的SVM模型測試準確率85.6%左右,以100畫素為步長做完HNM後的模型準確率將為83%左右,但是detection誤檢測降低很多。後來我又以50畫素為步長重新HNM,現在的模型做detection效果已經很不錯,誤檢測很少,正確檢測雖然不穩定,但是已經滿足需求了。我用100畫素做步長,最後是對3.9W特徵訓練SVM模型,模型大小116M。我用50畫素做步長,最後是對9W多特徵訓練SVM,模型大小190M。

多說一嘴,我用HoG對每張圖片提取了2900多特徵。在做PSO的時候,之前一直是用PCA給降維到500。為了追求更好的效果,後來我都是降維到2000做PSO。雖然會慢很多,但效果好一點。

-------------------------------------------------------------------------------------------------------------------------------------