-1

私は視覚的な言葉の袋でシーン認識の問題に取り組んでいます。ここでは、私がインターネットから取り入れたコードを示します。トレーニングデータセットでは、それぞれ100の画像を持つ5つのクラスがあります。ランダムテストデータセットでは、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

質問には、テストデータセットからボキャブラリを作成しないでください。 テストイメージのビジュアルワードの出現回数をカウントするには、encodeメソッドを使用する必要があります。 encodeメソッドはヒストグラムを生成し、ヒストグラムは画像の新しい表現と縮小された表現になります。

例:要約する

features = encode(vocabulary, img) 

、あなたは電車/テストデータセットをエンコードする必要があります。 encodeメソッドの出力は、分類子の入力になります。

関連する問題