2017-02-20 40 views
0

我在訓練集中有5個類,每個類有100個訓練圖像。我在測試文件夾中創建了5個類。現在,每個測試圖像都將與培訓課程進行比較,並且基於它接近其中一個培訓課程,將爲相應的測試課程貼上標籤。我想知道如果我在SVM分類器中做了正確的步驟嗎?SVM分類器和測試圖像

+0

更精確。我不明白這個問題。也許你在問如何用SVMs進行多類學習,但也許不是。如果是這樣,請查看OneVsRest和OneVsOne在多類學習中的術語。 – sascha

+0

從opencv的SVM示例開始,用您的數據替換它們的數據。看看你的結果是什麼,並從那裏繼續(http://docs.opencv.org/2.4/doc/tutorials/ml/non_linear_svms/non_linear_svms.html) –

回答

1

所以基本上你有以下結構:

火車

|-- class1 
| |-- 1.pgm 
| |-- ... 
| |-- 100.pgm 
|-- class2 
| |-- 1.pgm 
| |-- ... 
| |-- 100.pgm 
... 
|-- class5 
| |-- 1.pgm 
| |-- ... 
| |-- 100.pgm 

測試

|-- class1 
| |-- 1.pgm 
| |-- ... 
| |-- n.pgm 

|-- class5 
| |-- 1.pgm 
| |-- ... 
| |-- n.pgm 

下一步是從火車圖像中提取的描述符。使用提取的特徵,您可以生成(訓練)分類模型。最後,您使用相同的編碼方法從測試圖像中提取特徵,然後使用訓練好的模型進行預測。

+0

謝謝你Liviu Stefan。那麼我是否需要首先將所有測試數據手動分類到不同的類中,例如訓練數據集中?並且每個測試班級的圖像數量是否相同,並且該數字可能與培訓班的圖像數量不同?那麼SVM分類器的作用是什麼? – wannabegeek

+0

不,您不必將所有測試數據手動歸入不同的類別。測試類也可以有任意數量的圖像。您可以使用SVM根據列車圖像訓練分類模型,您將使用該模型對測試圖像進​​行預測。 –

+0

我正在總結我的工作。請給出意見。我有5個課,標籤有「聊天」,「自行車」,「夜晚」,「吃飯」,「辦公室」。每個班級有100個圖像。我有一個文件夾「test_data」,有100個隨機圖像。我有一個vocab.mat,train_features(train_bag_of_sift.mat)和test_features(test_bag_of_sift.mat)。訓練數據由svmtrain函數訓練。 「分數= [分數;(W'* test_image_feats'+ B)]」給出分數和相應的索引類別(索引(max_score))是預測分類。爲了找到準確度,將與地面真值進行比較。 – wannabegeek