Využite model DALL·E 2 OpenAI na generovanie obrázkov pomocou Pythonu.
Ak ste niekedy používali ChatGPT, potom ste boli svedkami jeho intuície. Vďaka rozhraniam API OpenAI sú generovanie kódu, dokončovanie textu, porovnávanie textu, školenie modelov a generovanie obrázkov v taške, ktorú môžu vývojári preskúmať a integrovať do aplikácií.
V tomto návode sa naučíte, ako používať API OpenAI s Pythonom na generovanie, úpravu a zmenu obrázkov pomocou výziev v prirodzenom jazyku.
Začíname s OpenAI pomocou Pythonu
Pred spustením tohto tutoriálu musíte nastaviť niekoľko vecí. Najprv sa uistite, že máte na svojom počítači nainštalovanú najnovšiu verziu Pythonu. Ak používate distribúciu Linuxu, ako je Ubuntu, možno budete chcieť vidieť ako nainštalovať Python na Ubuntu.
Vytvorte nový priečinok pre svoj projekt a otvorte príkazový riadok v adresári projektu.
Ďalej je inštalácia balíka OpenAI. Potrebujete nainštalovať vankúš na konverziu obrázkov na RGBA pri použití koncového bodu úpravy obrázkov. Možno budete chcieť nainštalovať python-dotenv; použijete na maskovanie tajných kľúčov.
Odporúčame vytvoriť a vyhradené virtuálne prostredie Python izolovať závislosti.
Kód použitý v tomto projekte je dostupný v a úložisko GitHub a môžete ho bezplatne používať na základe licencie MIT.
Ak chcete nainštalovať python-dotenv, vankúš, a openai balíky, spustite v termináli nasledujúci príkaz:
pip install openai python-dotenv vankúš
Teraz prejdite na OpenAI a prihláste sa na svoj informačný panel, aby ste získali kľúč API:
- Po prihlásení kliknite na ikonu svojho profilu v pravej hornej časti.
- Ísť do Zobraziť kľúče API. Ak váš kľúč API nie je viditeľný, kliknite Vytvorte nový tajný kľúč na vytvorenie nového.
- Skopírujte vygenerovaný tajný kľúč a prilepte ho na bezpečné miesto v počítači. Z bezpečnostných dôvodov ho možno budete chcieť vložiť do súboru premenných prostredia v koreňovom adresári projektu.
Ako generovať a upravovať obrázky pomocou OpenAI API v Pythone
Generovanie obrázkov OpenAI API obsahuje koncové body na generovanie nových obrázkov, vytváranie variácií obrázkov a ich úpravu.
V nasledujúcich častiach preskúmate tieto koncové body na generovanie, úpravu, ladenie a sťahovanie obrázkov pomocou výziev v prirodzenom jazyku.
Generovanie obrázkov pomocou OpenAI API
Koncový bod generovania obrázkov akceptuje tri argumenty kľúčových slov. Tie obsahujú výzva, n, a veľkosť.
The výzva Kľúčové slovo je reťazec textu popisujúci obrázok, ktorý chcete vygenerovať n je počet obrázkov, ktoré sa majú vygenerovať počas volania API. The veľkosť je veľkosť obrázka a v čase písania akceptuje iba 256 x 256, 512 x 512 a 1024 x 1024 pixelov, podľa oficiálneho OpenAI dokumentácia na vytváranie obrázkov.
Nasledujúci kód generuje obrázky pomocou výziev v prirodzenom jazyku a vydáva ich URL (adresy obrázkov):
importovať openai
importovať os
importovať žiadosti
od dotenv importovať load_dotenv
od PIL importovať Obrázok
load_dotenv()triedaImageGenerator:
def__init__(ja) -> str:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
seba. APIKey = openai.api_key
seba.meno = žiadnedefgenerovaťObrázok(vlastné, výzva, počet obrázkov, veľkosť obrázka):
skúste:
seba. APIKey
odpoveď = openai. Image.create(
výzva = výzva,
n = ImageCount,
veľkosť = Veľkosť obrázka,
)
self.image_url = odpoveď['data']
self.image_url = [obrázok["url"] pre obrázok v self.image_url]
vytlačiť (self.image_url)
vrátiť self.image_url
okrem openai.error. OpenAIError ako e:
vytlačiť (e.http_status)
vytlačiť (napr. chyba)defstiahnuťObrázok(ja, mená)-> žiadne:
skúste:
self.name = mená
pre url v self.image_url:
image = requests.get (url)
pre názov v vlastné meno:
s OTVORENÉ("{}.png".format (názov), "wb") ako f:
f.write (image.content)
okrem:
vytlačiť ("Vyskytla sa chyba")
vrátiť seba.meno# Vytvorte inštanciu triedy
imageGen = ImageGenerator()# Generovať obrázky:
imageGen.generateImage(
Prompt = "Obrovský lev, medveď, opica a tiger stojaci na vodopáde",
ImageCount = 2,
Veľkosť obrázka = '1024x1024'
)
# Stiahnite si obrázky:
imageGen.downloadImage (names=[
"zvieratá",
"Zvieratá 2"
])
Vyššie uvedený kód obsahuje an ImageGenerator trieda s image_url a APIKey atribúty. The generovaťObrázok metóda prispôsobuje požiadavky koncového bodu generovania obrazu. To generuje n URL používajúce výzvu v prirodzenom jazyku v závislosti od ImageCount hodnotu.
však self.image_url extrahuje vygenerované adresy URL obrázkov z odpovede JSON do zoznamu pomocou cyklu for v porozumení zoznamu.
Výstup vyzerá takto:
Nakoniec, stiahnuťObrázok metóda stiahne každý obrázok vyžiadaním vygenerovaných adries. Táto metóda akceptuje n počet mien, ktoré chcete dať každému obrázku.
Úprava obrázkov pomocou OpenAI API
Koncový bod úprav vám umožňuje upraviť existujúci obrázok na základe šablóny masky. Maska je vo formáte RGBA s anotovanou, priehľadnou oblasťou a musí mať rovnakú veľkosť ako obrázok, ktorý chcete upraviť.
Keď zadáte masku, koncový bod úprav nahradí svoju maskovanú oblasť novou výzvou v existujúcom obrázku, aby sa vytvorila nová. Do predchádzajúcej triedy pridajte nasledujúce metódy:
triedaImageGenerator:
def__init__(ja,...):
...defconvertImage(self, maskName):
image = Image.open("{}.png".format (maskName))
rgba_image = image.convert(„RGBA“)
rgba_image.save("{}.png".format (maskName))vrátiť rgba_image
defupraviťObrázok(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
self.convertImage (názov masky)
odpoveď = openai. Image.create_edit(
obrázok = otvoriť("{}.png".format (imageName), "rb"),
maska = otvoriť ("{}.png".format (meno masky), "rb"),
výzva = výzva,
n = ImageCount,
veľkosť = Veľkosť obrázka,
)
self.image_url = odpoveď['data']
self.image_url = [obrázok["url"] pre obrázok v self.image_url]vytlačiť (self.image_url)
vrátiť self.image_url# Upravte existujúci obrázok:
imageGen.editImage(
imageName = "zvieratá",
maskName = "maska",
ImageCount = 1,
Veľkosť obrázka = "1024x1024",
Prompt = "Orol stojaci na brehu rieky pije vodu s veľkou horou"
)
# Stiahnite si upravený obrázok:
imageGen.downloadImage (names=[
"Nové zvieratá",
])
The convertImage metóda konvertuje obrázok masky do formátu RGBA. Môžete to dosiahnuť pomocou konvertovať metóda z balíka vankúšov Pythonu (importované ako PIL).
Po konverzii uloží novú masku ako prepísanie existujúcej masky. Konverzia obrázkov je teda prvou úlohou metódy úprav (upraviťObrázok) vykoná.
The obrázok načíta cieľový obrázok z existujúceho súboru, zatiaľ čo maska prečíta konvertovaný obrázok masky, ktorý musí mať priehľadnú oblasť.
Priehľadnú oblasť masky môžete označiť pomocou softvér na úpravu fotografií ako Gimp alebo Photoshop.
Napríklad obrázok, ktorý chceme upraviť pomocou výzvy v kóde vyššie, je:
Teraz predpokladajme, že chcete nahradiť antilopu stojacu na brehu rieky orlom, ako je uvedené vo výzve.
Maska vyzerá takto:
Keďže kľúčové slovo vo výzve z vyššie uvedeného kódu hovorí „orol stojaci na brehu rieky“, prázdne miesto zaplní orol, ktorý nahradí antilopu, ktorá tam bola predtým.
Tu je nový obrázok v tomto prípade:
Môžete sa pokúsiť pohrať sa s koncovým bodom úpravy obrázkov pomocou iných fotografií.
Generovanie variácií obrázkov v Pythone pomocou OpenAI API
Koncový bod variácie generuje alternatívne obrázky z existujúceho obrázka. Rozšírte triedu generátora obrázkov ďalej pridaním metódy variácie obrázkov, ako je uvedené nižšie:
triedaImageGenerator:
def__init__(ja) -> str:
...
defvariácie obrázkov(self, ImageName, VariationCount, ImageSize):
odpoveď = openai. Image.create_variation(
obrázok = otvoriť("{}.png".format (názov obrázku), "rb"),
n = VariationCount,
veľkosť = Veľkosť obrázka
)
self.image_url = odpoveď['data']
self.image_url = [obrázok["url"] pre obrázok v self.image_url]
vytlačiť (self.image_url)
vrátiť self.image_url
# Vytvorte inštanciu triedy
imageGen = ImageGenerator()# Vytvorte variácie pre existujúci obrázok
imageGen.imageVariations(
Názov obrázku = "Nové_zvieratá",
Počet variácií = 2,
Veľkosť obrázka = "1024x1024"
)
# Stiahnite si variácie
imageGen.downloadImage (names=[
"Variácia 1",
"Variácia 2",
]
)
Vyššie uvedený kód generuje variácie obrázka.
Použite OpenAI vo svoj prospech
Aj keď sa niektorí ľudia obávajú, že by im AI mohla ukradnúť prácu, napokon to môže byť útočisko – ak sa ju naučíte ovládať a používať. Tento návod na vytváranie obrázkov OpenAI je len jedným z mnohých prípadov použitia AI v reálnom svete. Rozhrania OpenAI API poskytujú praktické predtrénované modely, ktoré môžete jednoducho integrovať do svojej aplikácie. Takže sa môžete chopiť tejto výzvy a vybudovať niečo, čo stojí za to z tohto tutoriálu.
Aj keď je API na generovanie obrázkov v čase písania stále vo verzii beta, už vám umožňuje vytvárať imaginárne umelecké diela. Dúfajme, že dostane ďalšie aktualizácie, ktoré umožnia upscaling a akceptujú rôzne veľkosti obrázkov.