Norėdami generuoti vaizdus naudodami Python, naudokite OpenAI DALL·E 2 modelį.

Jei kada nors naudojote „ChatGPT“, matėte jos intuiciją. Naudojant OpenAI API, kodo generavimas, teksto užbaigimas, teksto palyginimas, modelių mokymas ir vaizdų generavimas yra viskas, ką kūrėjai gali tyrinėti ir integruoti į programas.

Šiame vadove sužinosite, kaip naudoti „OpenAI“ API su „Python“ vaizdams generuoti, redaguoti ir keisti naudodami natūralios kalbos raginimus.

Darbo su OpenAI pradžia naudojant Python

Prieš pradėdami šią mokymo programą, turite nustatyti keletą dalykų. Pirmiausia įsitikinkite, kad kompiuteryje įdiegėte naujausią Python versiją. Jei naudojate Linux platinimą, pvz., Ubuntu, galbūt norėsite pamatyti kaip įdiegti Python Ubuntu.

Sukurkite naują projekto aplanką ir atidarykite komandų eilutę savo projekto kataloge.

Kitas yra OpenAI paketo diegimas. Jums reikia įdiegti pagalvė konvertuoti vaizdus į RGBA naudojant vaizdo redagavimo galutinį tašką. Taip pat galbūt norėsite įdiegti python-dotenv; naudosite tai slaptiems raktams užmaskuoti.

instagram viewer

Rekomenduojame sukurti a skirta Python virtuali aplinka izoliuoti priklausomybes.

Šiame projekte naudojamas kodas yra prieinamas a GitHub saugykla ir jūs galite nemokamai naudotis pagal MIT licenciją.

Norėdami įdiegti python-dotenv, pagalvė, ir openai paketus, terminale paleiskite šią komandą:

pip install openai python-dotenv pagalvė

Dabar eik į OpenAI ir prisijunkite prie savo prietaisų skydelio, kad paimtumėte API raktą:

  1. Prisijungę spustelėkite profilio piktogramą viršutiniame dešiniajame kampe.
  2. Eiti į Peržiūrėkite API raktus. Jei API rakto nematote, spustelėkite Sukurkite naują slaptą raktą sukurti naują.
  3. Nukopijuokite sugeneruotą slaptąjį raktą ir įklijuokite jį saugioje vietoje savo kompiuteryje. Saugumo sumetimais galbūt norėsite įklijuoti jį į aplinkos kintamojo failą projekto šakniniame kataloge.

Kaip generuoti ir redaguoti vaizdus naudojant „OpenAI“ API „Python“.

„OpenAI API“ vaizdų generavimas turi galinių taškų, skirtų naujiems vaizdams generuoti, vaizdų variantams kurti ir juos redaguoti.

Tolesniuose skyriuose išnagrinėsite šiuos galutinius taškus, kad galėtumėte generuoti, redaguoti, koreguoti ir atsisiųsti vaizdus naudodami natūralios kalbos raginimus.

Vaizdų generavimas naudojant OpenAI API

Vaizdo generavimo galutinis taškas priima tris raktinio žodžio argumentus. Jie apima paraginti, n, ir dydis.

The paraginti raktinis žodis yra teksto eilutė, apibūdinanti vaizdą, kurį norite sugeneruoti n yra vaizdų, kuriuos reikia sugeneruoti API skambučio metu, skaičius. The dydis yra vaizdo dydis, o rašymo metu jis priima tik 256 x 256, 512 x 512 ir 1024 x 1024 pikselius, pasak pareigūno OpenAI vaizdų generavimo dokumentacija.

Šis kodas generuoja vaizdus naudodamas natūralios kalbos raginimus ir išveda jų URL (vaizdo adresus):

importuoti openai
importuoti os
importuoti prašymus
dotenv importuoti load_dotenv
PIL importuoti Vaizdas
load_dotenv()

klasėVaizdo generatorius:
def__init__(savarankiškai) -> str:
self.image_url: str
openai.api_key = os.getenv(„OPENAI_API_KEY“)
savarankiškai. APIKey = openai.api_key
save.vardas = Nė vienas

