Kasutage Pythoni abil piltide loomiseks OpenAI mudelit DALL·E 2.

Kui olete kunagi ChatGPT-d kasutanud, olete olnud tunnistajaks selle intuitsioonile. OpenAI API-de abil on koodi genereerimine, teksti lõpetamine, tekstide võrdlemine, mudelikoolitus ja piltide genereerimine kõik kaasas, et arendajad saaksid seda uurida ja rakendustesse integreerida.

Sellest õpetusest saate teada, kuidas kasutada OpenAI API-d Pythoniga piltide genereerimiseks, redigeerimiseks ja muutmiseks loomuliku keele viipade abil.

OpenAI-ga alustamine Pythoni abil

Enne selle õpetuse alustamist peate seadistama mõned asjad. Esiteks veenduge, et olete oma arvutisse installinud Pythoni uusima versiooni. Kui kasutate Linuxi distributsiooni nagu Ubuntu, võiksite seda ka näha kuidas installida Python Ubuntule.

Looge oma projekti jaoks uus kaust ja avage oma projektikataloogi käsurida.

Järgmine on OpenAI paketi installimine. Peate installima padi piltide teisendamiseks RGBA-sse, kasutades pilditöötluse lõpp-punkti. Võimalik, et soovite ka installida python-dotenv; kasutate seda salavõtmete varjamiseks.

Soovitame luua a pühendatud Pythoni virtuaalne keskkond sõltuvuste isoleerimiseks.

Selles projektis kasutatav kood on saadaval a GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.

Et installida python-dotenv, padija openai paketid, käivitage terminalis järgmine käsk:

pip install openai python-dotenv padi

Nüüd suunduge OpenAI ja logige oma armatuurlauale sisse, et haarata oma API võti:

  1. Kui olete sisse loginud, klõpsake paremas ülanurgas oma profiiliikoonil.
  2. Minema Vaadake API võtmeid. Kui teie API võtit pole näha, klõpsake nuppu Looge uus salajane võti uue genereerimiseks.
  3. Kopeerige loodud salavõti ja kleepige see oma arvutisse turvalisse kohta. Võib-olla soovite selle turvalisuse huvides kleepida oma projekti juurkataloogi keskkonnamuutuja faili.

Kuidas Pythonis OpenAI API-ga pilte genereerida ja redigeerida

OpenAI API piltide genereerimisel on lõpp-punktid uute piltide genereerimiseks, pildi variatsioonide loomiseks ja nende redigeerimiseks.

Järgmistes jaotistes uurite neid lõpp-punkte piltide genereerimiseks, redigeerimiseks, kohandamiseks ja allalaadimiseks loomuliku keele viipade abil.

Piltide genereerimine OpenAI API abil

Pildi genereerimise lõpp-punkt aktsepteerib kolme märksõna argumenti. Need sisaldavad viip, nja suurus.

The viip Märksõna on tekstijada, mis kirjeldab pilti, mida soovite genereerida n on API-kõne ajal genereeritavate piltide arv. The suurus on pildi suurus ja kirjutamise seisuga aktsepteerib see ametniku sõnul ainult 256x256, 512x512 ja 1024x1024 pikslit. OpenAI piltide genereerimise dokumentatsioon.

Järgmine kood loob kujutised loomuliku keele viipade abil ja väljastab nende URL-i (pildi aadressid):

importida openai
importida os
importida taotlusi
alates dotenv importida load_dotenv
alates PIL importida Pilt
load_dotenv()

klassImageGenerator:
def__selles__(ise) -> str:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
ise. APIKey = openai.api_key
ise.nimi = Mitte ühtegi

defgenereeri pilt(ise, Viip, ImageCount, ImageSize):
proovi:
ise. APIKey
vastus = openai. Image.create(
prompt = viip,
n = piltide arv,
suurus = pildi suurus,
)
self.image_url = vastus['andmed']

self.image_url = [pilt["url"] jaoks pilt sisse self.image_url]
print (self.image_url)
tagasi self.image_url
välja arvatud openai.error. OpenAIERror nagu e:
print (nt http_status)
print (e.error)

defallalaadimine pilt(ise, nimed)-> Mitte ühtegi:
proovi:
ise.nimi = nimed
jaoks url sisse self.image_url:
pilt = requests.get (url)
jaoks nimi sisse self.name:
koos avatud ("{}.png".formaat (nimi), "wb") nagu f:
f.write (image.content)
välja arvatud:
print("Tekkis viga")
tagasi ise.nimi

# Esitage klass
imageGen = ImageGenerator()

# Loo pilte:
imageGen.generateImage(
Viip = "Hiiglaslik lõvi, karu, ahv ja tiiger seisavad kosel",
ImageCount = 2,
Pildi suurus = "1024x1024"
)

# Laadige pildid alla:
imageGen.downloadImage (names=[
"Loomad",
"Loomad 2"
])

Ülaltoodud kood sisaldab ImageGenerator klass koos image_url ja APIKey atribuudid. The genereeri pilt meetod kohandab kujutise genereerimise lõpp-punkti nõudeid. See tekitab n URL-id, mis kasutavad loomuliku keele viipa, olenevalt ImageCount väärtus.

Kuid, self.image_url ekstraheerib JSON-i vastusest loodud kujutiste URL-id loendisse, kasutades loendi mõistmises tsüklit for.

