Ganbreeder is pitched as a “collaborative art tool for discovering images”. What it’s really for is is a tool for creating abominations.
Ganbreeder is (as the name suggests) a GAN, or generative adversarial network. This is a type of neural network which can be used to generate images (or other media) using a pair of algorithms- a generator, and a discriminator. If you ask the system to generate an image of a dog, the generator will make a dog. The discriminator will then try and discern if the image is a dog or not. The results of this will then be fed back in to the generator. This can be used to generate pretty realistic looking images.
In the case of Ganbreeder, the system doesn’t just generate a simple image. It makes use of what is called latent space. We can consider each image as an array of pixels, each with associated RGB (red green blue) values. This is taken in to your neural network based image processing system, and some form of magical maths happens to generate your output. When a system is being trained, the exact magic between an input image and an output classification is tweaked rapidly. The end result a set of seemingly arbitrary mathematical processes that are carried out on an image to receive the desired outputs. These take place in the hidden (latent) layers of your neural network.
Once you’ve got your set of mathematical representations that can be used to classify an image, you can then use them to generate images; a set of manipulations that can be applied to a blank canvas to create the object that you want an image of. Your generator algorithm generates using these as a guideline, an the discriminator discriminates. Between them, you can have image synthesis systems with pretty good results.
These mathematical manipulations taking place on the blank canvas can be referred to as the latent space (or vector space) of a model. The way that Ganbreeder works is that it finds the mathematical mid points between these generation models. Say you have a model that generates a picture of a groom, and one that generates a brown bear. Ganbreeder can find the mid point between these (which incidentally is awful).
I’ve spent a bit of time playing around with this system, seeing what happens when you mix various things together. It’s pretty good fun! This is a pug-puffer fish (pugger fish?):
This is its friend, the bullterrier-beetle (I’m going with bulltle):
The animal related generations tended to be quite fun, but once you get people involved it gets a bit weird.
I’m not convinced that I would want to see that abomination at Buckingham Palace really.
Getting sea anemones involved with the groom-brown bear didn’t go down so well either.
Some of the images were strangely beautiful (in my opinion anyway). I quite enjoyed this great grey owl-wall clock:
I also quite liked playing around in the space of bookcase-organ-streetcar-window screen:
Something that struck me was how the text generated by the system looking (using menu and book covers as genes):
Although the system didn’t say it, there’s definitely a bit of bank card in that above image. Fun side note, that’s actually an interesting security risk that’s been discovered in some GANs: you can nudge the system towards providing exact pieces of input data back out, which can on occasion be sensitive.
At one point the system was generating things that wouldn’t look entirely out of place in the Elder Scrolls: Oblivion:
As the text is being synthesized it’s not of any real language, but it does look somehow Daedric to me. I found that it was generally quite a cool effect!
Perhaps one day we’ll have games with randomly generated visuals?
Either way, Ganbreeder is free to play with, so I’d recommend checking it out and seeing what fun abominations you can come up with!
[…] Janelle Shane pointed out that not only can Ganbreeder be used to make synthesise images of a given category, it also has the option to create “opposites” by synthesising […]