DALL-E 3 Announcement, Coming Soon

New announcement for DALL-E 3!

Coming Soon! (October for the API)

11 Likes

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.


[A stylized portrait-oriented depiction where a tiger serves as the dividing line between two contrasting worlds. To the left, fiery reds and oranges dominate as flames consume trees. To the right, a rejuvenated forest flourishes with fresh green foliage. The tiger, depicted with exaggerated and artistic features, stands tall and undeterred, symbolizing nature’s enduring spirit amidst chaos and rebirth.]

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?

5 Likes

Just saw this wonderful announcement:

Is it available via the API yet and if so, doc link please? If not, when?

4 Likes

Coming in October, don’t know what date yet.

5 Likes

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…

3 Likes

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.

4 Likes

Ahhh I’m envious. Dall-E kicks ass. I love the ability to “grow” the art. Can’t wait to see the masterpieces

1 Like

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

4 Likes

The samples are beautiful. Undeniably a step up from DALL-E 2. Anyone know if there a paper to go along with this announcement?

3 Likes

Exciting, I wonder how this compares to the updated version of DALLE that Bing image generator has been using. Same thing or even newer?

3 Likes

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.

2 Likes

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.

2 Likes

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.

2 Likes

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”

3 Likes

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. :slight_smile:

1 Like

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…

4 Likes

?? 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

Example usage:

#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}")

Start listening for commands

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 …

4 Likes
4 Likes