PathMemory is an exercise that adds an interesting twist to the concept of machine learning for symbol recognition.
Built on top of OpenGL graphics library (using the yellowtail example as a starting point), the app lets you draw a number of (single pen-stroke) symbols/shapes as examples and (after pressing ‘m’ for morphing mode), lets you draw any other symbol you want and tries to match the symbol with the examples you have given it previously based only on the pen-strokes used for drawing. It will then try to morph the symbol you have drawn to the one it thinks is the closest match.
Fine Points :
- Upto 36 symbols are currently supported for examples, after which new examples will replace older examples
- Pressing ‘L’ will put it back in learning mode (it also starts out in learning mode)
- Pressing SpaceBar will clear all reference examples
- Pressing ‘m’ puts it in morphing mode or test mode
It currently uses NO machine learning!
It is kind of surprising how well it seems to perform based simply on normalization of images a simple metric of total transformation cost between symbols to pick the closest symbol.
The zipped folder contains the exported applet as well as applications built for windows, mac, and linux. Note that direct use of OpenGL jars in applets is broken for Java 6 Update 21, so if you have the latest java updates installed, you will have to use the applications, for ppl with older java revs, the applet should work as well.
The app works best with tablets, the experience of drawing images and symbols was less satisfying using a mouse. Each pen stroke is taken as a separate object, so it works best with characters that can be expressed in simple strokes – numbers, letters in various languages, single stroke smileys etc
Try it out !