Folosiți modelul DALL·E 2 al OpenAI pentru a genera imagini folosind Python.

Dacă ați folosit vreodată ChatGPT, atunci ați asistat la intuiția lui. Cu API-urile OpenAI, generarea de cod, completarea textului, compararea textului, instruirea modelelor și generarea de imagini sunt toate în geantă pentru ca dezvoltatorii să le exploreze și să le integreze în aplicații.

În acest tutorial, veți învăța cum să utilizați API-ul OpenAI cu Python pentru a genera, edita și varia imagini folosind instrucțiuni în limbaj natural.

Noțiuni introductive cu OpenAI folosind Python

Trebuie să configurați câteva lucruri înainte de a începe acest tutorial. Mai întâi, asigurați-vă că ați instalat cea mai recentă versiune a Python pe computer. Dacă utilizați o distribuție Linux precum Ubuntu, s-ar putea să doriți și să vedeți cum se instalează Python pe Ubuntu.

Creați un folder nou pentru proiectul dvs. și deschideți linia de comandă în directorul proiectului.

Urmează instalarea pachetului OpenAI. Trebuie să instalați

pernă pentru a converti imaginile în RGBA în timp ce utilizați punctul final de editare a imaginii. Poate doriți să instalați python-dotenv; îl vei folosi pentru a masca cheile secrete.

Vă recomandăm să creați un mediu virtual Python dedicat pentru a izola dependențele.

Codul folosit în acest proiect este disponibil în a Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.

Pentru a instala python-dotenv, pernă, și openai pachete, rulați următoarea comandă în terminal:

pip install openai python-dotenv perna

Acum du-te la OpenAI și conectați-vă la tabloul de bord pentru a obține cheia API:

  1. După ce v-ați conectat, faceți clic pe pictograma profilului dvs. din secțiunea din dreapta sus.
  2. Mergi la Vedeți cheile API. Dacă cheia dvs. API nu este vizibilă, faceți clic Creați o nouă cheie secretă pentru a genera unul nou.
  3. Copiați cheia secretă generată și inserați-o undeva în siguranță pe computer. Poate doriți să-l lipiți într-un fișier variabilă de mediu în directorul rădăcină al proiectului pentru securitate.

Cum să generați și să editați imagini cu OpenAI API în Python

Generarea de imagini a OpenAI API oferă puncte finale pentru generarea de noi imagini, crearea de variații de imagine și editarea acestora.

În secțiunile următoare, veți explora aceste puncte finale pentru a genera, edita, modifica și descărca imagini folosind solicitări în limbaj natural.

Generarea de imagini utilizând API-ul OpenAI

Punctul final de generare a imaginii acceptă trei argumente cheie. Acestea includ prompt, n, și mărimea.

The prompt cuvântul cheie este un șir de text care descrie imaginea pe care doriți să o generați, în timp ce n este numărul de imagini care trebuie generate în timpul unui apel API. The mărimea este dimensiunea imaginii și, în momentul scrierii, acceptă doar 256x256, 512x512 și 1024x1024 pixeli, conform oficialului OpenAI documentație de generare a imaginilor.

Următorul cod generează imagini folosind solicitări în limbaj natural și scoate URL-ul acestora (adresele imaginilor):

import openai
import os
import cereri
din dotenv import load_dotenv
din PIL import Imagine
load_dotenv()

clasăImageGenerator:
def__init__(de sine) -> str:
self.image_url: str
openai.api_key = os.getenv(„OPENAI_API_KEY”)
de sine. APKey = openai.api_key
sine.nume = Nici unul

defgenerateImage(self, Prompt, ImageCount, ImageSize):
încerca:
de sine. APKey
response = openai. Image.create(
prompt = prompt,
n = ImageCount,
dimensiune = ImageSize,
)
self.image_url = răspuns['date']

self.image_url = [imagine["url"] pentru imagine în self.image_url]
imprimare (self.image_url)
întoarcere self.image_url
cu exceptia openai.error. OpenAIError la fel de e:
imprimare (e.http_status)
imprimare (e.eroare)

defdescărcațiImagine(sine, nume)-> Nici unul:
încerca:
self.name = nume
pentru url în self.image_url:
imagine = requests.get (url)
pentru Nume în self.name:
cu deschis(„{}.png”.format (nume), "wb") la fel de f:
f.scrie (imagine.conținut)
cu exceptia:
imprimare("A aparut o eroare")
întoarcere sine.nume

# Instanciați clasa
imageGen = ImageGenerator()

# Generați imagini:
imageGen.generateImage(
Prompt = „Leu uriaș, urs, maimuță și tigru stând pe o cascadă de apă”,
ImageCount = 2,
ImageSize = „1024x1024”
)

# Descărcați imaginile:
imageGen.downloadImage (names=[
"Animale",
„Animale2”
])

Codul de mai sus conține un ImageGenerator clasa cu Imagine URL și APKey atribute. The generateImage metoda adaptează cerințele punctului final de generare a imaginii. Ea generează n URL-uri care utilizează promptul în limbaj natural, în funcție de Număr de imagini valoare.

