Benytt deg av OpenAIs DALL·E 2-modell for å generere bilder ved hjelp av Python.
Hvis du noen gang har brukt ChatGPT, har du vært vitne til dens intuisjon. Med OpenAIs APIer er kodegenerering, tekstfullføring, tekstsammenligning, modellopplæring og bildegenerering i bagasjen for utviklere å utforske og integrere i apper.
I denne opplæringen lærer du hvordan du bruker OpenAIs API med Python for å generere, redigere og variere bilder ved å bruke naturlig språk.
Komme i gang med OpenAI ved å bruke Python
Du må sette opp et par ting før du starter denne opplæringen. Først må du sørge for at du har installert Pythons nyeste versjon på datamaskinen din. Hvis du bruker en Linux-distribusjon som Ubuntu, vil du kanskje også se hvordan installere Python på Ubuntu.
Opprett en ny mappe for prosjektet og åpne kommandolinjen til prosjektkatalogen.
Neste er OpenAI-pakkeinstallasjonen. Du må installere pute for å konvertere bilder til RGBA mens du bruker bilderedigeringsendepunktet. Du vil kanskje også installere python-dotenv; du bruker dette til å maskere hemmelige nøkler.
Vi anbefaler å lage en dedikert Python virtuelt miljø å isolere avhengigheter.
Koden som brukes i dette prosjektet er tilgjengelig i en GitHub-depot og er gratis for deg å bruke under MIT-lisensen.
For å installere python-dotenv, pute, og openai pakker, kjør følgende kommando i terminalen:
pip installer openai python-dotenv pute
Gå nå over til OpenAI og logg på dashbordet for å hente API-nøkkelen din:
- Når du har logget på, klikker du på profilikonet ditt øverst til høyre.
- Gå til Se API-nøkler. Hvis API-nøkkelen din ikke er synlig, klikker du Opprett ny hemmelig nøkkel å generere en ny.
- Kopier den genererte hemmelige nøkkelen og lim den inn et trygt sted på datamaskinen din. Du vil kanskje lime den inn i en miljøvariabelfil i prosjektets rotkatalog for sikkerhet.
Hvordan generere og redigere bilder med OpenAI API i Python
OpenAI APIs bildegenerering har endepunkter for å generere nye bilder, lage bildevarianter og redigere dem.
I de følgende delene vil du utforske disse endepunktene for å generere, redigere, finjustere og laste ned bilder ved å bruke naturlig språk.
Generering av bilder ved hjelp av OpenAI API
Bildegenereringsendepunktet godtar tre nøkkelordargumenter. Disse inkluderer ledetekst, n, og størrelse.
De ledetekst nøkkelord er en tekststreng som beskriver bildet du ønsker å generere, mens n er antall bilder som skal genereres under et API-kall. De størrelse er bildestørrelsen, og i skrivende stund godtar den bare 256x256, 512x512 og 1024x1024 piksler, ifølge den offisielle OpenAI bildegenereringsdokumentasjon.
Følgende kode genererer bilder ved å bruke naturlig språk og sender ut URL-en deres (bildeadresser):
import openai
import os
import forespørsler
fra dotenv import load_dotenv
fra PIL import Bilde
load_dotenv()klasseImageGenerator:
def__i det__(selv) -> str:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
selv. APIKey = openai.api_key
self.name = Ingendefgenerere bilde(selv, ledetekst, ImageCount, ImageSize):
prøve:
selv. API-nøkkel
respons = åpenai. Image.create(
ledetekst = ledetekst,
n = ImageCount,
størrelse = bildestørrelse,
)
self.image_url = respons['data']
self.image_url = [bilde["url"] til bilde i self.image_url]
print (self.image_url)
komme tilbake self.image_url
unntatt openai.error. OpenAIError som e:
print (e.http_status)
skriv ut (e.error)deflast ned bilde(selv, navn)-> Ingen:
prøve:
self.name = navn
til url i self.image_url:
image = requests.get (url)
til Navn i self.name:
med åpen("{}.png".format (navn), "wb") som f:
f.write (image.content)
unntatt:
skrive ut("En feil oppstod")
komme tilbake selv.navn# Instantier klassen
imageGen = ImageGenerator()# Generer bilder:
imageGen.generateImage(
Spør = "Kjempeløve, bjørn, ape og tiger som står på et vannfall",
ImageCount = 2,
Bildestørrelse = '1024 x 1024'
)
# Last ned bildene:
imageGen.downloadImage (navn=[
"Dyr",
"Dyr 2"
])
Koden ovenfor inneholder en ImageGenerator klasse med image_url og API-nøkkel attributter. De generere bilde metoden tilpasser kravene til bildegenereringsendepunktet. Det genererer n URL-er som bruker ledeteksten på naturlig språk, avhengig av ImageCount verdi.
Derimot, self.image_url trekker ut de genererte bilde-URLene fra JSON-svaret til en liste ved å bruke for-løkken i en listeforståelse.
Utgangen ser slik ut:
Til slutt, den last ned bilde metoden laster ned hvert bilde ved å be om de genererte adressene. Denne metoden aksepterer n antall navn du ønsker å gi hvert bilde.
Redigere bilder ved hjelp av OpenAI API
Redigeringsendepunktet lar deg redigere et eksisterende bilde basert på en maskemal. Masken er et RGBA-format med et kommentert, gjennomsiktig område og må ha samme størrelse som bildet du vil redigere.
Når du angir en maske, erstatter redigeringsendepunktet det maskerte området med den nye ledeteksten i det eksisterende bildet for å produsere et nytt. Legg til følgende metoder til forrige klasse ovenfor:
klasseImageGenerator:
def__i det__(selv,...):
...defkonvertere bilde(selv, maskenavn):
bilde = Image.open("{}.png".format (maskenavn))
rgba_image = image.convert('RGBA')
rgba_image.save("{}.png".format (maskenavn))komme tilbake rgba_image
defeditImage(selv, bildenavn, maskenavn, bildetelling, bildestørrelse, ledetekst) -> str:
self.convertImage (maskName)
respons = åpenai. Image.create_edit(
bilde = åpen("{}.png".format (bildenavn), "rb"),
maske = åpen("{}.png".format (maskenavn), "rb"),
ledetekst = ledetekst,
n = ImageCount,
størrelse = bildestørrelse,
)
self.image_url = respons['data']
self.image_url = [bilde["url"] til bilde i self.image_url]print (self.image_url)
komme tilbake self.image_url# Rediger et eksisterende bilde:
imageGen.editImage(
bildenavn = "Dyr",
maskenavn = "maske",
ImageCount = 1,
Bildestørrelse = "1024 x 1024",
Spør = "En ørn som står på elvebredden og drikker vann med et stort fjell"
)
# Last ned det redigerte bildet:
imageGen.downloadImage (navn=[
"Nye dyr",
])
De konvertere bilde metoden konverterer maskebildet til RGBA-format. Du kan oppnå dette ved å bruke konvertere metode fra Pythons putepakke (importert som PIL).
Når den er konvertert, lagrer den den nye masken som en overstyring av den eksisterende. Dermed er bildekonvertering den første oppgaven redigeringsmetoden (editImage) utfører.
De bilde leser målbildet fra en eksisterende fil, mens maske leser det konverterte maskebildet, som må ha et gjennomsiktig område.
Du kan markere et gjennomsiktig område i masken ved å bruke programvare for bilderedigering som Gimp eller Photoshop.
For eksempel er bildet vi ønsker å redigere ved å bruke ledeteksten i koden ovenfor:
Anta nå at du vil erstatte antilopen som står ved elvebredden med en ørn, som det står i ledeteksten.
Slik ser masken ut:
Siden nøkkelordet i ledeteksten fra koden ovenfor sier "en ørn som står på elvebredden", blir det tomme punktet fylt opp av en ørn, og erstatter antilopen som tidligere var der.
Her er det nye bildet i denne saken:
Du kan prøve å leke deg med bilderedigeringsendepunktet ved å bruke andre bilder.
Generer bildevariasjoner i Python ved hjelp av OpenAI API
Variasjonsendepunktet genererer alternative bilder fra et eksisterende bilde. Utvid bildegeneratorklassen ytterligere ved å legge til en bildevariasjonsmetode som vist nedenfor:
klasseImageGenerator:
def__i det__(selv) -> str:
...
defbildevariasjoner(selv, ImageName, VariationCount, ImageSize):
respons = åpenai. Image.create_variation(
bilde = åpen("{}.png".format (bildenavn), "rb"),
n = VariationCount,
størrelse = ImageSize
)
self.image_url = respons['data']
self.image_url = [bilde["url"] til bilde i self.image_url]
print (self.image_url)
komme tilbake self.image_url
# Instantier klassen
imageGen = ImageGenerator()# Generer varianter for et eksisterende bilde
imageGen.imageVariations(
Bildenavn = "Nye_dyr",
VariationCount = 2,
Bildestørrelse = "1024 x 1024"
)
# Last ned variantene
imageGen.downloadImage (navn=[
"Variasjon 1",
"Variasjon 2",
]
)
Koden ovenfor genererer variasjoner av et bilde.
Bruk OpenAI til din fordel
Mens noen frykter at AI kan stjele jobbene deres, kan det tross alt være et fristed – hvis du lærer å kontrollere og bruke den. Denne opplæringen for oppretting av OpenAI-bilder er bare ett av mange brukstilfeller av AI i den virkelige verden. OpenAI API-ene gir praktiske forhåndstrente modeller du enkelt kan integrere i appen din. Så du kan ta utfordringen og bygge noe verdt fra denne opplæringen.
Selv om bildegenererings-APIet fortsatt er i betaversjon når det skrives, lar det deg allerede lage imaginære kunstverk. Forhåpentligvis får den ytterligere oppdateringer for å tillate oppskalering og akseptere varierende bildestørrelser.