Tuesday, June 8, 2010

IBreeder

To learn C# programming I've been writing a piece of software which "breeds" images. The images are created from expression trees.  Tree nodes include things like usual math operators such as plus, minus, multiply etc. But there are also nodes which are noise functions, fractal calculations and the like.

The program creates random trees and evaluates them to produce an image. The user selects which images look interesting, and these are "bred" together to produce new expression trees which have properties of each parent. Hopefully (sometimes), over many generations, more pleasing images evolve through what the user finds interesting in each "parent".

The goal is to have an artificial neural network learn which images a user finds pleasing, and to select the parent images itself. Hopefully creating an "artificial artist" which will do all the image selection by itself and eventually create some cool abstract images.

More to say about this later...