Table of content
- 1 - Cats
- 2 - Robot
- 3 - Donut
- 4 - Dackel
- 5 - Poster
- 6 - Citylife
- 7 - Dolphin
- 8 - Light
- 9 - Monster
- 10 - Cyberpunk
- Technical write-up
What is this all about?
We were curious about how much variance the AI has. So, what would be the results if we were to request 100 images with the same prompt? - I won’t review the results and rather just present the results to you.
These prompts are a result of a quick brain storming. If you have suggestions, please let me know. I might create more posts like this in the future. The goal was to have a wide range to motives, styles, and so.
These images are unedited. Generated - downloaded - created a montage; that is it. These images are free for personal or commercial use and do not require any form of mentioning. Dall-e gives ownership of the images to me, and I give you permission to do with it, whatever you want.
The resolution of the originals is 1024x1024 and I might provide a download link at some point. If you want a single image, feel free to reach out.
With testing, the total costs were around 20 EUR. I’d say that it is acceptable.
You can find a technical write-up at the end of the post. But as a disclaimer: not best-practice. Feedback is still appreciated.
Gallery
So, enjoy!
1 - Cats #
photo of a kitten on a carpet in the living room, digital art
2 - Robot #
small robot wandering around in an post-apocalyptic world, digital art
3 - Donut #
minimalist logo of a donut shop
4 - Dackel #
dackel in a suit in a library, digital art
5 - Poster #
movie poster for an action movie from the 80s, digital art
6 - Citylife #
a black and white photo of the life in new york
7 - Dolphin #
sticker illustration of a cute dolphin
8 - Light <a href="#light id=“light”>#
area view of a city with street lights at night, digital art
9 - Monster #
detailed sketch of an evil monster, digital art
10 - Cyberpunk #
realistic photo of a colorful cyberpunk city in the rain at night, digital art
Tech write-up #
Side note: To be clear, this is not best-practice. It got its job done, and that is all I needed. Still, feel free to reach out, happy to learn!
First, openai Dall-E API offers to generate the following sizes, with 3 different prices:
Resolution Price
1024×1024 $0.020 / image
512×512 $0.018 / image
256×256 $0.016 / image
I’ve generated the largest resolution.
Limitations
So, I’ve decided to use the API via curl, the first limit I encountered is the ‘10 images per request’.
{
"error": {
"code": null,
"message": "20 is greater than the maximum of 10 - 'n'",
"param": null,
"type": "invalid_request_error"
}
}
The next one would be the rate limit of 50 images per 5 minutes.
{
"error": {
"code": null,
"message": "Rate limit reached for images per minute. Limit: 50/5min. Current: 60/5min. Please visit https://help.openai.com/en/articles/68839691 to learn how to increase your rate limit.",
"param": null,
"type": "requests"
}
}
In the end, the download of the generated images was limited too. After every category I had to switch to another VPN server location to bypass the limit.
Script to download them all!
I did a small break after every category to check the result of the script, and whether all images were generated and downloaded.
- I’ll add some comments later, but in short:
- generate images and put curl response to file
- get URL from output file and remove the quotation marks
"
- download images via curl
- wait one minute to avoid rate limit
#!/bin/bash
# For for-loop for the whole script due to the limitations
# Curl request to generate the images via API, and the save the output via -o flag to a file
for i in {1..10};
do
echo $i
curl -o output.txt https://api.openai.com/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-sdsdskdsdsdsdeefefe" \
-d '{
"prompt": "small robot wandering around in an post-apocalyptic world, digital art",
"n":10,
"size":"1024x1024"
}'
# Gets the URLs of the generate images, removes quotation marks, and saves it to a new file (one URL per line)
cat output.txt | jq '.data[].url' | sed 's/"//g' > output_url.txt
# Finally, download images with curl to the current directory. I was told that this is not bet practice, but it worked.
cat output_url.txt | while read f; do curl "${f}" -O; done;
# wait 60 seconds before we start it all over again
sleep 60
done
Things to improve: start/stop, logs, error and information notification, speed
Rename everything
In the next step, I had to rename all the files. The file names were cryptic and difficult to work with.
#!/bin/bash
a=1
n=cats
for i in ./1_cats/*; do
new=$(printf "./1_cats/"$n"_%04d.jpg" "$a")
mv -i -- "$i" "$new"
let a=a+1
done
The name scheme would look like: cats_0001.png
Create montage with imagemagick
In the last step, I used imagemagick
to create a montage with the following command.
montage -geometry 200x200+2+2 -tile 4x -set label '%f' *.jpg montag.jpg
- Explanation:
montage
# imagemagick function to create montages-geometry 200x200+2+2
# size per image + min size of the padding between the images-tile 4x
# setting for the layout, 4 columns, unlimited rows. 3x4 would be a limit of 3 columns and 4 rows-set label '%f'
# adds the filename of the image on the montage*.jpg
# use ALL.jpg
file within this directory for the montagemontag.jpg
# name and format of the final montage
Most recent Articles: