hans

hans

【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。虽然会慢很多,但效果好一点。


** 最新代码 Github 地址: ** https://github.com/HansRen1024/SVM-classification-localization

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。