defgeneruoti vaizdą(savarankiškai, raginimas, vaizdų skaičius, vaizdo dydis):
bandyti:
savarankiškai. APIKey
atsakymas = openai. Image.create(
raginimas = raginimas,
n = vaizdų skaičius,
dydis = vaizdo dydis,
)
self.image_url = atsakymas['duomenys']

self.image_url = [vaizdas["url"] dėl vaizdas in self.image_url]
spausdinti (self.image_url)
grąžinti self.image_url
išskyrus openai.klaida. OpenAIERror kaip e:
spausdinti (e.http_status)
spausdinti (e.error)

defparsisiųsti paveikslėlį(aš, vardai)-> Nė vienas:
bandyti:
self.name = vardai
dėl url in self.image_url:
vaizdas = requests.get (url)
dėl vardas in self.name:
su atviras("{}.png".format (pavadinimas), "wb") kaip f:
f.write (vaizdas.turinys)
išskyrus:
spausdinti ("Įvyko klaida")
grąžinti save.vardas

# Sukurkite klasę
imageGen = ImageGenerator()

# Generuoti vaizdus:
imageGen.generateImage(
Raginimas = „Milžinas liūtas, lokys, beždžionė ir tigras stovi ant vandens krioklio“,
Vaizdų skaičius = 2,
Vaizdo dydis = "1024x1024"
)

# Atsisiųskite vaizdus:
imageGen.downloadImage (names=[
"Gyvūnai",
"Gyvūnai 2"
])

Aukščiau pateiktame kode yra an Vaizdo generatorius klasė su vaizdo_url ir APIKey atributai. The generuoti vaizdą metodas pritaiko vaizdo generavimo galutinio taško reikalavimus. Jis generuoja n URL naudojant natūralios kalbos raginimą, atsižvelgiant į Vaizdų skaičius vertė.

Tačiau self.image_url ištraukia sugeneruotus vaizdo URL adresus iš JSON atsako į sąrašą, naudodamas for kilpą sąrašo supratime.

Išvestis atrodo taip:

Galiausiai, parsisiųsti paveikslėlį metodas atsisiunčia kiekvieną vaizdą, prašydamas sugeneruotų adresų. Šis metodas priimamas n pavadinimų, kuriuos norite suteikti kiekvienam vaizdui, skaičius.

Vaizdų redagavimas naudojant OpenAI API

Redagavimo galutinis taškas leidžia redaguoti esamą vaizdą pagal kaukės šabloną. Kaukė yra RGBA formato su anotuota, skaidria sritimi ir turi būti tokio pat dydžio kaip vaizdas, kurį norite redaguoti.

Kai pateikiate kaukę, redagavimo galutinis taškas pakeičia užmaskuotą sritį nauju raginimu esamame vaizde, kad būtų sukurtas naujas. Į aukščiau pateiktą ankstesnę klasę pridėkite šiuos metodus:

klasėVaizdo generatorius:
def__init__(savarankiškai, ...):
...

defkonvertuotiImage(aš, kaukėName):
vaizdas = Image.open("{}.png".format (maskName))
rgba_image = image.convert("RGBA")
rgba_image.save("{}.png".format (maskName))

grąžinti rgba_image


