1

私はいくつかの画像でSVMトレーニングを受けています。これはSVMを使った私の最初のプロジェクトです。私は、HOG特徴抽出を用いて特徴を抽出している。フィーチャーをトレーニングし、地平線上にある場合は1にラベルを付け、バックグラウンド上にある場合は0にラベルを付けます。トレーニング用に74枚、テスト用に7枚の画像があります。残念ながら、私は50%以上の精度を超えることはできません。イメージサイズを変更しました。フィーチャ抽出でセルサイズを再生しました。そんなに変わることはありません。私は何を試すことができますか?そして、理想的なデータセット番号は何ですか?訓練とテストのために何枚ですか?たとえば、ある画像では、次の画像のすべての正解がすべて間違っていると予測します。MatlabのSVMトレーニングと分類の精度を上げるには?

これは正確度を計算する方法です。

%%%%% 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); 

及びIはPredict_label_image = svmclassify(svmModel、image_feats)を使用しています。テスト用。

+0

SVMをトレーニングする方法を示してください。おそらく、あなたはハイパーパラメータ上でグリッド検索を試みるべきですか? – J63

+0

私は自分の質問を編集しましたが、あなたの質問に答えるかどうかはわかりません。私はsvmtrainとsvmclassifyを使いました。 – cinemaniac

+0

入力機能のスケールを見ましたか? SVMは標準化から大きく利益を得ることができますhttp://content.iospress.com/articles/intelligent-data-analysis/ida730 –

答えて

0

多くのチューニングが必要です。ここではdocumentationにはあなたがプレイできるすべてのハイパーパラメータがあります。 rbfカーネルを使い、BoxConstraintのために[0.01、0.1、1、10]を試してみましょう。

異なるハイパーパラメータ設定を試していないと、svmが動作するとは思えません。

+0

ありがとうございました。 BoxConstraintの値をどうやって決めましたか?このエラーが発生するため ' svmtrain(460行目)を使用するとエラーが発生する ボックスの制約は、正の数値のスカラ、または長さが行数に等しい正の数のベクトルでなければなりません。 TRAINING。 main2(行62)のエラー svmModel = svmtrain(train_data、train_label、 'BoxConstraint'、[0.01、0.1、1、10]); – cinemaniac

+0

異なる実行をしなければならないということです:svmtrain(train_data、train_label、 'BoxConstraint'、0.01、 'kernel_function'、 'rbf'); svmtrain(train_data、train_label、 'BoxConstraint'、0.1、 'kernel_function'、 'rbf'); svmtrain(train_data、train_label、 'BoxConstraint'、1、 'kernel_function'、 'rbf'); ... – J63

+0

@ J63 'bayesopt'を使って最適なハイパーパラメータを自動的に見つけることもできます:https://ch.mathworks.com/help/stats/bayesian-optimization-case-study.html –

関連する問題