Iskoristite OpenAI-jev DALL·E 2 model za generiranje slika pomoću Pythona.

Ako ste ikada koristili ChatGPT, onda ste svjedočili njegovoj intuiciji. S OpenAI-jevim API-jima, generiranje koda, dovršavanje teksta, usporedba teksta, obuka modela i generiranje slika sve je u torbi koju programeri mogu istražiti i integrirati u aplikacije.

U ovom vodiču naučit ćete kako koristiti OpenAI API s Pythonom za generiranje, uređivanje i mijenjanje slika pomoću upita prirodnog jezika.

Početak rada s OpenAI-jem pomoću Pythona

Morate postaviti nekoliko stvari prije početka ovog vodiča. Najprije provjerite jeste li instalirali najnoviju verziju Pythona na svoje računalo. Ako koristite distribuciju Linuxa poput Ubuntua, možda biste također željeli vidjeti kako instalirati Python na Ubuntu.

Stvorite novu mapu za svoj projekt i otvorite svoj naredbeni redak u direktoriju projekta.

Slijedi instalacija paketa OpenAI. Morate instalirati jastuk za pretvaranje slika u RGBA dok koristite krajnju točku za uređivanje slika. Možda biste također željeli instalirati

instagram viewer
python-dotenv; ovo ćete koristiti za maskiranje tajnih ključeva.

Preporučujemo stvaranje a namjensko Python virtualno okruženje izolirati ovisnosti.

Kod korišten u ovom projektu dostupan je u a GitHub spremište i besplatan je za korištenje pod MIT licencom.

Za instaliranje python-dotenv, jastuk, i openai pakete, pokrenite sljedeću naredbu u terminalu:

pip install openai python-dotenv jastuk

Sada prijeđite na OpenAI i prijavite se na svoju nadzornu ploču kako biste preuzeli svoj API ključ:

  1. Nakon što se prijavite, kliknite ikonu svog profila u gornjem desnom dijelu.
  2. Ići Pregledajte API ključeve. Ako vaš API ključ nije vidljiv, kliknite Stvorite novi tajni ključ za generiranje novog.
  3. Kopirajte generirani tajni ključ i zalijepite ga na sigurno mjesto na računalu. Možda biste ga željeli zalijepiti u datoteku varijable okruženja u korijenskom direktoriju vašeg projekta radi sigurnosti.

Kako generirati i uređivati ​​slike s OpenAI API-jem u Pythonu

Generiranje slika OpenAI API-ja ima krajnje točke za generiranje novih slika, stvaranje varijacija slika i njihovo uređivanje.

U sljedećim odjeljcima istražit ćete te krajnje točke za generiranje, uređivanje, podešavanje i preuzimanje slika pomoću upita prirodnog jezika.

Generiranje slika pomoću OpenAI API-ja

Krajnja točka generiranja slike prihvaća tri argumenta ključne riječi. To uključuje potaknuti, n, i veličina.

The potaknuti ključna riječ je niz teksta koji opisuje sliku koju želite generirati, dok n je broj slika koje treba generirati tijekom API poziva. The veličina je veličina slike, a od pisanja prihvaća samo 256x256, 512x512 i 1024x1024 piksela, prema službenom OpenAI dokumentacija za generiranje slike.

Sljedeći kod generira slike pomoću upita prirodnog jezika i ispisuje njihov URL (adrese slika):

uvoz openai
uvoz os
uvoz zahtjevi
iz dotenv uvoz load_dotenv
iz PIL uvoz Slika
load_dotenv()

razredaGenerator slika:
def__u tome__(sebe) -> str:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
sebe. APIKey = openai.api_key
samo.ime = Nijedan

defgenerirajSliku(self, Prompt, ImageCount, ImageSize):
probati:
sebe. APIKey
odgovor = openai. Image.create(
prompt = Upit,
n = broj slika,
veličina = veličina slike,
)
self.image_url = odgovor['podaci']

self.image_url = [slika["url"] za slika u self.image_url]
ispis (self.image_url)
povratak self.image_url
osim openai.greška. OpenAIError kao e:
ispis (e.http_status)
ispis (e.greška)

defdownloadImage(ja, imena)-> Nijedan:
probati:
sebe.ime = imena
za url u self.image_url:
slika = requests.get (url)
za Ime u self.name:
s otvoren("{}.png".format (naziv), "wb") kao f:
f.write (slika.sadržaj)
osim:
ispis("Došlo je do pogreške")
povratak sebe.ime

# Instancirajte klasu
imageGen = ImageGenerator()

# Generiraj slike:
imageGen.generateImage(
Upit = "Divovski lav, medvjed, majmun i tigar stoje na vodopadu",
Broj slika = 2,
Veličina slike = '1024x1024'
)

# Preuzmite slike:
imageGen.downloadImage (names=[
"životinje",
"životinje 2"
])

Gornji kod sadrži Generator slika razred s url_slike i APIKey atributi. The generirajSliku metoda prilagođava zahtjeve krajnje točke generiranja slike. Ono stvara n URL-ovi koji koriste odzivnik prirodnog jezika, ovisno o ImageCount vrijednost.

