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

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

【问题讨论】:

    标签: matlab image-processing classification histogram 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
    

    这能回答你的问题吗?

    【讨论】:

    • 您好,丹尼尔·普林斯先生。
    猜你喜欢
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2016-05-07
    • 2023-03-27
    • 2018-02-25
    • 2020-08-08
    • 2016-04-02
    • 2014-07-14
    相关资源
    最近更新 更多