def main(): for ind in range(len(K)): start = time.time() print('Started at: ',start) opts = get_opts() opts.L = L[ind] opts.K = K[ind] opts.alpha = alpha[ind] print('filter_scales',opts.filter_scales) print('L is', opts.L) print('K is', opts.K) print('alpha is', opts.alpha) n_cpu = util.get_num_CPU() visual_words.compute_dictionary(opts, n_worker=n_cpu) dictionary = np.load(join(opts.out_dir, 'dictionary.npy')) # Q2.1-2.4 n_cpu = util.get_num_CPU() visual_recog.build_recognition_system(opts, n_worker=n_cpu) ## Q2.5 n_cpu = util.get_num_CPU() conf, accuracy = visual_recog.evaluate_recognition_system(opts, n_worker=n_cpu) print(conf) print(accuracy) np.savetxt(join(opts.out_dir, 'confmat.csv'), conf, fmt='%d', delimiter=',') np.savetxt(join(opts.out_dir, 'accuracy.txt'), [accuracy], fmt='%g') print('Finished at: ',time.time()) print('It took', ((time.time()-start)/60), 'minutes to execute the iteration.')
def main(): opts = get_opts() img_path = join(opts.data_dir, 'aquarium/sun_aztvjgubyrgvirup.jpg') img = Image.open(img_path) img = np.array(img).astype(np.float32) / 255 filter_responses = visual_words.extract_filter_responses(opts, img) n_cpu = util.get_num_CPU() visual_words.compute_dictionary(opts, n_worker=1) img_path = join(opts.data_dir, 'kitchen/sun_aaqhazmhbhefhakh.jpg') img = Image.open(img_path) img = np.array(img).astype(np.float32) / 255 dictionary = np.load(join(opts.out_dir, 'dictionary.npy')) wordmap = visual_words.get_visual_words(opts, img, dictionary) n_cpu = util.get_num_CPU() visual_recog.build_recognition_system(opts, n_worker=n_cpu) n_cpu = util.get_num_CPU() conf, accuracy, incorrect = visual_recog.evaluate_recognition_system( opts, n_worker=n_cpu) print(conf) print(accuracy) np.savetxt(join(opts.out_dir, 'confmat.csv'), conf, fmt='%d', delimiter=',') np.savetxt(join(opts.out_dir, 'accuracy.txt'), [accuracy], fmt='%g')
def main(): opts = get_opts() ## Q1.1 img_path = join(opts.data_dir, 'kitchen/sun_aasmevtpkslccptd.jpg') img = Image.open(img_path) img = np.array(img).astype(np.float32)/255 filter_responses = visual_words.extract_filter_responses(opts, img) util.display_filter_responses(opts, filter_responses) # ## Q1.2 n_cpu = util.get_num_CPU() visual_words.compute_dictionary(opts, n_worker=n_cpu) ## Q1.3 img_path = join(opts.data_dir, 'windmill/sun_bsngeuxxmgmcsesp.jpg') img = Image.open(img_path) img = np.array(img).astype(np.float32)/255 dictionary = np.load(join(opts.out_dir, 'dictionary.npy')) wordmap = visual_words.get_visual_words(opts, img, dictionary) util.visualize_wordmap(wordmap) ## Q2.1-2.4 n_cpu = util.get_num_CPU() visual_recog.build_recognition_system(opts, n_worker=n_cpu) ## Q2.5 n_cpu = util.get_num_CPU() conf, accuracy = visual_recog.evaluate_recognition_system(opts, n_worker=n_cpu) print(conf) print(accuracy) np.savetxt(join(opts.out_dir, 'confmat.csv'), conf, fmt='%d', delimiter=',') np.savetxt(join(opts.out_dir, 'accuracy.txt'), [accuracy], fmt='%g')
def main(): opts = get_opts() # Q1.1 img_path = join(opts.data_dir, 'aquarium/sun_aztvjgubyrgvirup.jpg') img = Image.open(img_path) img = np.array(img).astype(np.float32) / 255 filter_responses = visual_words.extract_filter_responses(opts, img) util.display_filter_responses(opts, filter_responses) # Q1.2 n_cpu = util.get_num_CPU() visual_words.compute_dictionary(opts, n_worker=n_cpu) # Q1.3 ### Uncomment for picture 1 ### img_path = join(opts.data_dir, 'kitchen/sun_aasmevtpkslccptd.jpg') ### Uncomment for picture 2 ### # img_path = join(opts.data_dir, 'aquarium/sun_acrxheaggpuqwdwm.jpg') ### Uncomment for picture 3 ### # img_path = join(opts.data_dir, 'desert/sun_banypouestzeimab.jpg') #################################################################### img = Image.open(img_path) img = np.array(img).astype(np.float32) / 255 dictionary = np.load(join(opts.out_dir, 'dictionary.npy')) wordmap = visual_words.get_visual_words(opts, img, dictionary) util.visualize_wordmap(wordmap) # Q2.1-2.4 n_cpu = util.get_num_CPU() visual_recog.build_recognition_system(opts, n_worker=n_cpu) # Q2.5 n_cpu = util.get_num_CPU() conf, accuracy = visual_recog.evaluate_recognition_system(opts, n_worker=n_cpu) # Q3.2 # n_cpu = util.get_num_CPU() # custom.build_recognition_system(opts, n_worker=n_cpu) # n_cpu = util.get_num_CPU() # conf, accuracy = custom.evaluate_recognition_system(opts, n_worker=n_cpu) print(conf) print(accuracy) np.savetxt(join(opts.out_dir, 'confmat.csv'), conf, fmt='%d', delimiter=',') np.savetxt(join(opts.out_dir, 'accuracy.txt'), [accuracy], fmt='%g')
def main(): opts = get_opts() ## Q1.1 #img_path = join(opts.data_dir, 'aquarium/sun_aztvjgubyrgvirup.jpg') #img = Image.open(img_path) #img = np.array(img).astype(np.float32)/255.0 #filter_responses = visual_words.extract_filter_responses(opts, img) #util.display_filter_responses(opts, filter_responses) ## Q1.2 # n_cpu = util.get_num_CPU() #visual_words.compute_dictionary(opts, n_worker=n_cpu) ## Q1.3 img_path = join(opts.data_dir, 'desert/sun_acrqldhmwdraspza.jpg') img = Image.open(img_path) img = np.array(img).astype(np.float32) / 255 dictionary = np.load(join(opts.out_dir, 'dictionary.npy')) wordmap = visual_words.get_visual_words(opts, img, dictionary) #util.visualize_wordmap(wordmap) ## Q2.1-2.4 n_cpu = util.get_num_CPU() visual_recog.get_feature_from_wordmap(opts, wordmap) visual_recog.build_recognition_system(opts, n_worker=n_cpu) ## Q2.5 n_cpu = util.get_num_CPU() conf, accuracy = visual_recog.evaluate_recognition_system(opts, n_worker=n_cpu) print(conf) print(accuracy) np.savetxt(join(opts.out_dir, 'confmat.csv'), conf, fmt='%d', delimiter=',') np.savetxt(join(opts.out_dir, 'accuracy.txt'), [accuracy], fmt='%g')
if __name__ == '__main__': num_cores = util.get_num_CPU() path_img = "../data/kitchen/sun_aasmevtpkslccptd.jpg" image = skimage.io.imread(path_img) image = image.astype('float') / 255 filter_responses = visual_words.extract_filter_responses(image) util.display_filter_responses(filter_responses) visual_words.compute_dictionary(num_workers=num_cores) dictionary = np.load('dictionary.npy') img = visual_words.get_visual_words(image, dictionary) #util.save_wordmap(wordmap, filename) visual_recog.build_recognition_system(num_workers=num_cores) conf, accuracy = visual_recog.evaluate_recognition_system( num_workers=num_cores) print(conf) print(np.diag(conf).sum() / conf.sum()) vgg16 = torchvision.models.vgg16(pretrained=True).double() vgg16.eval() deep_recog.build_recognition_system(vgg16, num_workers=num_cores // 2) conf = deep_recog.evaluate_recognition_system(vgg16, num_workers=num_cores // 2) print(conf) print(np.diag(conf).sum() / conf.sum()) #
def main(): opts = get_opts() print('L is', opts.L) print('K is', opts.K) print('alpha is', opts.alpha) print() # Q1.1 img_path = join(opts.data_dir, 'kitchen/sun_aasmevtpkslccptd.jpg') img = Image.open(img_path) img = np.array(img).astype(np.float32) / 255 filter_responses = visual_words.extract_filter_responses(opts, img) # imageio.imsave('../results/filter_responses.jpg',filter_responses) util.visualize_wordmap(img) util.display_filter_responses(opts, filter_responses) ## # Q1.2 n_cpu = util.get_num_CPU() visual_words.compute_dictionary(opts, n_worker=n_cpu) dictionary = np.load(join(opts.out_dir, 'dictionary.npy')) ### # ## Q1.3 img_path = join(opts.data_dir, 'kitchen/sun_aasmevtpkslccptd.jpg') img = Image.open(img_path) img = np.array(img).astype(np.float32) / 255 wordmap = visual_words.get_visual_words(opts, img, dictionary) util.visualize_wordmap(img) util.visualize_wordmap(wordmap) # img_path = join(opts.data_dir, 'waterfall/sun_bbeqjdnienanmmif.jpg') img = Image.open(img_path) img = np.array(img).astype(np.float32) / 255 wordmap = visual_words.get_visual_words(opts, img, dictionary) util.visualize_wordmap(img) util.visualize_wordmap(wordmap) # img_path = join(opts.data_dir, 'windmill/sun_bratfupeyvlazpba.jpg') img = Image.open(img_path) img = np.array(img).astype(np.float32) / 255 wordmap = visual_words.get_visual_words(opts, img, dictionary) util.visualize_wordmap(img) util.visualize_wordmap(wordmap) img_path = join(opts.data_dir, 'desert/sun_adjlepvuitklskrz.jpg') img = Image.open(img_path) img = np.array(img).astype(np.float32) / 255 wordmap = visual_words.get_visual_words(opts, img, dictionary) util.visualize_wordmap(img) util.visualize_wordmap(wordmap) # # Q2.1-2.4 n_cpu = util.get_num_CPU() visual_recog.build_recognition_system(opts, n_worker=n_cpu) ## Q2.5 n_cpu = util.get_num_CPU() conf, accuracy = visual_recog.evaluate_recognition_system(opts, n_worker=n_cpu) print(conf) print(accuracy) np.savetxt(join(opts.out_dir, 'confmat.csv'), conf, fmt='%d', delimiter=',') np.savetxt(join(opts.out_dir, 'accuracy.txt'), [accuracy], fmt='%g')
import skimage.io import time if __name__ == '__main__': start = time.time() #ctl num_cores = util.get_num_CPU() # path_img = "../data/kitchen/sun_avuzlcqxzrzteyvc.jpg" path_img = "../data/aquarium/sun_aztvjgubyrgvirup.jpg" image = skimage.io.imread(path_img) image = image.astype('float') / 255 filter_responses = visual_words.extract_filter_responses(image) # util.display_filter_responses(filter_responses) # visual_words.compute_dictionary(num_workers=num_cores) dictionary = np.load('dictionary.npy') wordmap = visual_words.get_visual_words(image, dictionary) util.save_wordmap(wordmap, "wordmap_n") # visual_recog.get_feature_from_wordmap(wordmap,dictionary.shape[0]) #ctl # visual_recog.get_feature_from_wordmap_SPM(wordmap,3,dictionary.shape[0]) #ctl visual_recog.build_recognition_system( num_workers=num_cores ) # approx 12 min for 100 files, about 2 hr for 1000 files conf, accuracy = visual_recog.evaluate_recognition_system( num_workers=num_cores) # approx 1 hr for 577 files # print(conf) # print(np.diag(conf).sum()/conf.sum()) end = time.time() #ctl print("Time: ", end - start) #ctl
def tune(alpha, filter_scales, K, L, D): """ Tunes the recognition system [input] * alpha: list of number of sampling pixels * filter scales: list of filter scales to extract responses * K: list of visual words * L: list of layers in SPM [saves] * dictionary, trained model and results per test """ opts = get_opts() n_cpu = util.get_num_CPU() OUT_DIR = opts.out_dir # Tests test = 0 total_tests = len(L) * len(K) * len(filter_scales) \ * len(alpha) * len(D) for d in D: opts.D = d for fs in filter_scales: opts.filter_scales = fs for a in alpha: opts.alpha = a for k in K: opts.K = k for l in L: opts.L = l test += 1 # Create test directory opts.out_dir = OUT_DIR + f"/test_l-{l}_k-{k}_fs-{len(fs)}_a-{a}_d-{d}" if not os.path.exists(opts.out_dir): os.mkdir(opts.out_dir) print(f"TEST [{test}/{total_tests}]: L-{l}_K-{k}_fs-{len(fs)}_a-{a}_d-{d}") # Dictionary if not os.path.exists(join(opts.out_dir, "dictionary.npy")): print("\tBuilding Dictionary") start = time() visual_words.compute_dictionary(opts, n_worker=n_cpu) print(f"Time {(time() - start) / 60.0}") else: print("\tDictionary exists") # Train if not os.path.exists(join(opts.out_dir, "trained_system.npz")): print("\tBuilding Recognition System") start = time() visual_recog.build_recognition_system(opts, n_worker=n_cpu) print(f"Time {(time() - start) / 60.0}") else: print("\tRecognition system exists") # Test if not os.path.exists(join(opts.out_dir, "accuracy.txt")) or \ not os.path.exists(join(opts.out_dir, "confmat.csv")) or \ not os.path.exists(join(opts.out_dir, "model.npz")): # Test print("\tEvaluation") start = time() conf, acc = visual_recog.evaluate_recognition_system(opts, n_worker=n_cpu) print(f"Time {(time() - start) / 60.0}") # Results print(f"Confusion Matrix\n{conf}\n Accuracy: {acc}") np.savetxt(join(opts.out_dir, 'confmat.csv'), conf, fmt='%d', delimiter=',') np.savetxt(join(opts.out_dir, 'accuracy.txt'), [acc], fmt='%g') np.savez_compressed(join(opts.out_dir, "model.npz"), filter_scales=fs, K=k, L=l, alpha=a, acc=acc, conf_mat=conf) else: print("\tEvaluation exists")
def main(): opts = get_opts() ## Q1.1 - Filter responses # img_path = join(opts.data_dir, 'aquarium/sun_aztvjgubyrgvirup.jpg') # img_path = join(opts.data_dir, 'kitchen/sun_aasmevtpkslccptd.jpg') # img_path = join(opts.data_dir, 'desert/sun_aaqyzvrweabdxjzo.jpg') # print("Q1.1.2 - Extract filter responses") # img = Image.open(img_path) # img.show() # img = np.array(img).astype(np.float32)/255 # start = time() # filter_responses = visual_words.extract_filter_responses(opts, img) # print(f"Time: {(time() - start) / 60.0}") # util.display_filter_responses(opts, filter_responses) ## Q1.2 - Dictionary print("Q1.2 - Building dictionary") start = time() n_cpu = util.get_num_CPU() visual_words.compute_dictionary(opts, n_worker=n_cpu) print(f"Time: {(time() - start) / 60.0}") ## Q1.3 - Wordmaps # img_path = join(opts.data_dir, 'park/labelme_aumetbzppbkuwju.jpg') # img_path = join(opts.data_dir, 'laundromat/sun_aaxufyiupegixznm.jpg') # img_path = join(opts.data_dir, 'highway/sun_beakjawckqywuhzw.jpg') # img_path = join(opts.data_dir, 'desert/sun_bfyksyxmxcrgvlqw.jpg') # img_path = join(opts.data_dir, "desert/sun_bqljzuxtzgthsjqt.jpg") # img_path = join(opts.data_dir, 'kitchen/sun_anmauekjnmmqhigr.jpg') # print("Q1.3 - Visual words") # start = time() # img = Image.open(img_path) # img.show() # img = np.array(img).astype(np.float32)/255 # dictionary = np.load(join(opts.out_dir, 'dictionary.npy')) # wordmap = visual_words.get_visual_words(opts, img, dictionary) # print(f"Time: {(time() - start) / 60.0}") # util.visualize_wordmap(wordmap) ## Q2.1-Q2.2 - Histograms # img_path = join(opts.data_dir, 'kitchen/sun_aasmevtpkslccptd.jpg') # dictionary = np.load(join(opts.out_dir, 'dictionary.npy')) # img = Image.open(img_path) # img = np.array(img).astype(np.float32)/255 # wordmap = visual_words.get_visual_words(opts, img, dictionary) # print("Q2.1 - Feature from wordmap") # start = time() # hist = visual_recog.get_feature_from_wordmap(opts, wordmap) # print(np.sum(hist)) # print(f"Time: {(time() - start) / 60.0}") # print("Q2.2 - Feature from wordmap SPM") # hist = visual_recog.get_feature_from_wordmap_SPM(opts, wordmap) # print(f"Time: {(time() - start) / 60.0}") # print(np.sum(hist)) ## Q2.3 - 2.4 - Recognition System print("Q2.3-2.4 - Building recognition system") start = time() n_cpu = util.get_num_CPU() visual_recog.build_recognition_system(opts, n_worker=n_cpu) print(f"Time {(time() - start) / 60.0}") ## Q2.5 - Evaluation print("Q2.5 - Evaluating recognition system") start = time() n_cpu = util.get_num_CPU() conf, acc = visual_recog.evaluate_recognition_system(opts, n_worker=n_cpu) print(f"Time {(time() - start) / 60.0}") print(f"Confusion Matrix\n{conf}\n Accuracy: {acc}") np.savetxt(join(opts.out_dir, 'confmat.csv'), conf, fmt='%d', delimiter=',') np.savetxt(join(opts.out_dir, 'accuracy.txt'), [acc], fmt='%g')
num_cores = multiprocessing.cpu_count() x, y = util.get_filenames(BASE_PATH) X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=10) print(len(X_train)) alpha = 50 # number of pixels per image K = 100 # number of cluster centers visual_words.compute_dictionary(X_train, RESULTS_PATH, K, alpha, 8) files = os.listdir(RESULTS_PATH) filter_responses = [] for file in files: filter_responses.append(np.load(os.path.join(RESULTS_PATH, file))) filter_responses = np.concatenate(filter_responses, axis=0) kmeans = sklearn.cluster.KMeans(n_clusters=K, n_jobs=-1).fit(filter_responses) dictionary = kmeans.cluster_centers_ np.save("../results/train_dictionary.npy", dictionary) print("dictionary done") visual_recog.build_recognition_system(X_train, y_train, K, num_workers=num_cores) np.set_printoptions(threshold=np.inf) conf, accuracy = visual_recog.evaluate_recognition_system( X_train, y_train, num_workers=num_cores) pprint.pprint(conf) print(accuracy)