Webstart AI Vision demo in JME

So I’m experimenting with training vision algorithms (using general AI algorithms that I might apply to more more general problems) for my autonomous robotics class.



demo: http://www.cs.utexas.edu/users/aharp/vg/



Anyway, I coded up a prototype by connecting JME to a NEAT implementation called ANJI…  it needs more documentation, and you need to have the Java console enabled to actually see it learning, but I thought it was pretty cool looking at least.



Basically, right now it renders a whole bunch of different possible scenarios, and then asks the AI to classify them as to whether they have a torus or a box as the main subject.  The idea is that by generating tagged training data synthetically, we can vary the complexity and train a true AI from the ground up.  Versus laborious real world data acquisition in which the ground truth is absent.



Right now it does an ok job of discriminating between the two if the images don’t vary much, as any good NN would do, but you can turn up the complexity and watch it start to fail.  So I want to have it learn networks that determine more basic image properties, like edge placement etc, and have those networks feed higher level networks that learn to discriminate between objects.  Right now it’s just fed raw pixel data, so it can’t really make any high level generalizations.



IF it ends up working to any degree, then I want to expand my simulator and see if can start learning some properties of real-world physic (via jmephysics).  Basically, have it learn Newtons laws without having to program them in, in the same hiearchical manner that it learned vision.  Then I might start trying some simple behavioral stuff… but that’s a ways off :slight_smile:



Any comments?



Also, if anybody could tell me if it works on Mac/Linux, that would be great.  I've only been able to test with Windows so far personally, and the friend with a mac who tried it got some vague error runtime error before it even loaded the classes.  thanks

It does work on Linux (java 1.6, 32 bit VM). Looks nice, even though I have no idea what the behavior should be  :wink:

Works fine here on windows. I don't understand what any of the graphs/charts mean though…