-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
72 lines (56 loc) · 2.83 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import argparse
import os
import numpy as np
from handwritten_recognition_system import Handwrittten_recognition_system
from utils.handwritten_dataset_utils import view_word
from utils.Initial_and_Transition_matrix_generator import index_to_alphabet
def eval(images, path, label, alg="viterbi",likelihood_choice="argmax", is_vis=True):
handwritten_recogonition_predictor = Handwrittten_recognition_system(path, alg, likelihood_choice)
n = images.shape[0]
succes_predict = 0
for i in range(n):
handwritten_recogonition_predictor.load_image(images[i,:])
predict_states = handwritten_recogonition_predictor.make_prediction()
predict_letters = [index_to_alphabet[x] for x in predict_states]
predict_vocabulary = "".join(predict_letters)
if predict_vocabulary == label:
succes_predict +=1
if is_vis:
view_word(images[i,:], predict_vocabulary, pause_time = 0.1)
return succes_predict/n
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--images_dir',type=str,
default='dataset/handwritten_alphabets/words')
parser.add_argument('--vocabulary', type=str,
default='robotics')
parser.add_argument('--distribution_dir', type=str,
default='trained_model/transition_matrix_and_initial_distribution')
parser.add_argument('--observer_dir', type=str,
default="trained_model/observer")
parser.add_argument('--likelihood_choice', type=str,
default="argmax")
parser.add_argument('--is_vis', default=False, action='store_true')
args = parser.parse_args()
images_dir= args.images_dir
vocabulary_label = args.vocabulary
images_path = os.path.join(images_dir, vocabulary_label + ".npy")
distribution_dir = args.distribution_dir
transition_matrices_path = os.path.join(distribution_dir, "transition_matrix.npy")
init_distribution_path = os.path.join(distribution_dir, "initial_distribution.npy")
observer_dir = args.observer_dir
observer_path = os.path.join(observer_dir, "model_cnn.pt")
emission_path = os.path.join(observer_dir, "likelihood.npy")
likelihood_choice = args.likelihood_choice
is_vis = args.is_vis
images = np.load(images_path)
path = {"initial_distribution":init_distribution_path,
"transition": transition_matrices_path,
"observer":observer_path,
"emission":emission_path}
algs = ["max_likelihood", "bayes_filter", "smooth", "viterbi"]
for alg in algs:
accuracy = eval(images, path, vocabulary_label, alg=alg, likelihood_choice=likelihood_choice, is_vis=is_vis)
print("The accuracy of predict {} by using {} algorithmn is\n {}".format(vocabulary_label, alg, accuracy))
if __name__ == "__main__":
main()