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
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.
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!
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
--
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
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? :)
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
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.
. . . would be if they used the feedback to train a neural network, to teach it what looked "good" and "bad"
LB
I'm just psyched to see memepool finally get mentioned here.
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[]]]]]]