In orice caz, self.image_url extrage URL-urile imaginilor generate din răspunsul JSON într-o listă folosind bucla for într-o înțelegere a listei.

Ieșirea arată astfel:

În cele din urmă, cel descărcațiImagine metoda descarcă fiecare imagine prin solicitarea adreselor generate. Această metodă acceptă n numărul de nume pe care doriți să le dați fiecărei imagini.

Editarea imaginilor utilizând API-ul OpenAI

Punctul final de editare vă permite să editați o imagine existentă pe baza unui șablon de mască. Masca este un format RGBA cu o zonă adnotată, transparentă și trebuie să aibă aceeași dimensiune cu imaginea pe care doriți să o editați.

Când furnizați o mască, punctul final de editare își înlocuiește zona mascată cu noul prompt din imaginea existentă pentru a produce una nouă. Adăugați următoarele metode la clasa anterioară de mai sus:

clasăImageGenerator:
def__init__(de sine, ...):
...

defconvertImage(self, maskName):
imagine = Image.open(„{}.png”.format (maskName))
rgba_image = imagine.convert(„RGBA”)
rgba_image.save(„{}.png”.format (maskName))

întoarcere imagine_rgba


defeditațiImagine(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
self.convertImagine (maskName)
response = openai. Image.create_edit(
imagine = deschis(„{}.png”.format (nume imagine), "rb"),
masca = deschis(„{}.png”.format (nume masca), "rb"),
prompt = prompt,
n = ImageCount,
dimensiune = ImageSize,
)
self.image_url = răspuns['date']
self.image_url = [imagine["url"] pentru imagine în self.image_url]

imprimare (self.image_url)
întoarcere self.image_url

# Editați o imagine existentă:
imageGen.editImage(
imageName = "Animale",
maskName = "masca",
ImageCount = 1,
ImageSize = „1024x1024”,
Prompt = „Un vultur care stă pe malul râului și bea apă cu un munte mare”
)

# Descărcați imaginea editată:
imageGen.downloadImage (names=[
„Animale noi”,
])

The convertImage metoda convertește imaginea măștii în format RGBA. Puteți realiza acest lucru folosind convertit metoda din pachetul de perne Python (importat ca PIL).

Odată convertită, salvează noua mască ca o înlocuire a celei existente. Astfel, conversia imaginii este prima sarcină a metodei de editare (editațiImagine) execută.

The imagine citește imaginea țintă dintr-un fișier existent, în timp ce masca citește imaginea masca convertită, care trebuie să aibă o zonă transparentă.

Puteți marca o zonă transparentă în mască folosind software de editare foto cum ar fi Gimp sau Photoshop.

De exemplu, imaginea pe care dorim să o edităm folosind promptul din codul de mai sus este:

Acum, să presupunem că doriți să înlocuiți antilopa care stă lângă malul râului cu un vultur, așa cum se spune în prompt.

Iată cum arată masca:

Deoarece cuvântul cheie din promptul din codul de mai sus spune „un vultur în picioare pe malul râului”, locul liber este umplut de un vultur, înlocuind antilopa care a fost anterior acolo.

Iată noua imagine în acest caz:

Puteți încerca să vă jucați cu punctul final de editare a imaginii folosind alte fotografii.

Generarea de variații de imagine în Python utilizând API-ul OpenAI

Punctul final de variație generează imagini alternative dintr-o imagine existentă. Extindeți clasa generatorului de imagini și mai mult adăugând o metodă de variație a imaginii, așa cum se arată mai jos:

clasăImageGenerator:
def__init__(de sine) -> str:
...

defImageVariations(self, ImageName, VariationCount, ImageSize):
response = openai. Image.create_variation(
imagine = deschis(„{}.png”.format (ImageName), "rb"),
n = VariationCount,
dimensiune = ImageSize
)

self.image_url = răspuns['date']

self.image_url = [imagine["url"] pentru imagine în self.image_url]
imprimare (self.image_url)
întoarcere self.image_url

# Instanciați clasa
imageGen = ImageGenerator()

# Generați variații pentru o imagine existentă
imageGen.imageVariations(
ImageName = „Animale_Noi”,
VariationCount = 2,
ImageSize = „1024x1024”
)

# Descărcați variantele
imageGen.downloadImage (names=[
„Variația 1”,
"Variația 2",
]
)

Codul de mai sus generează variații ale unei imagini.

Folosește OpenAI în avantajul tău

În timp ce unii oameni se tem că AI le poate fura locurile de muncă, ar putea fi un paradis, până la urmă, dacă înveți să-l controlezi și să-l folosești. Acest tutorial de creare a imaginilor OpenAI este doar unul dintre multele cazuri de utilizare ale AI în lumea reală. API-urile OpenAI oferă modele pre-antrenate la îndemână pe care le puteți integra cu ușurință în aplicația dvs. Deci, puteți accepta provocarea și puteți construi ceva util din acest tutorial.

Deși API-ul de generare a imaginii este încă în versiune beta la momentul scrierii, acesta vă permite deja să creați lucrări de artă imaginare. Sperăm că primește actualizări suplimentare pentru a permite upscaling și pentru a accepta diferite dimensiuni ale imaginii.