HOG+SVM——多分类

由于需要进行行人和车辆检测,那么如何将行人和车辆一起进行多分类呢?

  • 由于先考虑了行人检测的问题,行人检测通常suppose长宽比为2:1,那么目标检测后的切片就得为2:1,涉及到对其他目标进行padding的问题。其他目标或车辆的size不是2:1,该如何处理?因为做成2:1才不会改变长宽比,不是产生拉升等变形。这就是在实际项目中遇到的尺度问题!
  • 办法一:从环境中截取2:1,即将目标的周围截取进去成2:1 风险:周围环境因素进去太多,对HOG有影响
  • 办法二:padding其他切片为2:1. 风险:对车辆识别的时候是否存在问题?边界处的HOG特征是否对分类有影响?
  • 小因素太多,到底这些小因素对最后的影响是多少,其实说不清楚,必须要找证据来说明,其影响真的很大时那就一定要做处理,现在都是猜测,在试探性地处理!这样的工作节奏不太好,需要转变!But how?

该如何考虑SVM多分类的问题?

  • libsvm可以处理多分类的问题,how?
    • 三种方法:one-vs-rest,类别不均衡。one-vs-one,libsvm就是这样做的,不适合分类过多的情况。因为需要成pairs的训练方式,需要训练k(k-1)/2个模型。
  • 相关的多分类demo是怎么处理不同的多分类问题的,多分类问题中的尺度问题是如何考虑和处理的?
  • udacity的项目中有一个车辆检测的,可以看一下是怎么做的 https://github.com/udacity/CarND-Vehicle-Detection
  • https://blog.csdn.net/dalong_95/article/details/89114604

总结:

  1. SVM多分类问题怎么办?

    1. ​​​​​​​libsvm支持多分类。应该是特征维度一致,提取HOG等是一致的,然后打好标签就可以了

  2. SVM多分类或单分类下的尺度问题怎么办?

    1. ​​​​​​​对于分类而言,所有的样本size都是一致的。所以这些在数据预处理部分都已经做好了

  3. SVM考虑尺度下的负样本或其他目标怎么办?

    1. ​​​​​​​这也是属于预处理的问题,看预处理该怎么做

 


SVM的使用建议

  • 特征维度高(3780),样本规模较小(1k~2k)时,不宜使用核函数,否则容易引起过拟合
  • 特征维度低,样本规模足够大,考虑使用高斯核函数。且使用高斯核函数前进行特征缩放。
  • 通常流行的SVM库已经内置了多分类相关的API,如果不支持多分类,则要用One-vs-All策略来进行多分类。


1. 多分类SVM(Multi-SVM)

深度学习之图像分类----多分类支持向量机(Multi-SVM)与softmax分类

SVM的特征数量比样本数量大得多时,容易过拟合。因此要选择核函数和正则化避免过拟合。https://www.studyai.cn/modules/svm.html

  • 过拟合,即训练误差小,泛化误差大。

http://www.jeepxie.net/article/651457.html

SVM本身是对付二分类问题的,所以在处理多分类的时候需要进行必要的改造。

同样是二分类的情况,logistic回归可以直接拓展为softmax多分类。但是SVM如果直接在目标函数上进行修改的话,就是将多个分类面的参数求解合并到一个最优化问题上,显然难度太大,目前也没有任何实际操作的方法。

二、SVM多分类间接实现

1、1-V-rest:将某一类归为正类,其余全部是负类。

该方法的最大缺陷是数据集的不平衡,因为某一类的实例往往只占一小部分。当然解决不平衡的问题可以进行降采样或者上采样,但是上采样中数据集过多重合,易导致过拟合,而降采样使得数据利用率不足,不能学习整个模型的特性

2、1-V-1:k类的数据集中,单独为每两类的样本设计SVM,进行分类。最终必须设计k(k-1)/2个分类器,最终用投票的方式进行选择。这也是libsvm采用的方法,但是当类别有1000个的时候、、、

3、根据前两种方法的比较,可以看出就性能而言宁愿多做点事情,也要保证避免过拟合或者预测能力不足的情况,所以大部分情况下第二种方法更优。但是第二种成本太大,所以有了第三种方法,类似于SVM的二叉树组合,在论文《基于SVM的二叉树多类分类算法及其在故障诊断中的应用》中,

机器学习算法之SVM的多分类原理

如果类别为k个,那么最后只需要k-1个分类器。

该模型的最大缺点就是如果某一层中的分类出错了,那么后面的分类器只能将错就错。所以选择差别大的两类在前,差别小的类在后。


SVM调参经验:

https://tangshusen.me/2018/10/27/SVM/

MATLAB实现多分类问题,使用libsvm,1-vs-rest和1-vs-1两种方法代码

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值