kernel = Pyramid_Kernel(k=512, pyramid_levels=pyramid_levels) mySVM = SVM(kernel=kernel.pyramid_kernel) else: # hardcode, load best parameters found with cross validation with open( "/imatge/mgorriz/work/master/models/session02/test1/best_params_svm.pkl", 'rb') as file: best_params_svm = pickle.load(file) mySVM = SVM(kernel=best_params_svm['kernel'], C=best_params_svm['C'], gamma=best_params_svm['gamma']) model = mySVM.load_model(args.model_path) test_data = InputData.get_test_data() if args.do_compute_features: #descriptors, descriptors_idx = sift_descriptors.extract_features_simple(data_dictionary=test_data) test_descriptors_path = "/imatge/mgorriz/work/master/models/session02/test2/test_descriptors.npy" descriptors, descriptors_idx = \ sift_descriptors.extract_features_simple(data_dictionary=test_data, load=True, path=test_descriptors_path) codebook = bow_descriptor.load( os.path.join(args.codebook_path, 'codebook.pkl'), 'codebook') test_visual_words = bow_descriptor.extract_features( descriptors, codebook, descriptors_idx) bow_descriptor.save(
display=True) # save model myKNN.save_model(model, args.model_path) else: print("Invalid train method") print('Training finished: done in ' + str(time.time() - start_time) + ' secs') elif args.do_test: start_time = time.time() test_data = InputData.method_data_dictionary(InputData.get_test_data(), 'test') model = myKNN.load_model(args.model_path) # test model predictions = myKNN.predict(test_data['filenames'], model, display=True) myEvaluation.accuracy(test_data['labels'], predictions, display=True) myEvaluation.confusion_matrix(test_data['labels'], predictions, display=True) print('Test finished: done in ' + str(time.time() - start_time) + ' secs')