Međutim, self.image_url izdvaja generirane URL-ove slika iz JSON odgovora u popis koristeći for petlju u razumijevanju popisa.

Izlaz izgleda ovako:

Konačno, downloadImage metoda preuzima svaku sliku tražeći generirane adrese. Ova metoda prihvaća n broj naziva koje želite dati svakoj slici.

Uređivanje slika pomoću OpenAI API-ja

Krajnja točka za uređivanje omogućuje vam uređivanje postojeće slike na temelju predloška maske. Maska je RGBA format s označenim, prozirnim područjem i mora biti iste veličine kao slika koju želite urediti.

Kada navedete masku, krajnja točka za uređivanje zamjenjuje svoje maskirano područje novim upitom u postojećoj slici kako bi proizvela novu. Dodajte sljedeće metode gornjoj prethodnoj klasi:

razredaGenerator slika:
def__u tome__(sebe, ...):
...

defconvertImage(sebe, ime maske):
slika = slika.open("{}.png".format (nazivmaske))
rgba_image = image.convert('RGBA')
rgba_image.save("{}.png".format (nazivmaske))

povratak rgba_slika


defuredi sliku(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
self.convertImage (maskName)
odgovor = openai. Image.create_edit(
slika = otvori("{}.png".format (ime slike), "rb"),
maska ​​= otvoreno("{}.png".format (nazivmaske), "rb"),
prompt = Upit,
n = broj slika,
veličina = veličina slike,
)
self.image_url = odgovor['podaci']
self.image_url = [slika["url"] za slika u self.image_url]

ispis (self.image_url)
povratak self.image_url

# Uredite postojeću sliku:
imageGen.editImage(
ime slike = "životinje",
naziv maske = "maska",
Broj slika = 1,
Veličina slike = "1024x1024",
Upit = "Orao koji stoji na obali rijeke i pije vodu s velikom planinom"
)

# Preuzmite uređenu sliku:
imageGen.downloadImage (names=[
"Nove životinje",
])

The convertImage metoda pretvara sliku maske u RGBA format. To možete postići pomoću Pretvoriti metoda iz Pythonovog paketa jastuka (uvezen kao PIL).

Nakon pretvorbe, sprema novu masku kao nadjačavanje postojeće. Stoga je pretvorba slike prvi zadatak metode uređivanja (uredi sliku) izvršava.

The slika čita ciljnu sliku iz postojeće datoteke, dok maska čita pretvorenu sliku maske, koja mora imati prozirno područje.

Možete označiti prozirno područje na maski pomoću softver za uređivanje fotografija poput Gimpa ili Photoshopa.

Na primjer, slika koju želimo urediti pomoću upita u gornjem kodu je:

Sada, pretpostavimo da želite zamijeniti antilopu koja stoji uz obalu rijeke s orlom, kao što je navedeno u upitu.

Evo kako maska ​​izgleda:

Budući da ključna riječ u upitu iz gornjeg koda kaže "orao koji stoji na obali rijeke", prazno mjesto popunjava orao, zamjenjujući antilopu koja je prethodno bila tamo.

Evo nove slike u ovom slučaju:

Možete se pokušati poigrati krajnjom točkom za uređivanje slika koristeći druge fotografije.

Generiranje varijacija slika u Pythonu pomoću OpenAI API-ja

Krajnja točka varijacije generira alternativne slike iz postojeće slike. Dodatno proširite klasu generatora slike dodavanjem metode varijacije slike kao što je prikazano u nastavku:

razredaGenerator slika:
def__u tome__(sebe) -> str:
...

defslikeVarijacije(self, ImageName, VariationCount, ImageSize):
odgovor = openai. Image.create_variation(
slika = otvori("{}.png".format (ime slike), "rb"),
n = broj varijacija,
veličina = veličina slike
)

self.image_url = odgovor['podaci']

self.image_url = [slika["url"] za slika u self.image_url]
ispis (self.image_url)
povratak self.image_url

# Instancirajte klasu
imageGen = ImageGenerator()

# Generirajte varijacije za postojeću sliku
imageGen.imageVariations(
Naziv slike = "Nove_životinje",
Broj varijacija = 2,
Veličina slike = "1024x1024"
)

# Preuzmite varijacije
imageGen.downloadImage (names=[
"Varijacija1",
"Varijacija 2",
]
)

Gornji kod generira varijacije slike.

Koristite OpenAI u svoju korist

Iako se neki ljudi boje da bi im umjetna inteligencija mogla ukrasti posao, to bi ipak moglo biti utočište - ako je naučite kontrolirati i koristiti. Ovaj vodič za stvaranje slike OpenAI samo je jedan od mnogih slučajeva upotrebe umjetne inteligencije u stvarnom svijetu. OpenAI API-ji pružaju zgodne unaprijed obučene modele koje možete jednostavno integrirati u svoju aplikaciju. Tako da možete prihvatiti izazov i izgraditi nešto vrijedno truda iz ovog vodiča.

Iako je API za generiranje slika još uvijek u beta verziji od pisanja, on vam već omogućuje izradu imaginarnih umjetničkih djela. Nadajmo se da će dobiti daljnja ažuriranja kako bi omogućila povećanje veličine i prihvatila različite veličine slika.