Uporabite model OpenAI DALL·E 2 za ustvarjanje slik z uporabo Pythona.
Če ste kdaj uporabljali ChatGPT, ste bili priča njegovi intuiciji. Z API-ji OpenAI lahko razvijalci raziščejo in vključijo v aplikacije ustvarjanje kode, dokončanje besedila, primerjavo besedila, usposabljanje za modele in ustvarjanje slik.
V tej vadnici se boste naučili, kako uporabljati API OpenAI s Pythonom za ustvarjanje, urejanje in spreminjanje slik z uporabo pozivov v naravnem jeziku.
Začetek uporabe OpenAI z uporabo Pythona
Pred začetkom te vadnice morate nastaviti nekaj stvari. Najprej se prepričajte, da ste v računalnik namestili najnovejšo različico Pythona. Če uporabljate distribucijo Linuxa, kot je Ubuntu, boste morda želeli videti tudi kako namestiti Python na Ubuntu.
Ustvarite novo mapo za svoj projekt in odprite ukazno vrstico v imenik vašega projekta.
Sledi namestitev paketa OpenAI. Morate namestiti blazina za pretvorbo slik v RGBA med uporabo končne točke za urejanje slik. Morda boste želeli tudi namestiti python-dotenv; to boste uporabili za maskiranje skrivnih ključev.
Priporočamo ustvarjanje a namensko virtualno okolje Python za izolacijo odvisnosti.
Koda, uporabljena v tem projektu, je na voljo v a Repozitorij GitHub in je brezplačen za uporabo pod licenco MIT.
Za namestitev python-dotenv, blazina, in openai paketov, zaženite naslednji ukaz v terminalu:
pip namestite vzglavnik openai python-dotenv
Zdaj pa pojdite na OpenAI in se prijavite na svojo nadzorno ploščo, da pridobite svoj ključ API:
- Ko se prijavite, kliknite ikono svojega profila v zgornjem desnem delu.
- Pojdi do Oglejte si ključe API. Če ključ API-ja ni viden, kliknite Ustvari nov skrivni ključ ustvariti novega.
- Kopirajte ustvarjeni skrivni ključ in ga prilepite na varno mesto v računalniku. Zaradi varnosti ga boste morda želeli prilepiti v datoteko s spremenljivko okolja v korenskem imeniku projekta.
Kako ustvariti in urediti slike z API-jem OpenAI v Pythonu
Generiranje slik API-ja OpenAI vključuje končne točke za generiranje novih slik, ustvarjanje različic slik in njihovo urejanje.
V naslednjih razdelkih boste raziskali te končne točke za ustvarjanje, urejanje, prilagajanje in prenos slik z uporabo pozivov v naravnem jeziku.
Ustvarjanje slik z uporabo API-ja OpenAI
Končna točka generiranja slike sprejme tri ključne argumente. Tej vključujejo poziv, n, in velikost.
The poziv ključna beseda je niz besedila, ki opisuje sliko, ki jo želite ustvariti, medtem ko n je število slik, ki jih je treba ustvariti med klicem API-ja. The velikost je velikost slike in od pisanja sprejema le 256x256, 512x512 in 1024x1024 slikovnih pik, glede na uradno OpenAI dokumentacijo za ustvarjanje slik.
Naslednja koda ustvari slike z uporabo pozivov v naravnem jeziku in izpiše njihov URL (naslove slik):
uvoz openai
uvoz os
uvoz zahteve
od dotenv uvoz load_dotenv
od PIL uvoz Slika
load_dotenv()razredImageGenerator:
def__v__(sebe) -> str:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
sebe. APIKey = openai.api_key
self.name = NobendefgenerateImage(self, Prompt, ImageCount, ImageSize):
poskusi:
sebe. APIKey
odgovor = openai. Image.create(
prompt = Poziv,
n = število slik,
velikost = velikost slike,
)
self.image_url = odgovor['podatki']
self.image_url = [slika["url"] za slika v self.image_url]
natisni (self.image_url)
vrnitev self.image_url
razen openai.error. OpenAIError kot e:
natisni (e.http_status)
natisni (e.napaka)defdownloadImage(jaz, imena)-> Noben:
poskusi:
self.name = imena
za url v self.image_url:
slika = requests.get (url)
za ime v self.name:
z odprto("{}.png".format (ime), "wb") kot f:
f.write (image.content)
razen:
natisni("Prišlo je do napake")
vrnitev samo.ime# Instanciirajte razred
imageGen = ImageGenerator()# Ustvari slike:
imageGen.generateImage(
Poziv = "Ogromni lev, medved, opica in tiger, ki stojijo na vodnem slapu",
Število slik = 2,
Velikost slike = '1024 x 1024'
)
# Prenesite slike:
imageGen.downloadImage (names=[
"živali",
"Živali 2"
])
Zgornja koda vsebuje ImageGenerator razred z image_url in APIKey lastnosti. The generateImage metoda prilagaja zahtevam končne točke generiranja slike. Ustvarja n URL-ji, ki uporabljajo poziv v naravnem jeziku, odvisno od ImageCount vrednost.
vendar self.image_url ekstrahira ustvarjene URL-je slik iz odgovora JSON v seznam z uporabo zanke for v razumevanju seznama.
Izhod je videti takole:
Končno, downloadImage metoda prenese vsako sliko tako, da zahteva ustvarjene naslove. Ta metoda sprejema n število imen, ki jih želite dati vsaki sliki.
Urejanje slik z uporabo API-ja OpenAI
Končna točka urejanja vam omogoča urejanje obstoječe slike na podlagi predloge maske. Maska je format RGBA z označenim, preglednim območjem in mora biti enake velikosti kot slika, ki jo želite urediti.
Ko podate masko, končna točka urejanja zamenja svoje maskirano območje z novim pozivom v obstoječi sliki, da ustvari novo. V zgornji prejšnji razred dodajte naslednje metode:
razredImageGenerator:
def__v__(sebe, ...):
...defconvertImage(jaz, ime maske):
slika = Slika.odpri("{}.png".format (imemaske))
rgba_image = image.convert('RGBA')
rgba_image.save("{}.png".format (imemaske))vrnitev rgba_image
defeditImage(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
self.convertImage (maskName)
odgovor = openai. Image.create_edit(
slika = odprto("{}.png".format (ime slike), "rb"),
maska = odprto("{}.png".format (imemaske), "rb"),
prompt = Poziv,
n = število slik,
velikost = velikost slike,
)
self.image_url = odgovor['podatki']
self.image_url = [slika["url"] za slika v self.image_url]natisni (self.image_url)
vrnitev self.image_url# Uredite obstoječo sliko:
imageGen.editImage(
ime slike = "živali",
maskName = "maska",
Število slik = 1,
Velikost slike = "1024 x 1024",
Poziv = "Orel, ki stoji na bregu reke in pije vodo z veliko goro"
)
# Prenesite urejeno sliko:
imageGen.downloadImage (names=[
"Nove živali",
])
The convertImage metoda pretvori sliko maske v format RGBA. To lahko dosežete z uporabo Pretvorba metoda iz Pythonovega paketa blazin (uvoženo kot PIL).
Ko je pretvorjen, shrani novo masko kot preglasitev obstoječe. Tako je pretvorba slik prva naloga metode urejanja (editImage) izvrši.
The slika prebere ciljno sliko iz obstoječe datoteke, medtem ko maska prebere pretvorjeno sliko maske, ki mora imeti prozorno območje.
Prosojno območje na maski lahko označite z uporabo programska oprema za urejanje fotografij kot Gimp ali Photoshop.
Na primer, slika, ki jo želimo urediti z uporabo poziva v zgornji kodi, je:
Predpostavimo, da želite zamenjati antilopo, ki stoji ob bregu reke, z orlom, kot je navedeno v pozivu.
Tako izgleda maska:
Ker ključna beseda v pozivu iz zgornje kode pravi "orel, ki stoji na bregu reke," prazno mesto zapolni orel, ki nadomesti antilopo, ki je bila prej tam.
Tukaj je nova slika v tem primeru:
Lahko se poskusite poigrati s končno točko urejanja slik z uporabo drugih fotografij.
Ustvarjanje različic slik v Pythonu z uporabo API-ja OpenAI
Končna točka variacije ustvari alternativne slike iz obstoječe slike. Dodatno razširite razred generatorja slik z dodajanjem metode spreminjanja slik, kot je prikazano spodaj:
razredImageGenerator:
def__v__(sebe) -> str:
...
defimageVariations(self, ImageName, VariationCount, ImageSize):
odgovor = openai. Image.create_variation(
slika = odprto("{}.png".format (ime slike), "rb"),
n = Število različic,
velikost = velikost slike
)
self.image_url = odgovor['podatki']
self.image_url = [slika["url"] za slika v self.image_url]
natisni (self.image_url)
vrnitev self.image_url
# Instanciirajte razred
imageGen = ImageGenerator()# Ustvarite različice za obstoječo sliko
imageGen.imageVariations(
Ime slike = "Nove_živali",
VariationCount = 2,
Velikost slike = "1024 x 1024"
)
# Prenesite različice
imageGen.downloadImage (names=[
"Različica 1",
"Različica 2",
]
)
Zgornja koda ustvari različice slike.
Uporabite OpenAI v svojo korist
Medtem ko se nekateri bojijo, da bi jim umetna inteligenca lahko ukradla delovna mesta, je to morda zatočišče, če se ga naučite nadzorovati in uporabljati. Ta vadnica za ustvarjanje slik OpenAI je le eden od mnogih primerov uporabe umetne inteligence v resničnem svetu. API-ji OpenAI ponujajo priročne vnaprej usposobljene modele, ki jih lahko preprosto integrirate v svojo aplikacijo. Tako lahko sprejmete izziv in iz te vadnice zgradite nekaj vrednega.
Čeprav je API za ustvarjanje slik v času pisanja še vedno v beta različici, vam že omogoča ustvarjanje namišljenih umetniških del. Upajmo, da bo dobil nadaljnje posodobitve, ki bodo omogočale povečanje velikosti in sprejemanje različnih velikosti slik.