Skip to content
Snippets Groups Projects
Commit 51d98fd3 authored by Taddeus Kroes's avatar Taddeus Kroes
Browse files

Debugged performance test script.

parent b5f8ca8a
No related branches found
No related tags found
No related merge requests found
......@@ -4,8 +4,14 @@ from svmutil import svm_train, svm_problem, svm_parameter, svm_predict, \
class Classifier:
def __init__(self, c=None, gamma=None, filename=None, neighbours=3, \
verbose=0):
self.neighbours = neighbours
self.verbose = verbose
if filename:
# If a filename is given, load a model from the given filename
if verbose:
print 'Loading classifier from "%s"...' % filename
self.model = svm_load_model(filename)
elif c == None or gamma == None:
raise Exception('Please specify both C and gamma.')
......@@ -16,11 +22,11 @@ class Classifier:
self.param.gamma = gamma # Parameter for radial kernel
self.model = None
self.neighbours = neighbours
self.verbose = verbose
def save(self, filename):
"""Save the SVM model in the given filename."""
if self.verbose:
print 'Saving classifier in "%s"...' % filename
svm_save_model(filename, self.model)
def train(self, learning_set):
......
......@@ -5,14 +5,15 @@ from data import exists, DATA_FOLDER
def load_classifier(neighbours, blur_scale, c=None, gamma=None, verbose=0):
classifier_file = DATA_FOLDER + 'classifier_%s_%s.dat' \
classifier_file = 'classifier_%s_%s.dat' \
% (blur_scale, neighbours)
classifier_path = DATA_FOLDER + classifier_file
if exists(classifier_file):
if verbose:
print 'Loading classifier...'
classifier = Classifier(filename=classifier_file, \
classifier = Classifier(filename=classifier_path, \
neighbours=neighbours, verbose=verbose)
elif c != None and gamma != None:
if verbose:
......@@ -23,6 +24,7 @@ def load_classifier(neighbours, blur_scale, c=None, gamma=None, verbose=0):
learning_set = load_learning_set(neighbours, blur_scale, \
verbose=verbose)
classifier.train(learning_set)
classifier.save(classifier_path)
else:
raise Exception('No soft margin and gamma specified.')
......
......@@ -22,7 +22,7 @@ chars = []
i = 0
br = False
for value in sorted(listdir()):
for value in sorted(listdir(IMAGES_FOLDER)):
for image in sorted(listdir(IMAGES_FOLDER + value)):
f = IMAGES_FOLDER + value + '/' + image
image = GrayscaleImage(f)
......@@ -37,15 +37,20 @@ for value in sorted(listdir()):
if br:
break
# Load classifier
# Load classifier (run create_classifier.py first)
classifier = load_classifier(neighbours, blur_scale, verbose=1)
# Measure the time it takes to recognize <count> characters
start = time()
for char in chars:
# Normalize the character image
char.image = NormalizedCharacterImage(image, blur=blur_scale, height=42)
# Create the image's feature vector
char.get_single_cell_feature_vector(neighbours)
# Feed the feature vector to the classifier
classifier.classify(char)
elapsed = time() - start
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment