Využijte model DALL·E 2 OpenAI pro generování obrázků pomocí Pythonu.
Pokud jste někdy používali ChatGPT, pak jste byli svědky jeho intuice. Díky rozhraní API OpenAI mohou vývojáři prozkoumat a integrovat do aplikací generování kódu, dokončování textu, porovnávání textu, školení modelů a generování obrázků.
V tomto tutoriálu se naučíte, jak používat API OpenAI s Pythonem ke generování, úpravám a obměnám obrázků pomocí výzev v přirozeném jazyce.
Začínáme s OpenAI pomocí Pythonu
Než začnete s tímto návodem, musíte nastavit několik věcí. Nejprve se ujistěte, že jste na svůj počítač nainstalovali nejnovější verzi Pythonu. Pokud používáte distribuci Linuxu, jako je Ubuntu, možná budete chtít vidět jak nainstalovat Python na Ubuntu.
Vytvořte novou složku pro svůj projekt a otevřete příkazový řádek do adresáře projektu.
Následuje instalace balíčku OpenAI. Musíte nainstalovat polštář pro převod obrázků do RGBA při použití koncového bodu pro úpravy obrázků. Možná budete chtít nainstalovat python-dotenv; použijete to k maskování tajných klíčů.
Doporučujeme vytvořit a vyhrazené virtuální prostředí Pythonu k izolaci závislostí.
Kód použitý v tomto projektu je k dispozici v a úložiště GitHub a můžete jej používat zdarma pod licencí MIT.
Chcete-li nainstalovat python-dotenv, polštář, a openai packages, spusťte v terminálu následující příkaz:
pip install openai polštář python-dotenv
Nyní přejděte k OpenAI a přihlaste se na svůj řídicí panel, abyste získali klíč API:
- Jakmile se přihlásíte, klikněte na ikonu svého profilu v pravé horní části.
- Jít do Zobrazit klíče API. Pokud váš klíč API není vidět, klikněte Vytvořte nový tajný klíč vygenerovat nový.
- Zkopírujte vygenerovaný tajný klíč a vložte jej na bezpečné místo v počítači. Možná budete chtít z bezpečnostních důvodů vložit do souboru proměnných prostředí v kořenovém adresáři projektu.
Jak generovat a upravovat obrázky pomocí OpenAI API v Pythonu
Generování obrázků OpenAI API obsahuje koncové body pro generování nových obrázků, vytváření variant obrázků a jejich úpravy.
V následujících částech prozkoumáte tyto koncové body, abyste mohli generovat, upravovat, vylepšovat a stahovat obrázky pomocí výzev v přirozeném jazyce.
Generování obrázků pomocí OpenAI API
Koncový bod generování obrazu přijímá tři argumenty klíčových slov. Tyto zahrnují výzva, n, a velikost.
The výzva klíčové slovo je řetězec textu popisující obrázek, který chcete vygenerovat n je počet obrázků, které se mají vygenerovat během volání API. The velikost je velikost obrázku a při psaní přijímá pouze 256 x 256, 512 x 512 a 1024 x 1024 pixelů, podle oficiálních OpenAI dokumentace pro vytváření obrázků.
Následující kód generuje obrázky pomocí výzev v přirozeném jazyce a vydává jejich URL (adresy obrázků):
import openai
import os
import žádosti
z dotenv import load_dotenv
z PIL import obraz
load_dotenv()třídaImageGenerator:
def__init__(já) -> str:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
já. APIKey = openai.api_key
self.name = Žádnýdefgenerovat obrázek(vlastní, výzva, počet obrázků, velikost obrázku):
Snaž se:
já. APIKey
odpověď = openai. Image.create(
výzva = výzva,
n = ImageCount,
velikost = Velikost obrázku,
)
self.image_url = odpověď['data']
self.image_url = [obrázek["url"] pro obraz v self.image_url]
tisknout (self.image_url)
vrátit se self.image_url
až na openai.error. OpenAIError tak jako E:
tisknout (e.http_status)
tisknout (např. chyba)defstáhnout obrázek(já, jména)-> Žádný:
Snaž se:
self.name = jména
pro url v self.image_url:
obrázek = request.get (url)
pro název v vlastní jméno:
s OTEVŘENO("{}.png".format (název), "wb") tak jako F:
f.write (image.content)
až na:
tisk("Nastala chyba")
vrátit se vlastní.jméno# Vytvořte instanci třídy
imageGen = ImageGenerator()# Generování obrázků:
imageGen.generateImage(
Výzva = "Obří lev, medvěd, opice a tygr stojící na vodopádu",
ImageCount = 2,
Velikost obrázku = '1024x1024'
)
# Stáhněte si obrázky:
imageGen.downloadImage (names=[
"zvířata",
"Zvířata2"
])
Výše uvedený kód obsahuje an ImageGenerator třída s image_url a APIKey atributy. The generovat obrázek metoda přizpůsobuje požadavky koncového bodu generování obrazu. To generuje n URL pomocí výzvy v přirozeném jazyce, v závislosti na ImageCount hodnota.
Nicméně, self.image_url extrahuje vygenerované adresy URL obrázků z odpovědi JSON do seznamu pomocí cyklu for v porozumění seznamu.
Výstup vypadá takto:
Konečně, stáhnout obrázek metoda stáhne každý obrázek vyžádáním vygenerovaných adres. Tato metoda přijímá n počet jmen, která chcete každému obrázku přiřadit.
Úpravy obrázků pomocí OpenAI API
Koncový bod úprav umožňuje upravit existující obrázek na základě šablony masky. Maska je ve formátu RGBA s anotovanou průhlednou oblastí a musí mít stejnou velikost jako obrázek, který chcete upravit.
Když zadáte masku, koncový bod úprav nahradí svou maskovanou oblast novou výzvou ve stávajícím obrázku, aby se vytvořila nová. Přidejte následující metody do výše uvedené předchozí třídy:
třídaImageGenerator:
def__init__(sebe,...):
...defconvertImage(self, maskName):
image = Image.open("{}.png".format (maskName))
rgba_image = image.convert('RGBA')
rgba_image.save("{}.png".format (maskName))vrátit se rgba_image
defupravitObrázek(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
self.convertImage (název masky)
odpověď = openai. Image.create_edit(
obrázek = otevřít("{}.png".format (imageName), "rb"),
maska = otevřít("{}.png".format (název masky), "rb"),
výzva = výzva,
n = ImageCount,
velikost = Velikost obrázku,
)
self.image_url = odpověď['data']
self.image_url = [obrázek["url"] pro obraz v self.image_url]tisknout (self.image_url)
vrátit se self.image_url# Upravit existující obrázek:
imageGen.editImage(
imageName = "zvířata",
maskName = "maska",
ImageCount = 1,
Velikost obrázku = "1024x1024",
Výzva = "Orel stojící na břehu řeky pije vodu s velkou horou"
)
# Stáhněte si upravený obrázek:
imageGen.downloadImage (names=[
"Nová zvířata",
])
The convertImage metoda převede obraz masky do formátu RGBA. Toho můžete dosáhnout pomocí konvertovat metoda z balíčku polštářů Pythonu (importováno jako PIL).
Po převedení uloží novou masku jako přepsání stávající masky. Konverze obrázků je tedy prvním úkolem metody úprav (upravitObrázek) provede.
The obraz čte cílový obrázek z existujícího souboru, zatímco maska přečte převedený obraz masky, který musí mít průhlednou oblast.
Průhlednou oblast v masce můžete označit pomocí software pro úpravu fotografií jako Gimp nebo Photoshop.
Například obrázek, který chceme upravit pomocí výzvy v kódu výše, je:
Nyní předpokládejme, že chcete nahradit antilopu stojící na břehu řeky orlem, jak je uvedeno ve výzvě.
Maska vypadá takto:
Protože klíčové slovo ve výzvě z výše uvedeného kódu říká „orel stojící na břehu řeky“, prázdné místo zaplní orel, který nahradí antilopu, která tam byla předtím.
Zde je nový obrázek v tomto případě:
Můžete si zkusit pohrát s koncovým bodem pro úpravu obrázků pomocí jiných fotografií.
Generování variací obrázků v Pythonu pomocí OpenAI API
Koncový bod variace generuje alternativní obrázky z existujícího obrázku. Třídu generátoru obrázků dále rozšiřte přidáním metody variace obrázků, jak je uvedeno níže:
třídaImageGenerator:
def__init__(já) -> str:
...
defvariace obrázků(self, ImageName, VariationCount, ImageSize):
odpověď = openai. Image.create_variation(
obrázek = otevřít("{}.png".format (název obrázku), "rb"),
n = VariationCount,
velikost = Velikost obrázku
)
self.image_url = odpověď['data']
self.image_url = [obrázek["url"] pro obraz v self.image_url]
tisknout (self.image_url)
vrátit se self.image_url
# Vytvořte instanci třídy
imageGen = ImageGenerator()# Vygenerujte varianty pro existující obrázek
imageGen.imageVariations(
ImageName = "Nová_zvířata",
Počet variací = 2,
Velikost obrázku = "1024x1024"
)
# Stáhněte si varianty
imageGen.downloadImage (names=[
"Varianta 1",
"Varianta 2",
]
)
Výše uvedený kód generuje varianty obrázku.
Využijte OpenAI ke svému prospěchu
I když se někteří lidé obávají, že by jim umělá inteligence mohla ukrást práci, koneckonců to může být útočiště – pokud se ji naučíte ovládat a používat. Tento návod na vytváření obrázků OpenAI je jen jedním z mnoha případů použití AI v reálném světě. Rozhraní OpenAI API poskytují praktické předtrénované modely, které můžete snadno integrovat do své aplikace. Takže se můžete chopit této výzvy a postavit něco, co stojí za to z tohoto tutoriálu.
Ačkoli je API pro generování obrázků v době psaní stále ve verzi beta, již nyní vám umožňuje vytvářet imaginární umělecká díla. Doufejme, že dostane další aktualizace, které umožní upscaling a přijmou různé velikosti obrázků.