Nutzen Sie das DALL·E 2-Modell von OpenAI, um Bilder mit Python zu generieren.

Wenn Sie jemals ChatGPT verwendet haben, dann haben Sie seine Intuition erlebt. Mit den APIs von OpenAI können Entwickler Codegenerierung, Textvervollständigung, Textvergleich, Modelltraining und Bildgenerierung erkunden und in Apps integrieren.

In diesem Lernprogramm erfahren Sie, wie Sie die OpenAI-API mit Python verwenden, um Bilder mit Eingabeaufforderungen in natürlicher Sprache zu generieren, zu bearbeiten und zu variieren.

Erste Schritte mit OpenAI mit Python

Bevor Sie mit diesem Tutorial beginnen, müssen Sie einige Dinge einrichten. Stellen Sie zunächst sicher, dass Sie die neueste Version von Python auf Ihrem Computer installiert haben. Wenn Sie eine Linux-Distribution wie Ubuntu verwenden, möchten Sie vielleicht auch sehen wie man Python unter Ubuntu installiert.

Erstellen Sie einen neuen Ordner für Ihr Projekt und öffnen Sie Ihre Befehlszeile für Ihr Projektverzeichnis.

Als nächstes folgt die Installation des OpenAI-Pakets. Sie müssen installieren

instagram viewer
Kopfkissen zum Konvertieren von Bildern in RGBA, während der Bildbearbeitungsendpunkt verwendet wird. Vielleicht möchten Sie auch installieren python-dotenv; Sie verwenden dies, um geheime Schlüssel zu maskieren.

Wir empfehlen die Erstellung einer dedizierte virtuelle Python-Umgebung Abhängigkeiten isolieren.

Der in diesem Projekt verwendete Code ist in a GitHub-Repository und steht Ihnen unter der MIT-Lizenz kostenlos zur Verfügung.

Zur Installation der python-dotenv, Kopfkissen, Und openai Paketen, führen Sie den folgenden Befehl im Terminal aus:

pip installiere openai python-dotenv pillow

Gehen Sie jetzt zu OpenAI und melden Sie sich bei Ihrem Dashboard an, um Ihren API-Schlüssel zu erhalten:

  1. Nachdem Sie sich angemeldet haben, klicken Sie oben rechts auf Ihr Profilsymbol.
  2. Gehe zu API-Schlüssel anzeigen. Wenn Ihr API-Schlüssel nicht sichtbar ist, klicken Sie auf Erstellen Sie einen neuen geheimen Schlüssel um ein neues zu generieren.
  3. Kopieren Sie den generierten geheimen Schlüssel und fügen Sie ihn an einem sicheren Ort auf Ihrem Computer ein. Möglicherweise möchten Sie es aus Sicherheitsgründen in eine Umgebungsvariablendatei im Stammverzeichnis Ihres Projekts einfügen.

So generieren und bearbeiten Sie Bilder mit der OpenAI-API in Python

Die Bildgenerierung der OpenAI-API bietet Endpunkte zum Generieren neuer Bilder, zum Erstellen von Bildvariationen und zum Bearbeiten dieser Bilder.

In den folgenden Abschnitten erkunden Sie diese Endpunkte zum Generieren, Bearbeiten, Optimieren und Herunterladen von Bildern mithilfe von Eingabeaufforderungen in natürlicher Sprache.

Generieren von Bildern mit der OpenAI-API

Der Bildgenerierungsendpunkt akzeptiert drei Schlüsselwortargumente. Diese beinhalten prompt, N, Und Größe.

Der prompt Schlüsselwort ist eine Textfolge, die das Bild beschreibt, das Sie generieren möchten, während N ist die Anzahl der Bilder, die während eines API-Aufrufs generiert werden sollen. Der Größe ist die Bildgröße, und zum jetzigen Zeitpunkt werden laut offiziellen Angaben nur 256 x 256, 512 x 512 und 1024 x 1024 Pixel akzeptiert OpenAI Dokumentation der Bilderzeugung.

Der folgende Code generiert Bilder mit Eingabeaufforderungen in natürlicher Sprache und gibt ihre URL (Bildadressen) aus:

importieren openai
importieren os
importieren Anfragen
aus dotenv importieren load_dotenv
aus PIL importieren Bild
load_dotenv()

KlasseBildgenerator:
def__drin__(selbst) -> str:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
selbst. APIKey = openai.api_key
self.name = Keiner

defBild erzeugen(selbst, Eingabeaufforderung, ImageCount, ImageSize):
versuchen:
selbst. API-Schlüssel
Antwort = openai. Bild.erstellen(
prompt = Aufforderung,
n = ImageCount,
Größe = Bildgröße,
)
self.image_url = Antwort['Daten']

self.image_url = [Bild["url"] für Bild In self.image_url]
drucken (self.image_url)
zurückkehren self.image_url
außer openai.error. OpenAIError als e:
drucken (e.http_status)
drucken (e.Fehler)

defBild herunterladen(selbst, Namen)-> Keiner:
versuchen:
self.name = Namen
für URL In self.image_url:
Bild = Anfragen.get (URL)
für Name In selbst.name:
mit offen("{}.png".format (Name), "wb") als F:
f.write (Bild.Inhalt)
außer:
drucken("Es ist ein Fehler aufgetreten")
zurückkehren selbst.name

# Klasse instanziieren
BildGen = BildGenerator()

# Bilder generieren:
imageGen.generateImage(
Aufforderung = "Riesiger Löwe, Bär, Affe und Tiger stehen auf einem Wasserfall",
ImageCount = 2,
Bildgröße = '1024x1024'
)

# Laden Sie die Bilder herunter:
imageGen.downloadImage (names=[
"Tiere",
"Tiere2"
])

Der obige Code enthält eine Bildgenerator Klasse mit der Bild URL Und API-Schlüssel Attribute. Der Bild erzeugen -Methode passt die Anforderungen des Endpunkts der Bilderzeugung an. Es generiert N URLs, die die Eingabeaufforderung in natürlicher Sprache verwenden, abhängig von der ImageCount Wert.

Jedoch, self.image_url extrahiert die generierten Bild-URLs aus der JSON-Antwort in eine Liste unter Verwendung der for-Schleife in einem Listenverständnis.

Die Ausgabe sieht so aus:

Endlich, das Bild herunterladen -Methode lädt jedes Bild herunter, indem die generierten Adressen angefordert werden. Diese Methode akzeptiert N Anzahl der Namen, die Sie jedem Bild geben möchten.

Bearbeiten von Bildern mit der OpenAI-API

Der Bearbeitungsendpunkt ermöglicht es Ihnen, ein vorhandenes Bild basierend auf einer Maskenvorlage zu bearbeiten. Die Maske ist ein RGBA-Format mit einem beschrifteten, transparenten Bereich und muss die gleiche Größe haben wie das Bild, das Sie bearbeiten möchten.

Wenn Sie eine Maske bereitstellen, ersetzt der Bearbeitungsendpunkt seinen maskierten Bereich durch die neue Eingabeaufforderung im vorhandenen Bild, um ein neues zu erstellen. Fügen Sie der obigen vorherigen Klasse die folgenden Methoden hinzu:

KlasseBildgenerator:
def__drin__(selbst, ...):
...

defconvertImage(selbst, Maskenname):
Bild = Bild.öffnen ("{}.png".format (Maskenname))
rgba_image = image.convert('RGBA')
rgba_image.save("{}.png".format (Maskenname))

zurückkehren rgba_image


defBild bearbeiten(selbst, Bildname, Maskenname, Bildanzahl, Bildgröße, Eingabeaufforderung) -> str:
self.convertImage (Maskenname)
Antwort = openai. Image.create_edit(
Bild = öffnen ("{}.png".format (Bildname), "rb"),
Maske = offen ("{}.png".format (Maskenname), "rb"),
prompt = Aufforderung,
n = ImageCount,
Größe = Bildgröße,
)
self.image_url = Antwort['Daten']
self.image_url = [Bild["url"] für Bild In self.image_url]

drucken (self.image_url)
zurückkehren self.image_url

# Ein vorhandenes Bild bearbeiten:
imageGen.editImage(
Bildname = "Tiere",
Maskenname = "Maske",
ImageCount = 1,
Bildgröße = "1024 x 1024",
Aufforderung = "Ein Adler steht am Flussufer und trinkt Wasser mit einem großen Berg"
)

# Laden Sie das bearbeitete Bild herunter:
imageGen.downloadImage (names=[
"Neue Tiere",
])

Der convertImage -Methode konvertiert das Maskenbild in das RGBA-Format. Dies erreichen Sie mit der Konvertieren -Methode aus Pythons Pillow-Paket (als PIL importiert).

Nach der Konvertierung wird die neue Maske als Überschreibung der vorhandenen gespeichert. Daher ist die Bildkonvertierung die erste Aufgabe der Bearbeitungsmethode (Bild bearbeiten) ausführt.

Der Bild liest das Zielbild aus einer bestehenden Datei, während die Maske liest das konvertierte Maskenbild, das einen transparenten Bereich haben muss.

Mit können Sie einen transparenten Bereich in der Maske markieren Bildbearbeitungssoftware wie Gimp oder Photoshop.

Das Bild, das wir mit der Eingabeaufforderung im obigen Code bearbeiten möchten, lautet beispielsweise:

Angenommen, Sie möchten die am Flussufer stehende Antilope durch einen Adler ersetzen, wie in der Eingabeaufforderung angegeben.

So sieht die Maske aus:

Da das Schlüsselwort in der Eingabeaufforderung aus dem obigen Code lautet: "ein Adler steht am Flussufer", wird die leere Stelle durch einen Adler aufgefüllt und ersetzt die Antilope, die zuvor dort war.

Hier ist das neue Bild in diesem Fall:

Sie können versuchen, mit anderen Fotos mit dem Bildbearbeitungsendpunkt herumzuspielen.

Generieren von Bildvariationen in Python mit der OpenAI-API

Der Variationsendpunkt generiert alternative Bilder aus einem vorhandenen Bild. Erweitern Sie die Bildgeneratorklasse weiter, indem Sie eine Bildvariationsmethode hinzufügen, wie unten gezeigt:

KlasseBildgenerator:
def__drin__(selbst) -> str:
...

defimageVariationen(selbst, ImageName, VariationCount, ImageSize):
Antwort = openai. Image.create_variation(
Bild = öffnen ("{}.png".format (Bildname), "rb"),
n = VariationCount,
Größe = Bildgröße
)

self.image_url = Antwort['Daten']

self.image_url = [Bild["url"] für Bild In self.image_url]
drucken (self.image_url)
zurückkehren self.image_url

# Klasse instanziieren
BildGen = BildGenerator()

# Generieren Sie Variationen für ein vorhandenes Bild
imageGen.imageVariations(
Bildname = "Neue_Tiere",
VariationCount = 2,
Bildgröße = "1024 x 1024"
)

# Laden Sie die Variationen herunter
imageGen.downloadImage (names=[
"Variation1",
"Variation2",
]
)

Der obige Code generiert Variationen eines Bildes.

Nutzen Sie OpenAI zu Ihrem Vorteil

Während einige Leute befürchten, dass die KI ihre Jobs stehlen könnte, könnte sie doch ein Zufluchtsort sein – wenn Sie lernen, sie zu kontrollieren und zu nutzen. Dieses OpenAI-Bilderstellungs-Tutorial ist nur einer von vielen Anwendungsfällen von KI in der realen Welt. Die OpenAI-APIs bieten praktische vortrainierte Modelle, die Sie einfach in Ihre App integrieren können. Sie können also die Herausforderung annehmen und aus diesem Tutorial etwas Wertvolles aufbauen.

Obwohl sich die Bildgenerierungs-API zum Zeitpunkt des Schreibens noch in der Beta-Phase befindet, können Sie damit bereits imaginäre Kunstwerke erstellen. Hoffentlich erhält es weitere Updates, um das Hochskalieren zu ermöglichen und unterschiedliche Bildgrößen zu akzeptieren.