-1

我正在處理一個包含視覺詞彙的場景識別問題。這裏是我從互聯網改編的代碼。在訓練數據集中,我有5個類,每個類有100個圖像。在隨機測試數據集中,我有5000個圖像。我明白我應該從訓練集中做出一個詞彙。但是,我是否也應該製作測試數據集的詞彙表?構建篩選特徵編碼包中的詞彙

FEATURE = 'bag of sift'; 
CLASSIFIER = 'support vector machine'; 
categories = {'shopping', 'office', 'eating', 'chatting', 'biking'}; 
num_train_per_cat = 100; 
vocab_size = 200; 

% YOUR CODE FOR build_vocabulary.m 
vocab = build_vocabulary(train_image_paths, vocab_size); 

% YOUR CODE FOR get_bags_of_sifts.m 
fprintf('Computing training features\n'); 
train_image_feats = get_bags_of_sifts(train_image_paths,vocab); 
save('train_bag.mat', 'train_image_feats'); 
fprintf('Computing test features\n'); 
test_image_feats = get_bags_of_sifts(test_image_paths,vocab); 

% YOUR CODE FOR svm_classify.m 
test_image_feats_mat = cell2mat(test_image_feats); 
test_image_feats= vl_svmdataset(test_image_feats_mat); 
predicted_categories = svm_classify(train_image_feats,train_labels, test_image_feats) 

回答

1

關於您的問題,您不能從測試數據集中創建詞彙表。 您必須使用編碼方法來計算測試圖像中的視覺單詞出現次數。編碼方法產生一個直方圖,成爲一個新的和減少的圖像表示。

實施例:

features = encode(vocabulary, img) 

總之,必須編碼火車/測試數據集。編碼方法的輸出成爲分類器的輸入。