defredaguoti paveikslėlį(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
self.convertImage (maskName)
atsakymas = openai. Image.create_edit(
vaizdas = atidaryti ("{}.png".format (imageName), "rb"),
kaukė = atvira ("{}.png".format (maskName), "rb"),
raginimas = raginimas,
n = vaizdų skaičius,
dydis = vaizdo dydis,
)
self.image_url = atsakymas['duomenys']
self.image_url = [vaizdas["url"] dėl vaizdas in self.image_url]

spausdinti (self.image_url)
grąžinti self.image_url

# Redaguoti esamą vaizdą:
imageGen.editImage(
imageName = "Gyvūnai",
kaukėName = "kaukė",
Vaizdų skaičius = 1,
Vaizdo dydis = "1024x1024",
Raginimas = "Erelis, stovintis ant upės kranto, geriantis vandenį su dideliu kalnu"
)

# Atsisiųskite redaguotą vaizdą:
imageGen.downloadImage (names=[
"Nauji gyvūnai",
])

The konvertuotiImage metodas konvertuoja kaukės vaizdą į RGBA formatą. Tai galite pasiekti naudodami Paversti metodas iš Python pagalvės paketo (importuotas kaip PIL).

Konvertavus, ji išsaugo naują kaukę kaip esamos kaukės nepaisymą. Taigi vaizdo konvertavimas yra pirmoji redagavimo metodo užduotis (redaguoti paveikslėlį) vykdo.

The vaizdas nuskaito tikslinį vaizdą iš esamo failo, o kaukė nuskaito konvertuotą kaukės vaizdą, kuriame turi būti permatoma sritis.

Naudodami kaukėje galite pažymėti skaidrią sritį nuotraukų redagavimo programinė įranga kaip Gimp ar Photoshop.

Pavyzdžiui, vaizdas, kurį norime redaguoti naudodami raginimą aukščiau esančiame kode, yra:

Dabar tarkime, kad prie upės kranto stovinčią antilopę norite pakeisti ereliu, kaip nurodyta raginime.

Štai kaip atrodo kaukė:

Kadangi pirmiau pateikto kodo eilutėje esantis raktinis žodis sako: „erelis, stovintis ant upės kranto“, tuščią vietą užpildo erelis, pakeičiantis anksčiau ten buvusią antilopę.

Štai naujas vaizdas šiuo atveju:

Galite pabandyti žaisti su vaizdo redagavimo galutiniu tašku naudodami kitas nuotraukas.

Vaizdo variantų generavimas Python naudojant OpenAI API

Variacijos galutinis taškas generuoja alternatyvius vaizdus iš esamo vaizdo. Toliau išplėskite vaizdų generatoriaus klasę pridėdami vaizdo varianto metodą, kaip parodyta toliau:

klasėVaizdo generatorius:
def__init__(savarankiškai) -> str:
...

defvaizdo Variacijos(self, ImageName, VariationCount, ImageSize):
atsakymas = openai. Image.create_variation(
vaizdas = atidaryti ("{}.png".format (vaizdo pavadinimas), "rb"),
n = variantų skaičius,
dydis = Vaizdo dydis
)

self.image_url = atsakymas['duomenys']

self.image_url = [vaizdas["url"] dėl vaizdas in self.image_url]
spausdinti (self.image_url)
grąžinti self.image_url

# Sukurkite klasę
imageGen = ImageGenerator()

# Generuokite esamo vaizdo variantus
imageGen.imageVariations(
Vaizdo pavadinimas = "Nauji_gyvūnai",
VariationCount = 2,
Vaizdo dydis = "1024x1024"
)

# Atsisiųskite variantus
imageGen.downloadImage (names=[
„Variantas1“,
"Variantas2",
]
)

Aukščiau pateiktas kodas generuoja vaizdo variantus.

Naudokite OpenAI savo pranašumui

Nors kai kurie žmonės baiminasi, kad dirbtinis intelektas gali pavogti jų darbus, tai gali būti prieglobstis – jei išmoksite jį valdyti ir naudoti. Ši „OpenAI“ vaizdo kūrimo pamoka yra tik vienas iš daugelio AI naudojimo realiame pasaulyje atvejų. OpenAI API siūlo patogius iš anksto paruoštus modelius, kuriuos galite lengvai integruoti į savo programą. Taigi galite priimti iššūkį ir sukurti ką nors vertingo pagal šią mokymo programą.

Nors rašant vaizdų generavimo API vis dar yra beta versija, ji jau leidžia kurti įsivaizduojamus meno kūrinius. Tikimės, kad jis gaus daugiau atnaujinimų, kad būtų galima padidinti mastelį ir priimti skirtingus vaizdo dydžius.