Tuesday, August 8, 2017

Finale

So, it is done. Well, for the requirements that this class, it has. And it works! For the most part. Let's get into it.

Final Stages

So I have the GUI built up correctly, and drawing properly. In the pictures below, I have the drawing area and the main pages, basically how I draw out the numbers and save them off.















As I draw, I figured out how to save off the numbers, basically I just save off the center point of each circle I drew into an array and wrote it out to a file to be used by Weka.

Thoughts

All in all, I am fairly happy with the results of the "end" product. There is still some work that I want to do on it in terms of optimization and parallelization. Currently, the Neural Network takes about 20 minutes to build with only 30 different images. Along with all of that, the Neural Network is only correct about a third of the time, so there is work to do with it.

Future work?

There are three possible things that I want to be able to do in the future.

The first is trying to parallelize it, possibly by using OpenGL or CUDA processing, but I will have to look into it quite a bit more.

Second would be optimizing it. Right now my largest problem is actually how large the problem is. Because of how I have things set in Java, my drawing aread is 250x450 pixels, giving me about 112,501 data points in each photo, and that many input nodes in the Neural Network. Needless to say, this is quite a bit of an issue. What I would like to do first is fix the GUI so that the drawing area is quite a bit less, probably 200x200 pixels. After that I would like to see about optimizing it further, changing how the drawing is saved and testing different ways on that.

Third, I would like to try and write the Neural Network myself rather than relying on Weka's example, even though they are pretty well written.