New announcement for DALL-E 3!
Coming Soon! (October for the API)
New announcement for DALL-E 3!
Coming Soon! (October for the API)
Awesome! Dall-E has always held a special spot in my heart. It works so sweet to capture the semantics of the prompt.
Very excited to try it out. Incorporating it into ChatGPT is going to sweet. I wonder how that will work exactly? It must cost credits?
Also, this image, with the prompt that created it is incredible.
Also, what?
DALLĀ·E 3 is now in research preview, and will be available to ChatGPT Plus and Enterprise customers in October via the API
So one has to be subscribed to ChatGPT Plus to access Dall-E via the API? Surely not?
Just saw this wonderful announcement:
Is it available via the API yet and if so, doc link please? If not, when?
Coming in October, donāt know what date yet.
DALLĀ·E 3 is now in research preview, and will be available to ChatGPT Plus and Enterprise customers in October via the API, and in Labs later this fall.
The experimental version this summer was so great. Iām betting 3 is even betterā¦
Not sure, I had access to the Dall-E experimental plugin for a while, was suuuper cool. Did the best cartoons Iāve ever seen.
Ahhh Iām envious. Dall-E kicks ass. I love the ability to āgrowā the art. Canāt wait to see the masterpieces
If Dall-E is your thing, the Discord has daily image theme competitions and is very active on the creative side of things, worth a visit. OpenAI Discord
The samples are beautiful. Undeniably a step up from DALL-E 2. Anyone know if there a paper to go along with this announcement?
Exciting, I wonder how this compares to the updated version of DALLE that Bing image generator has been using. Same thing or even newer?
In the alpha plugin I was testing it was significantly different, the Bing one was the same as the Dall-E 2.Exp (experimental). I preferred the Plugin through ChatGPT, it was also able to create business documents and signs, logos, info graphics and that kind of thing. Pumped about it being fully finished now and almost ready to go.
Semantics?
This prompt doesnāt say to āmake half the tiger out of treesā. āStands tall and proudā is not āa floating entityā. But this is often seen currently where a wrongly-placed word will twist the whole image.
Best of 4 Bing AI image from the prompt:
Re-written:
It looks like the new Dall-e is 1348 in the example: portrait and landscape will be well appreciated if thatās not a crop. Well-defined and detailed imagery.
Thanks Paul! Iām really looking forward to it. I made a virtual world builder with integrated Dalle-2 support via an in-world chat window. But I had to add a manual import feature because Leonardo AI and Midjourney were just too far ahead (until now) and made Dalle-2 look like an amateur tool. This is really exciting for me.
Of course, itās not perfect. I am comparing it to other models like Stable Diffusion where itās mainly keyword-focused (Dall-E can be as well but I find it much nicer in just āflowingā out sentences and having it capture it). So I can do
āan idea depicted as an explosion of color de la cabeza de una person anonimo, forming a new galaxy with billions of stars, master workā (donāt ask why I decided to go spanish halfway)
or
" An ethereal dance of a beautiful cyberpunk couple. The definition of harmony, colors and musical notes are creating from apparent thin air. The world around this dancing couple is a quantum delight of particle explosions and stars, illuminating the love they have for eachother"
Instead of
āhighres, shadows, absurdres, best_quality, ultra_detailed, 8k, extremely_clear, photograph, beautiful, sharp focus, hdr, underwater, giant whale, fantastic location, dream, flying, underwater cyberpunk cityā
How was it with adhering to the prompt text? Itās pretty much an ubiquitous problem with all of the current AI gen tech, image and video, that each of them have their own massive blinds spots when it comes to following the prompt. You literally canāt force them to do simple things like, depending on the model, have the main object cross the screen from to right (video/Pika Labs), etc. and you learn to modify your prompt attempts to complement the manifold surface of their weak spots. Did you see much of that with Dalle-3 experimental?
Also, did OpenAI ever even hint at coming up with their own video gen service? That would be amazing!
Haha! Love the pre-Sharknado pic. ![]()
Really good in my opinion!
āsmall set of 4 images (32 pixels) potion icon simple design (photorealistic illustration) (gamedev) (Unreal Engine 5) (game ready icon assets) (black background)ā
I can show some comparisons if you want. Itās night and dayā¦
Text wasnāt perfect, but it was doing a lot better⦠hands tooā¦
?? so are the endpoints going to change from Image.__ , or do we just add the model in the parameters as such once we have access in October?;
import os
import openai
import requests
from datetime import datetime
import uuid
openai.api_key = āapi_hereā
def save_image(image_url, save_path):
response = requests.get(image_url)
with open(save_path, āwbā) as f:
f.write(response.content)
print(f"Image saved at {save_path}")
def create_image(prompt, n=1, size=ā1024x1024ā, save_dir=ā./images_creationsā):
response = openai.Image.create(prompt=prompt, n=n, size=size, model=ādall-e-3ā) #just add it here when referring to endpoint calls?
image_urls = [data[āurlā] for data in response[ādataā]]
if not os.path.exists(save_dir):
os.makedirs(save_dir)
for i, image_url in enumerate(image_urls):
save_path = get_save_path(prompt.replace(" ", "_"), save_dir, f"creation_{i}")
save_image(image_url, save_path)
return image_urls
def create_edit(image_path, mask_path, prompt, n=1, size=ā1024x1024ā, save_dir=ā./images_editsā):
with open(image_path, ārbā) as image_file, open(mask_path, ārbā) as mask_file:
response = openai.Image.create_edit(
image=image_file,
mask=mask_file,
prompt=prompt,
n=n,
size=size,
model=ādall-e-3ā #just add it here when referring to endpoint calls?
)
image_data = response[ādataā]
if not os.path.exists(save_dir):
os.makedirs(save_dir)
image_paths = []
for i, data in enumerate(image_data):
save_path = os.path.join(save_dir, f"{prompt.replace(' ', '_')}_{i}.png")
save_image(data['url'], save_path)
image_paths.append(save_path)
return image_paths
def create_variation(image_path, n=1, size=ā1024x1024ā, save_dir=ā./images_variationsā, model=ādall-e-3ā): #and here when referring to endpoint calls?
with open(image_path, ārbā) as image_file:
response = openai.Image.create_variation(
image=image_file,
n=n,
size=size,
)
image_data = response[ādataā]
if not os.path.exists(save_dir):
os.makedirs(save_dir)
image_paths = []
for i, data in enumerate(image_data):
save_path = os.path.join(save_dir, f"{os.path.basename(image_path).replace('.png', '')}_variation_{i}.png")
save_image(data['url'], save_path)
image_paths.append(save_path)
return image_paths
#image_paths = create_image(āA cute baby sea otter kitty saying meowā, n=2)
#edit_paths = create_edit(image_paths[0], āpath/to/your/mask.pngā, āA modified image descriptionā, n=1)
#variation_paths = create_variation(image_paths[1], n=1)
def get_save_path(base_name, save_dir, suffix=āā):
timestamp = datetime.now().strftime(ā%Y%m%d_%H%M%Sā)
unique_id = str(uuid.uuid4())[:8]
filename = f"{base_name}{suffix}{timestamp}_{unique_id}.png"
return os.path.join(save_dir, filename)
def listen_for_commands():
while True:
try:
command = input("Enter a command: ā)
args = command.split(ā ")
if args[0].lower() == "create":
if len(args) < 2:
print("Usage: create <prompt> [n] [size] [save_dir]")
continue
prompt = args[1]
n = int(args[2]) if len(args) > 2 else 1
size = args[3] if len(args) > 3 else "1024x1024"
save_dir = args[4] if len(args) > 4 else "./images_creations"
image_urls = create_image(prompt, n, size, save_dir)
print("Generated image URLs: ", image_urls)
elif args[0].lower() == "edit":
if len(args) < 4:
print("Usage: edit <image_path> <mask_path> <prompt> [n] [size] [save_dir]")
continue
image_path, mask_path, prompt = args[1], args[2], args[3]
n = int(args[4]) if len(args) > 4 else 1
size = args[5] if len(args) > 5 else "1024x1024"
save_dir = args[6] if len(args) > 6 else "./images_edits"
create_edit(image_path, mask_path, prompt, n, size, save_dir)
elif args[0].lower() == "vary":
if len(args) < 2:
print("Usage: vary <image_path> [n] [size] [save_dir] [save_option]")
continue
image_path = args[1]
n = int(args[2]) if len(args) > 2 else 1
size = args[3] if len(args) > 3 else "1024x1024"
save_dir = args[4] if len(args) > 4 else "./images_variations"
save_option = args[5] if len(args) > 5 else ""
image_urls = create_variation(image_path, n, size, save_dir)
if save_option.lower() == "save":
base_name = os.path.splitext(os.path.basename(image_path))[0]
for i, image_url in enumerate(image_urls):
save_path = get_save_path(base_name, save_dir, f"variation_{i}")
save_image(image_url, save_path)
else:
print("Generated image URLs: ", image_urls)
else:
print(f"Unknown command: {args[0]}")
except Exception as e:
print(f"An error occurred: {e}")
listen_for_commands()
Weāre not sure yet, but hopefully weāll just be able to drop in the new model - ie no changes like from completion to chat endpointsā¦
That said, I would love to have negative prompting features ā¦