Randomly Generated Art
d writes "The Gallery of Random Art displays 10 peices of random art along with voting, a la everything. The worst ones are trashed and replaced by a new drawing; The best ones are put in the all of fame, complete with formula. I found this over at memepool. "
This is sweet. What would be cooler is if the highly
ranked art could be used to seed more images. It would
also be cool if the images were super high res so they
would meet my sacred axiom of art ("art is better if it
can be my desktop image")
I made this random art in 1989, so it's nearly ten :-) It uses PostScript.
years old
The texts are intended as a spoof on pretentious art criticism.
http://www.groveware.com/~lee/aris.html
Live barefoot!
free engravings/woodcuts
I didn't care for any of the works. They looked too pointless and generic. Perhaps there is something to be said for the "human touch."
Actually, some of my favorite "artificial" art has come from the occasions when my laser printer gags on a document, and produces bizzare interpretations of it.
As a side note, I've made some high quality montage prints of hex dumps, which are framed, and hang in my living room
A really good way to get better art might be to have (many) people critique these randomly generated art works and train the critique engine (a neural net?) to simulate centroid human tastes. Then the thing can crank out bazillions of test cases and SELF critique using the trained net. Eventually you might be able to teach the "random" drawing engine to draw things with inherent beauty in the first place.
Then, you could _run_ it on your desktop
as an ever-changing background. Of course,
it'd probably produce something ugly most of
the time.
This is a really interesting idea. Some of the hall of fame entries are really nice. (I especally like the first one.) I wonder what other sorts of areas would yield interesting results when mixed with evolution.
--Phil (I recall reading about someone working on randomly evolving redcode warriors--that was interesting.)
355/113 -- Not the famous irrational number PI, but an incredible simulation!
What program was used to generate this pictures? Mathematica?
Karl Sims did this in Paris about ten
years ago. Genetic algorithms, but instead
of voting, he had monitors around the room
with weight sensors in the floor in front
of them. Images that had people standing in
front of them more often won, under the assumption
that they were what people liked to look at.
The others lost, and then everything regenerated.
It's too bad most of these derivitave projects
pretend that they haven't read old
siggraph proceedings.
We had a slightly different type of computer art gallery when I was in grad school. It consisted of various mistakes that were made when we generated plots and images. You know the type: the computer did what I told it to do, not what I wanted it to do. Some of the screwed up plots turned out to fairly artistic, so we started putting them up on a bulletin board. Our two main profs also put up artistic plots that they generated by mistake.
This is a very unique /. effect. You can load the page, but you'll never see the picutures, because when someone does see the picture, they won't like it (we have such taste!), so it has to generate a new picutre, which you can't see for a while. Odd.
Unless I read something wrong, if those equations are correct, it is possible for a painting to be both popular and unpopular at the same time. It looks like it wasn't designed for a lot of people to hit it at once (as with /.), because as soon as 5 people mark a picture bad, it is unpopular, regardless of how many people have marked it good.
Shawn Asmussen
There is an explanation of how the art is created, it should be easy to take winning formulae and stick them into something like the Gimp or Mathematica. Then you'll get the resolution you want.
In fact, thats such a cool idea this weekend is going to be dedicated to learning script-fu, which I've put off for way too long. But it could be done easier in mathematica.
Code on!
I dub the first image "Tux Rising".
--
Jason Eric Pierce
You think art is alienating because it isn't designed by committe? That an artist working alone produces a work of art to make an academic point? What planet are you from? I didn't say art should be alienating, just that great art isn't a commuinty effort.
I just realized - the guy was MY TA for ModMath
at CMU! Cool.
Anyway, I thought the pictures were cool. I did
my fair share of sin/cos and rgb playing in my
day as well. But it simply isn't as good as
chaotic/fractal images are.
IMHO, though, the author is cool.
--
The one I recall used an HTML form to collect the results over a 24 hour period. I assume that the file of votes would then be read and used as a fitness function against the artwork on display. Then, the top couple of pieces would form the seed of the next population.
In essence, I think they discarded the bottom half of entrants. Then, they used the top half (combining genetic instructions) to generate more, with a chance of mutation.
It wasn't real time, and certainly predated Java.
- Porter
Anyone have sample source code for the algorithm? Sure, I could figure it out on my own, or I could just ask the guy, but I bet he's been inundated with requests already.
--
Timur "too sexy for my code" Tabi, timur@tabi.org, http://www.tabi.org
Okay, I also have a random art generation program
written in java at me page at http://www.clark.net/pub/rfinney. It's not as cool as the current topic's; but it's Open Source. It's called "randomart1" and it's interactive. If you don't like the current image, click on touch.
-rfinney
die kunst ist tot
es leihe die machininkunst
Art that reaches out to the masses is not good art. It's marketing.
One of the mags in my bathroom has an article about an artist who went about creating art based on public opinion surveys that he commissioned. People in various countries would be shown several pictures and asked to pick which one they liked. The results were kind of mundane, sort of like the pictures you see in hotel rooms, but kind of funny. The most preferred image was a figure in "historic" clothing standing next to a lake, with a bluish background. The least preferred one was a more modernistic image consisting of a few vertical color bands.
There's a URL for this project somewhere, but I'll be darned if I can remember what it is, and I'm at work so I can't get the mag.
---- "If we have to go on with these damned quantum jumps, then I'm sorry that I ever got involved" - Erwin Schrodinger
This is my first /. post, so be gentle with me.. :)
;) Not too long, now!
I wrote a "genetic art" program for the Mac a few years back that did some really cool stuff. (You might have seen it's output on my "gamedev" site). Now that I've seen the Linux light and thought about it some, I'm working on a second one that is going to be fantastic. Currently a GIMP plugin, possibly a screensaver (but I'm new to Linux coding), and looking for ideas and comments.
I'll be sure to brag about it here when I get it done and up with a web site..
Does it really take that long to compute those? :)
This is my first /. post, so be gentle with me.. :)
You goddamn, monkey-f*ckin, sorry sack of sh*t! What the f*ck are you doing wasting our time with this incoherent, idiotic, putrid proto-piss? I oughta break your f*ckin face with the butt of a 2x4, you worthless, half-ass f*ckin joke! I guess you think you're some kind of hot sh*t, huh? Yeah... that's it. Look at me! I wrote a f*ckin little program! I'm Albert f*ckin Einstein! Go off in your little corner and beat off, or whaever the hell it is you do to get your little kicks, you degenerate pr*ck, and don't let me see one more f*ckin smartass post from your mealy mouth.
Hey -
I recall a very similar project done at CMU via the web in which genetic programming was used to generate art. You could vote on which ones you liked best, and then the higher ranked algorithms were used as seeds for the next set of generated images.
No idea what the URL is anymore, and even if it's still running.
- Porter
Taco, the archive of the best images has large images to download if you follow each picture's link.
d
reishus_m@hotmail.com
NOTE: The site is currently flooded with requests because we did not anticipate such high load. Please bear with us while we fix the problems. Currently, you will not be able to
vote. I plan to fix this by the end of the day. Thank you. (Andrej Bauer)
Hehehe
Several years ago, Wired had a spread of "sexual" art -- that is, random pictures that were combined with each other and with occasional mutations. It was cool. I wonder what happened to it.
Switch the . and the @ to email me.
I played around in there for about 10 minutes, trying to get a perfect triangle, by breeding only the best art. I eventually decided that there is no perfect race.
Ian.
That damn /. effect does it every time. :)
An interesting idea. The only problem I can see is that the ranking function is too random to be of any good. In order for a GA to work, you need some way to define what is a "good" result from what is a "bad" result. This function should work the same way each time, unlike the voting process. Unfortunately, there isn't a general "algorithm" for separating good art from bad, so it's not likely that a GA will produce some artwork univerally recognized as "good"
Here's another neat web page about GAs and artwork:
http://www.daimi.aau.dk/~hhl/ap.html
If he's getting votes on image quality, one presumes he is using some sort of cache and not just generating ten completely new images per page-view.
Check out this painting project by K&M: http://www.diacenter.org/km/
I turned Andrej's code into a screensaver for Windows*. It's off my home page.
http://www.cs.cmu.edu/~roc
* Yes, yes, I'll convert to Linux as soon as I'm done with my thesis.
. . . would be if they used the feedback to train a neural network, to teach it what looked "good" and "bad"
LB
By definition, the more people that provide input to the algorithm, the more average (== bad) art produced.
I'm just psyched to see memepool finally get mentioned here.
I dont understand what exactly reads/intreprets the formulas and turns them into images. I get what the 'formulas' are, just not what you input them into so that you get the image. Could anyone clue me in on this?
:)
Thanks!
Based on the votes I saw there for the various random art pieces, most people have bad taste :) Maybe then they'd be popular as tiles for E!
I apologize for the poor functioning of the Random Art site. It's just an old PowerPC running AIX. I will try to fix it tonight.
You may also want to look at the original "Genetic Art" site by Michael Witbrock and John Mount at http://www.geneticart.org/ . They were my office mates a long ago and that's where I got the idea for Random Art from. Originally I was going to rewrite Genetic Art because their site was down, but it turned into Random Art when I got lazy and didn't bother to implement the genetic part of it.
The main improvement of my Random Art over theirs is that they used a grammar (set of rules) for generating their images. My stuff is written so that it uses an arbitrary context-free grammar with probability labels on alternatives to generate images. The idea is that one day I'll have the grammars evolve rather than just the images themselves. This way you can "evolve" a Jackson Pollock-like grammar, say, which produces images that all look like Jackson Pollock paintings. But I should write my Ph.D. first.
One day I will make my Java version of Random Art available outside CMU. Maybe soon but I can't promise.
Andrej
heh.. I can see curators having seizures with titles like this:
if[mult[exp[div[sin[plus[sin[y[]], y[]]], mult[exp[exp[y[]]], mod[BW[0.744462], BW[-0.246829]]]]], exp[exp[mult[mult[sin[mix[mult[x[], BW[0.563257]], div[BW[-0.703968], y[]], plus[BW[-0.762336], y[]], div[x[], BW[0.376424]]]], mod[BW[-0.367003], plus[y[], x[]]]], exp[plus[x[], mod[div[x[], x[]], div[BW[0.0816604], mult[BW[0.997682], y[]]]]]]]]]], plus[sin[rgb[exp[sin[BW[-0.134705]]], y[], div[sin[y[]], y[]]]], mix[mult[mult[exp[exp[x[]]], mix[exp[mult[exp[plus[y[], y[]]], mix[x[], BW[-0.588491], BW[-0.462407], y[]]]], sin[BW[0.739005]], mult[x[], mod[mult[x[], y[]], BW[0.640864]]], exp[plus[mix[sin[BW[0.775293]], x[], sin[x[]], plus[y[], x[]]], div[y[], y[]]]]]], mod[plus[sin[exp[sin[y[]]]], div[exp[div[BW[0.117962], BW[-0.38489]]], exp[mix[x[], y[], x[], y[]]]]], plus[div[mod[y[], y[]], div[y[], y[]]], sin[div[BW[-0.528308], y[]]]]]], sin[mult[mult[div[sin[plus[x[], y[]]], plus[x[], x[]]], sin[mix[BW[-0.0141159], y[], y[], y[]]]], mod[exp[exp[x[]]], mod[x[], x[]]]]], mod[mod[plus[sin[RGB[0.287492, -0.916215, 0.184998]], rgb[x[], y[], BW[0.268534]]], plus[sin[y[]], plus[div[x[], BW[-0.956589]], mod[mix[x[], x[], x[], x[]], mult[y[], x[]]]]]], mod[sin[sin[plus[BW[-0.555374], BW[-0.147544]]]], mult[mod[y[], y[]], sin[y[]]]]], mult[exp[mix[exp[mult[plus[y[], x[]], y[]]], mix[y[], plus[y[], y[]], mult[x[], x[]], exp[sin[BW[0.190249]]]], mix[exp[BW[-0.710606]], BW[0.95852], RGB[0.182279, -0.745795, -0.617692], RGB[-0.845082, 0.907495, 0.0722221]], y[]]], rgb[mod[plus[mult[x[], y[]], y[]], mix[y[], x[], x[], x[]]], div[div[exp[y[]], x[]], y[]], mult[mod[mod[y[], y[]], mult[x[], BW[-0.710556]]], div[plus[y[], BW[-0.582527]], x[]]]]]]], mix[mult[mix[mult[mult[x[], BW[0.840808]], sin[y[]]], exp[BW[-0.117906]], mix[sin[x[]], plus[y[], BW[-0.139147]], div[BW[0.861545], mult[x[], y[]]], plus[y[], x[]]], div[x[], exp[BW[-0.217147]]]], plus[div[mod[x[], div[mix[x[], x[], BW[-0.538139], x[]], mix[y[], plus[y[], BW[0.782455]], plus[x[], x[]], exp[y[]]]]], mult[sin[y[]], mod[mod[BW[-0.800431], y[]], sin[y[]]]]], div[mod[mult[y[], div[mix[sin[x[]], BW[0.783393], mult[y[], y[]], y[]], plus[y[], x[]]]], sin[div[mix[y[], x[], BW[-0.984569], BW[0.43804]], sin[x[]]]]], mod[mod[mod[x[], y[]], BW[-0.393411]], div[sin[y[]], mult[mult[y[], x[]], y[]]]]]]], exp[sin[sin[y[]]]], rgb[div[exp[plus[x[], mix[mult[plus[y[], BW[-0.195825]], mult[x[], x[]]], mod[mix[BW[-0.886511], BW[0.125519], y[], x[]], BW[-0.969397]], mod[exp[BW[0.589023]], mult[x[], BW[-0.652195]]], mult[x[], x[]]]]], plus[mix[x[], y[], plus[BW[-0.638178], plus[BW[-0.603652], y[]]], div[exp[BW[0.52687]], sin[x[]]]], mix[mix[BW[0.69651], mix[BW[-0.347671], y[], BW[-0.943974], x[]], mod[mix[y[], x[], y[], y[]], mod[BW[-0.25501], y[]]], plus[y[], y[]]], plus[mod[mod[BW[-0.595514], x[]], div[x[], BW[0.736923]]], exp[BW[-0.690789]]], mult[mod[BW[-0.385442], y[]], BW[0.41281]], exp[exp[x[]]]]]], exp[mult[exp[y[]], plus[mix[BW[-0.968401], y[], y[], y[]], mix[BW[0.582734], BW[-0.395017], BW[0.647448], y[]]]]], div[sin[sin[plus[y[], BW[-0.111518]]]], div[exp[mix[BW[0.206057], x[], x[], BW[0.922087]]], exp[y[]]]]], rgb[plus[plus[mult[div[sin[BW[0.642002]], mult[y[], BW[0.68477]]], sin[BW[0.587625]]], mod[mod[x[], x[]], y[]]], exp[plus[x[], x[]]]], exp[y[]], mult[div[y[], BW[-0.0481228]], mult[y[], y[]]]]]]