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

Posted

技术标签:

【中文标题】如何使 HOG 特征向量适应线性 svm 输入【英文标题】:How to adapt HOG features vector to linear svm input 【发布时间】:2016-08-14 00:22:15 【问题描述】:

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

【问题讨论】:

【参考方案1】:

“线性 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

这能回答你的问题吗?

【讨论】:

您好,丹尼尔·普林斯先生。

以上是关于如何使 HOG 特征向量适应线性 svm 输入的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV + HOG +SVM:SVM 单特征向量需要帮助

基于并联SVM支持向量机训练HOG特征提取的人员目标提取

如何使用线性支持向量机 (SVM) 分类器确定最重要/信息量最大的特征

svm支持向量机系列 -- 线性支持向量机

05-支持向量机 (SVM) 下

图像分类基于matlab HOG+SVM图像分类识别含Matlab源码 2141期