I've spent the past two months working on an (overly ambitious?) project I call pony-net. It has gone through some revisions, but its core purpose is to be able to differentiate between pony and non-pony images. (Right now though, it's about detecting the presence of specific ponies in images.)
It's just about reaching an alpha stage, so I figured I would make this post. This is a program I really wanted to exist, so I went about working on it. But am I crazy? Is this relevant to any other bronies? Is it something anypony else would want or care about? I would really appreciate feedback on the idea of this, and whether I should release it as a website demo/web api (in addition to the source) when I'm done. Thanks in advance for any thoughts/considerations on this matter.
Now for the technical details of the project and its current progress:
Pony-net is written in C. It's currently 833 lines of code and depends on libmagickcore, libconfig, and (likely?) some replaceable bits of glibc. The current compile script assumes pkg-config is installed, but this project should be trivial to compile manually. I have only compiled and tested this on Linux so far, but it shouldn't have issues compiling/running on Windows or OSX if the proper libraries are installed.
The current source code (updated just about daily) can be found here: http://callstack.org/svn/Experiments/PonyMatch/
The first attempt was to train a neural network. I finished all of the code, but was not able to properly train the net into producing any meaningful results (a neural net with a half million inputs is a little unwieldy.) I have postponed the neural net approach, but have not given up on it completely. In particular, I was using a back propagation neural network from an open source library; next time around I'm going to try writing my own adaline net and reducing the inputs.
The second, and current attempt, works on a fundamentally different principal. Rather than being trained to recognize the concept of a pony, it's trained to recognize specific ponies. (Ponies are defined as sets of primary, secondary, and outline colors.) It works by scanning lines of an image, finding contiguous regions of similar colors, reducing that set to regions of contiguous pony colors (that match certain c