如何使HOG特征向量适应线性svm输入

时间:2016-04-21 02:54:46

标签: matlab image-processing classification histogram svm

我正在使用HOG,以便通过图像A提取一组功能。 HOG返回1xN元素的特征向量。 然而,线性SVM仅接受每个样本的2个特征,即训练数据矩阵的大小为Mx2。所以我如何调整HOG矢量来训练线性SVM。 请帮我。 感谢

1 个答案:

答案 0 :(得分:2)

你是什么意思"线性SVM只接受每个样本的2个特征"?您可能会对SVM功能如何接受其训练数据感到困惑。这是我如何使用它的一个简单示例:

首先,让我们使用fitcsvm使用500个随机数据样本(训练数据矩阵中的行)训练SVM模型,每个样本有1000个元素(训练数据矩阵中的列),其中前250个样本属于1级(前250行训练标签),最后250个样本属于0级(最后250行训练标签):

>> training_data = rand(500, 1000);
>> training_labels = [ones(250,1); zeros(250,1)];
>> 
>> svm_model = fitcsvm(training_data, testing_data)

svm_model = 

  ClassificationSVM
      PredictorNames: {1x1000 cell}
        ResponseName: 'Y'
          ClassNames: [0 1]
      ScoreTransform: 'none'
     NumObservations: 500
               Alpha: [418x1 double]
                Bias: 2.3217
    KernelParameters: [1x1 struct]
      BoxConstraints: [500x1 double]
     ConvergenceInfo: [1x1 struct]
     IsSupportVector: [500x1 logical]
              Solver: 'SMO'


  Properties, Methods

我们可以为10个测试样本生成一些随机测试数据,每个测试样本包含1000个元素,并从中创建一些预测:

>> test_data = rand(10, 1000);
>> predicted_classes = predict(svm_model, test_data)

predicted_classes =

     1
     1
     1
     1
     1
     0
     0
     0
     1
     0

这会回答你的问题吗?