Show HN: A Dalle-3 and GPT4-Vision feedback loop (dalle.party)
I used to enjoy Translation Party, and over the weekend I realized that we can build the same feedback loop with DALLE-3 and GPT4-Vision. Start with a text prompt, let DALLE-3 generate an image, then GPT-4 Vision turns that image back into a text prompt, DALLE-3 creates another image, and so on.
You need to bring your own OpenAI API key (costs about $0.10/run)
Some prompts are very stable, others go wild. If you bias GPT4's prompting by telling it to "make it weird" you can get crazy results.
Here's a few of my favorites:
- Gnomes: https://dalle.party/?party=k4eeMQ6I
- Start with a sailboat but bias GPT4V to "replace everything with cats": https://dalle.party/?party=0uKfJjQn
- A more stable one (but everyone is always an actor): https://dalle.party/?party=oxpeZKh5
155 comments
[ 0.31 ms ] story [ 213 ms ] thread"Write a prompt for an AI to make this image. Just return the prompt, don't say anything else. Replace everything with corgi."
Then it takes that new prompt and feeds it to Dall-E to generate a new image. And then it repeats.
Got stuck on Van Gogh's "Starry Night" after a while.
https://dalle.party/?party=LOcXREfq
Also, love the simplicity of this idea, would love a "fork" option. And to be able to see the graph of where it originated.
https://dalle.party/?party=7cnx55yN
Idk what it is, but I have a special soft spot for humor based around odd spelling (this video still makes me laugh years later: https://www.youtube.com/watch?v=EShUeudtaFg).
I don't think any human looking at drawing #3, which includes "CUNNFACE," "VODLI-EAPPERCO," "NITH-EASTER," "WORD," "SOCEIL MEDIA," and "GAPTOROU" would have worked out, as GPT did, that those were "pun-filled business buzzwords."
Is the previous prompt leaking? That is, does the GPT have it in its context?
the whole thing with the text in the images reminds me of this: https://arxiv.org/abs/2206.00169
and I found myself that dall-e sometimes even likes to add gibberish text unpromtedly, often with letters containing some garbled versions of words from the prompt, or related words
I'd love to see an alternative viewing mode here which shows the image and the following prompt. Then you need to click a button to reveal the next image. This allows you to picture in your mind what the image might like while reading the prompt.
Thanks for making this fun little app!
Update: I just realized you can get this effect by going into mobile mode (or resizing the window). You can then scroll down to see the image after reading the prompt.
Another attempt: https://dalle.party/?party=k4eeMQ6I
Realized just now that the dropdown on top of the page shows the prompt used by GPT-4V.
* not hide the prompt by default * not only show 6 lines of the prompt even after user clicks * not be insanely buggy re: ajax, reloading past convos etc * not disallow sharing of links to chats which contain images * not artificially delay display of images with the little spinner animation when the image is already known ready anyway. * not lie about reasons for failure * not hide details on what rate limit rules I broke and where to get more information
etc
Good luck, thanks!
My best guess to try to explain this would be that “gnome + art style + mushroom” will draw from a lot more concrete examples in the training data, whereas the AI is forced to reach a bit wider to try to concoct some image for the weird scenario given in the cat example.
It consistently shows a robot painting on a canvas. The first 4 are paintings of robots, the next 3 are galaxies, and the final 2 are landscapes.
Starting prompt: "A futuristic hybrid of a steam engine train and a DaVinci flying machine"
Results: https://dalle.party/?party=14ESewbz
(Addendum: In case anyone was curious how costs scale by iteration, the full ten iterations in this result billed $0.21 against my credit balance.)
Starting prompt: "A futuristic hybrid of a steam engine train and a DaVinci flying machine"
Results: https://dalle.party/?party=qLHPB2-o
Cost: Eight iterations @ $0.44 -- which suggests to me that the API is getting additional hits beyond the run. I confirmed that the share link isn't passing along the key (via a separate browser and a separate machine) so I'm not clear why this is might be.
That's an observation worth investigating. Here's another set of data points to see if there's more to it...
Input prompt: "Six robots on a boat with harpoons, battling sharks with lasers strapped to their heads"
GPT4V prompt: "Write a prompt for an AI to make this image. Just return the prompt, don't say anything else. Make it funnier."
Result: https://dalle.party/?party=pfWGthli
Cost: Ten iterations @ $0.41
(Addendum: I'd forgotten to mention that I believe the cost differential is due to the token count of each of the prompts. The first case mentioned had less words passed through each of the prompts than the later attempts when I asked it to 'make it whimsical' or 'make it funnier'.)
[0] https://i.imgur.com/q502is4.png
GPT4V instructions for all tests: "Write a prompt for an AI to make this image. Just return the prompt, don't say anything else. Make it weirder."
From what you'll see in the results there's possible evidence of bias towards the first subject listed in a prompt, making it the object of fixation through the subsequent iterations. I'll also speculate that "gnomes" (and their derivations) and "cosmic images" are over-represented as subjects in the underlying training data. But that's wild speculation based on an extremely small sample of results.
In any case, playing around with this tool has been enjoyable and a fun use of API credits. Thank you @z991 for putting this together and sharing it!
------ Test 1 ------
Prompt: "Two garden gnomes, a sentient mushroom, and a sugar skull who once played a gig at CBGB in New York City converse about the boundaries of artificial intelligence."
Result: https://dalle.party/?party=ZSOHsnZe
------ Test 2 ------
Prompt: "A sentient mushroom, a sugar skull who once played a gig at CBGB in New York City, and two garden gnomes converse about the boundaries of artificial intelligence."
Result: https://dalle.party/?party=pojziwkU
------ Test 3 ------
Prompt: "A sugar skull who once played a gig at CBGB in New York City, a sentient mushroom, and two garden gnomes converse about the boundaries of artificial intelligence."
Result: https://dalle.party/?party=RBIjLSuZ
These images are incredible but I often notice stuff like this and it kind of ruins it for me.
#3 & #4 are good too, when the tracks are smoking, but not the train.
Simply a cat, evolving into a lounging cucumber, and finally opposite world:
https://dalle.party/?party=pqwKQVka
Vibrant gathering of celestial octopus entities:
https://dalle.party/?party=lHNDUvtp
I tried three, demo here:
default
hyper-long + max detail + compression - This shows that with enough text, it can do a really good job of reproducing very, very similar images hyper-long + max detail + compression + telling it to cut all that down to 12 words - This seems okay. I might be losing too much detail Overall the extreme content filtering and lying error messages are not ideal; will probably improve in the future. If you send too long, or too risky a prompt, or the image it generates is randomly too risky, you either get told about it or lied to that you've hit rate limits. Sometimes you also really do hit ratelimits.Also, you can't raise your rate limits until you prove it by having paid over X amount to openai. This kind of makes sense as a way to prevent new sign-ups from blowing thousands of dollars of cap mistakenly.
Hyper detail prompt:
Look at this image and extract all the vital elements. List them in your mind including position, style, shape, texture, color, everything else essential to convey their meaning. Now think about the theme of the image and write that down, too. Now write out the composition and organization of the image in terms of placement, size, relationships, focus. Now think about the emotions - what is everyone feeling and thinking and doing towards each other? Now, take all that data and think about a very long, detailed summary including all elements. Then "compress" this data using abbreviations, shortenings, artistic metaphors, references to things which might help others understand it, labels and select pull-quotes. Then add even more detail by reviewing what we reviewed before. Now do one final pass considering the input image again, making sure to include everything from it in the output one, too. Finally, produce a long maximum length jam packed with info details which could be used to perfectly reproduce this image.
Final shrink to 12 words:
NOW, re-read ALL of that twice, thinking deeply about it, then compress it down to just 12 very carefully chosen words which with infinite precision, poetry, beauty and love contain all the detail, and output them, in quotes.
https://dalle.party/?party=Vwuu9ipd
https://dalle.party/?party=Pc3g4Har
My intuition says that the "poetry" part skews the images in a bit of a kitchy direction.
There was an article recently that said something like adding urgency to a prompt gave better results. I hope it doesn't stress the model out :D
https://arxiv.org/abs/2307.11760
If you're not using the API for serious stuff though it's not a big problem, as they moved to pre-paid billing recently. Mine was sitting on $0, so I just put in a few bucks to use with this site.
If OpenAI wants to support use cases like this, which would be kind of cool during these exploratory days, they should let you generate "single use" keys with features like cost caps, domain locks, expirations, etc
Or you can just re-insert any theme or recurring characters you like at that stage.
Rate limits are really low by default - you can get hit by 5 img/min limits, or 100 RPD (requests per day) which I think is actually implemented as requests per hour.
This page has info on the rate limits: https://platform.openai.com/docs/guides/rate-limits/usage-ti...
Basically, you have to have paid X amount to get into a new usage cap. Rate limits for dalle3/images don't go up very fast but it can't hurt to get over the various hurdles (5$, 50$, 100$) as soon as possible for when limits come down. End of the month is coming soon. It looks like most of the "RPD" limits go away when you hit tier 2 (having paid at least 50$ historically via API to them).
Edit: On the other hand as I think about it more, maybe it should be built into the model? Since the idea is to train the model on all of humanity and not a single culture, maybe by default it should be generating race-blind images.
If a Japanese company wanted to make an image for an ad showing in Japan with Japanese people in it, they'd be surprised to see a random mix of Chinese, Latino, and black people no matter what.
I'm telling the computer: "A+A+A" and it's insisting "A+B+C" because I must be wrong and I'm not sufficiently inclusive of the rest of the alphabet.
That's insane.
ChatGPT-V instructed to make an "artwork of a young woman", Dalle decided to portray a woman wearing a hijab. Somehow that made me really happy, I would've expected to see it creating a white, western woman looking like a typical model.
After all, a young woman wearing a hijab is literally just a young woman.
See Image #7 here: https://dalle.party/?party=55ksH82R
// also, it's the best way - TY @z991
1. You start by describing a thing. 2. The next person draws a picture of it. 3. The next next person describes the picture. repeat steps 2 and 3 until everyone has either drawn or described the picture.
You then compare the first and last description... and look over the pictures. One of the best ever was:
Draw a penguin. The first picture was a penguin with a light shadow.
After going around five rounds, the final description was "a pidgeon stabbed with a fork in a pool of blood in Chicago"
I'm still trying to figure out how Chicago got in there.
https://doodleordie.com/
https://drawception.com/
There's a few others but these were the quickest to get into and didn't require finding a group to play with, since they just pair you up with strangers.
At the same time, it perfectly illustrates my main issue with these AI art tools: they very often generate pictures that are interesting to look at while very rarely generating exactly what you want them to.
I imagine a study in which participants are asked to create N images of their choosing and rate them from 0-10 on how satisfied they are with the results. One try per image only.
Then each participant rates each other's images on how satisfied with the results based on the prompt.
It should be clear to participants that nobody wins anything from having the "best rated" images. i.e. in some way we should control for participants not overrating their own creations.
I'd wager participants will rate their own creations lower than those made by other participants.