create_classifier.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/usr/bin/python
  2. from Classifier import Classifier
  3. from create_characters import load_learning_set
  4. from data import exists, DATA_FOLDER
  5. def load_classifier(neighbours, blur_scale, c=None, gamma=None, verbose=0):
  6. classifier_file = 'classifier_%s_%s.dat' \
  7. % (blur_scale, neighbours)
  8. classifier_path = DATA_FOLDER + classifier_file
  9. if exists(classifier_file):
  10. if verbose:
  11. print 'Loading classifier...'
  12. classifier = Classifier(filename=classifier_path, \
  13. neighbours=neighbours, verbose=verbose)
  14. elif c != None and gamma != None:
  15. if verbose:
  16. print 'Training new classifier...'
  17. classifier = Classifier(c=c, gamma=gamma, neighbours=neighbours, \
  18. verbose=verbose)
  19. learning_set = load_learning_set(neighbours, blur_scale, \
  20. verbose=verbose)
  21. classifier.train(learning_set)
  22. classifier.save(classifier_path)
  23. else:
  24. raise Exception('No soft margin and gamma specified.')
  25. return classifier
  26. if __name__ == '__main__':
  27. from sys import argv, exit
  28. if len(argv) < 3:
  29. print 'Usage: python %s NEIGHBOURS BLUR_SCALE [ C GAMMA ]' % argv[0]
  30. exit(1)
  31. neighbours = int(argv[1])
  32. blur_scale = float(argv[2])
  33. # Generate the classifier file
  34. if len(argv) > 4:
  35. c = float(argv[3])
  36. gamma = float(argv[4])
  37. load_classifier(neighbours, blur_scale, c=c, gamma=gamma, verbose=1)
  38. else:
  39. load_classifier(neighbours, blur_scale, verbose=1)