如何使 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 单特征向量需要帮助