我正在接受几张图片的svm培训。这是我的第一个SVM项目。我正在使用HOG特征提取来提取特征。训练功能并在地平线上标记其位置1,如果在背景上则标记0。我有74张用于训练的图像和7张用于测试的图像。不幸的是,我不能超过50%的准确率。我已经改变了图像大小,我在特征提取中玩过单元格大小。它没有那么大的变化。我该怎么办?什么是理想的数据集编号,培训和测试的图像数量是多少?例如,在一个图像中,它预测下一个图像中的所有正确都是错误的。
这就是我计算准确性的方法;
%%%%% Evaluation
% Testing Data
hfsTest = vertcat(dataset.HorizonFeatsTest{:});
bfsTest = vertcat(dataset.BgFeatsTest{:});
test_data = [hfsTest;bfsTest];
% Labels
hlabelTest = ones(size(hfsTest,1),1);
blabelTest = zeros(size(bfsTest,1),1);
test_label = [hlabelTest;blabelTest];
Predict_label = vertcat(results.predicted_label{:});
acc = numel(find(Predict_label==test_label))/length(test_label);
disp(['Accuracy ', num2str(acc)]);
%done
% Training Data
hfs = vertcat(dataset.HorizonFeats{:});
bfs = vertcat(dataset.BgFeats{:});
train_data = [hfs;bfs];
% Labels
hlabel = ones(size(hfs,1),1);
blabel = zeros(size(bfs,1),1);
train_label = [hlabel;blabel];
%%%
% do training ...
svmModel = svmtrain(train_data, train_label,'BoxConstraint',2e-1);
我使用了Predict_label_image = svmclassify(svmModel,image_feats);用于检测。
答案 0 :(得分:0)
你需要做很多调整。在documentation中,您可以使用所有超参数。我将从一个rbf内核开始,为BoxConstraint尝试[0.01,0.1,1,10]。
如果你不尝试不同的超参数配置,我担心你不能期望svm工作。