-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 메소드의 출력은 분류 자의 입력이됩니다.