Evolutionary Art

Producing artwork using evolutionary algorithms.

Moshe Sipper, Ph.D.
The Generator
Published in
4 min readJan 19, 2024

--

In the past few years artificial intelligence, and in particular generative deep learning, has been producing striking artwork at an increasing rate. In this article I’d like to take a different route and talk about a work my colleagues and I did a few years back (see references in the end), in which we generated artwork through an evolutionary algorithm, rather than deep learning.

An evolutionary algorithm solves a problem by evolving an initial population of candidate solutions, through the application of “genetic”
operators, such that in time fitter (that is, better) solutions to the problem emerge.

If you’d like to learn a bit more about evolutionary algorithms — maybe even have fun with a bit of code — I’ve written these two Medium articles:

Evolutionary art is a branch of evolutionary algorithms wherein artwork — images, videos, music — is generated through evolution.

Our work focused on evolving artistic images. A cool idea we used is that of coevolution: the simultaneous evolution of two or more species with coupled fitness. Fitness, or fitness function, is the quality measure that drives an evolutionary algorithm to produce better and better solutions. It is the analog of a loss function in deep learning.

Coevolving species usually compete or cooperate, with a third form of coevolution being commensalism, where members of one species gain benefits while those of the other species neither benefit nor are harmed.

Source: Sipper, Moore, Urbanowicz, “Coevolving Artistic Images Using OMNIREP”.

We introduced an algorithm called OMNIREP, for ‘OMNI’ — universal, and ‘REP’ — representation. With a standard evolutionary algorithm there’s a population of candidate solutions, where each solution is represented in a fixed manner. For example, if we’re trying to evolve the best setting of switches for some gizmo, then a bitstring can represent a possible solution, where 0 means the switch is off, and 1 means the switch is on. Our fitness function will assign a quality value to each bitstring in the population, depending on the on-off settings it represents. And once we’ve got a way to represent individual solutions in the population, and a way to measure their fitness — we’re basically set to run an evolutionary algorithm. Woo-hoo!

OMNIREP uses cooperative coevolution with two coevolving populations, one of representations, the other of interpreters of those representations. Essentially, we did away with the fixed representation. The fitness of a given representation depends on representative interpreters. The fitness of a given interpreter similarly depends on representative representations. By “representative” we mean best solutions in the other population from the previous generation.

Source: Sipper, Moore, Urbanowicz, “Coevolving Artistic Images Using OMNIREP”.

Once a representation and an interpreter “join hands”, we’ve got ourselves a solution that can be evaluated by the fitness function. The solution itself is just a bunch of pixels, that is, an image. The fitness value of a candidate image is then measured as the distance to a given, ‘inspirational’ image. These are the ones we used:

Source: Sipper, Moore, Urbanowicz, “Coevolving Artistic Images Using OMNIREP”.

Perhaps the coolest aspect of this setup is that we can produce a ‘panel’ of images, showing the evolutionary trajectory of evolving artwork, that is, images in intermediate generations of an evolutionary run (an iteration in an evolutionary algorithm is called a generation).

Now that we have the evolutionary algorithm all locked and loaded — it’s time to sit back and let evolution do its magic…

Here’s a bunch of sample art panels produced by evolution:

References

--

--

Moshe Sipper, Ph.D.
The Generator

Swashbuckling Buccaneer of Oceanus Verborum 🌊 4x Boosted Writer 🚀