Väljund näeb välja selline:

Lõpuks, allalaadimine pilt meetod laadib iga pildi alla, küsides loodud aadresse. See meetod aktsepteerib n nimede arv, mida soovite igale pildile anda.

Piltide redigeerimine OpenAI API abil

Redigeerimise lõpp-punkt võimaldab redigeerida olemasolevat pilti maskimalli alusel. Mask on RGBA-vormingus, millel on märkustega läbipaistev ala ja see peab olema sama suur kui pilt, mida soovite redigeerida.

Kui annate maski, asendab redigeerimise lõpp-punkt selle maskeeritud ala olemasoleva pildi uue viipaga, et luua uus. Lisage ülaltoodud eelmisele klassile järgmised meetodid:

klassImageGenerator:
def__selles__(ise,...):
...

defconvertImage(ise, maskNimi):
pilt = Image.open("{}.png".format (maskName))
rgba_image = image.convert("RGBA")
rgba_image.save("{}.png".format (maskName))

tagasi rgba_image


defredigeeri pilti(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
self.convertImage (maskName)
vastus = openai. Image.create_edit(
pilt = avatud ("{}.png".formaat (imageName), "rb"),
mask = avatud ("{}.png".formaat (maskName), "rb"),
prompt = viip,
n = piltide arv,
suurus = pildi suurus,
)
self.image_url = vastus['andmed']
self.image_url = [pilt["url"] jaoks pilt sisse self.image_url]

print (self.image_url)
tagasi self.image_url

# Redigeeri olemasolevat pilti:
imageGen.editImage(
pildinimi = "Loomad",
maskName = "mask",
ImageCount = 1,
Pildi suurus = "1024x1024",
Viip = "Kotkas seisab jõe kaldal ja joob vett suure mäega"
)

# Laadige redigeeritud pilt alla:
imageGen.downloadImage (names=[
"Uued loomad",
])

The convertImage meetod teisendab maski kujutise RGBA-vormingusse. Seda saate saavutada kasutades teisendada meetod Pythoni padjapaketist (imporditud PIL-ina).

Pärast teisendamist salvestab see uue maski olemasoleva alistamisena. Seega on pildi teisendamine redigeerimismeetodi esimene ülesanne (redigeeri pilti) teostab.

The pilt loeb sihtkujutise olemasolevast failist, samal ajal kui mask loeb teisendatud maski kujutist, millel peab olema läbipaistev ala.

Kasutades saate maskis läbipaistva ala välja märkida fototöötlustarkvara nagu Gimp või Photoshop.

Näiteks pilt, mida tahame ülaltoodud koodi viipa kasutades redigeerida, on:

Oletagem nüüd, et soovite asendada jõe kaldal seisva antiloopi kotkaga, nagu viipas märgitud.

Selline mask näeb välja:

Kuna ülaltoodud koodi viiba märksõna ütleb "jõe kaldal seisev kotkas", täidab tühja koha kotkas, asendades seal varem olnud antiloopi.

Siin on antud juhul uus pilt:

Võite proovida pilditöötluse lõpp-punktiga mängida, kasutades teisi fotosid.

Pildivariatsioonide genereerimine Pythonis OpenAI API abil

Variatsiooni lõpp-punkt genereerib olemasolevast pildist alternatiivsed pildid. Laiendage pildigeneraatori klassi veelgi, lisades pildi variatsioonimeetodi, nagu allpool näidatud:

klassImageGenerator:
def__selles__(ise) -> str:
...

defkujutise variatsioonid(ise, pildinimi, variatsioonide arv, pildi suurus):
vastus = openai. Image.create_variation(
pilt = avatud ("{}.png".formaat (pildinimi), "rb"),
n = variatsioonide arv,
suurus = pildi suurus
)

self.image_url = vastus['andmed']

self.image_url = [pilt["url"] jaoks pilt sisse self.image_url]
print (self.image_url)
tagasi self.image_url

# Esitage klass
imageGen = ImageGenerator()

# Genereeri olemasoleva pildi jaoks variatsioone
imageGen.imageVariations(
Pildi nimi = "Uued_loomad",
VariationCount = 2,
Pildi suurus = "1024x1024"
)

# Laadige alla variatsioonid
imageGen.downloadImage (names=[
"Variatsioon1",
"Variatsioon2",
]
)

Ülaltoodud kood genereerib pildi variatsioone.

Kasutage OpenAI-d oma eeliseks

Kuigi mõned inimesed kardavad, et tehisintellekt võib nende töökohad varastada, võib see olla pelgupaik – kui õpite seda juhtima ja kasutama. See OpenAI-pildi loomise õpetus on vaid üks paljudest AI kasutusjuhtudest pärismaailmas. OpenAI API-d pakuvad käepäraseid eelkoolitatud mudeleid, mida saate hõlpsasti oma rakendusse integreerida. Nii saate väljakutse vastu võtta ja selle õpetuse põhjal midagi väärtuslikku ehitada.

Kuigi piltide genereerimise API on kirjutamise seisuga veel beetaversioonis, võimaldab see juba kujuteldavaid kunstiteoseid meisterdada. Loodetavasti saab see täiendavaid värskendusi, et võimaldada skaleerimist ja aktsepteerida erinevaid pildisuurusi.