簡體   English   中英

在MatLab中使用LIBSVM進行多類圖像分類

[英]Using LIBSVM in MatLab for Multi Class image classification

我在MatLab中使用LIBSVM來嘗試對圖像進行分類。

我知道SVM是一個二進制分類模型,但是我想知道如何將它用作多類分類模型。

是否可以訓練成對的數據(即汽車和非汽車,馬和非馬,人和非人),然后通過將圖像與所有三個模型進行比較來預測圖像所屬的類別? 如果是這樣,我怎么能實現這個目標? 我的測試標簽矢量是什么?

是的,你的建議是一個很好的方法。 它被稱為一對一戰略

您需要為每個班級訓練單獨的SVM。 如果在該類中,則輸出數據將是等於1的二進制變量,否則為0。 然后,為了對新項目進行分類,請在每個SVM中運行它,並選擇輸出最高的項目(輸出最接近1)。

作為@ Dan的補充答案,以下是我之前帖子中的相關代碼:

model = cell(NumofClass,1);  % NumofClass = 3 in your case
for k = 1:NumofClass
    model{k} = svmtrain(double(trainingLabel==k), trainingData, '-c 1 -g 0.2 -b 1');
end

%% calculate the probability of different labels

pr = zeros(1,NumofClass);
for k = 1:NumofClass
    [~,~,p] = svmpredict(double(testLabel==k), testData, model{k}, '-b 1');
    pr(:,k) = p(:,model{k}.Label==1);    %# probability of class==k
end

%% your label prediction will be the one with highest probability:

[~,predctedLabel] = max(pr,[],2);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM