Lernpfad
Imagen 3 ist ein Text-zu-Bild-Erzeugungsmodell, das detaillierte Szenen in verschiedenen Stilen genau wiedergeben und sogar Text in Bilder einfügen kann, wodurch es sich für Anwendungen wie Werbung und die Erstellung von Medieninhalten eignet.
Wir können Imagen 3 über die Vertex AI Studio-Schnittstelle nutzen oder es über eine API direkt in Anwendungen integrieren.
In diesem Tutorial erkläre ich dir, wie du mit Imagen 3 Bilder generierst, indem du die Google Generating API mit Python verwendest. Ich führe dich durch praktische Beispiele, die dir zeigen, wie du die Umgebung einrichtest, den nötigen Code schreibst und diese Technologie in deine Projekte integrierst. Egal, ob du unsere Anwendungen mit dynamischen Bildern erweitern oder einfach nur deine Neugier befriedigen willst, dieses Handbuch bietet einen einfachen Weg, Imagen 3 zu verstehen und programmatisch zu nutzen.
KI-Anwendungen entwickeln
Einrichten der Google Generative AI API
Um mit Imagen 3 in Python loszulegen, müssen wir ein paar wichtige Schritte durchführen. Zuerst erstellen wir ein Google Cloud-Projekt. Sobald unser Projekt fertig ist, müssen wir einen API-Schlüssel erstellen. Dieser Schlüssel ermöglicht es unserem Python-Code, mit dem Imagen 3-Dienst zu interagieren.
Ein Google Cloud Projekt erstellen
Die Erstellung eines Google Cloud-Projekts ist der erste Schritt zur Nutzung der KI-API von Google. Lass uns gemeinsam durch den Prozess gehen:
- Greife auf die Google Cloud-Konsole zu: Wir beginnen mit der Navigation zur Google Cloud-Konsole. Du musst dich mit deinem Google-Konto anmelden.
- Wähle oder erstelle ein neues Projekt: In der Konsole suchst du in der oberen Navigationsleiste nach dem Dropdown-Menü "Projekt". Wenn du darauf klickst, hast du die Möglichkeit, ein bestehendes Projekt auszuwählen oder ein neues zu erstellen. Wir wählen "Neues Projekt", um fortzufahren.
- Gib die Projektdetails an: Es erscheint ein einfaches Formular, in dem grundlegende Informationen abgefragt werden. Wir können einen beliebigen Namen für das Projekt wählen, aber es ist hilfreich, etwas Beschreibendes zu wählen. Dies kann später bei Bedarf geändert werden. Wir verwenden
Imagen-tutorial
. Die Organisation kann leer gelassen werden.
Den API-Schlüssel erstellen
Jetzt, wo das Google Cloud-Projekt erstellt ist, können wir einen API-Schlüssel erstellen, indem wir zur API-Schlüssel-Seite in Google AI Studio navigieren.
Um den Schlüssel zu erstellen, klicke auf die Schaltfläche "API-Schlüssel erstellen":
Gib in dem Popup den Namen des Projekts ein, das wir oben erstellt haben, wähle es aus und klicke auf "API-Schlüssel in bestehendem Projekt erstellen":
Kopiere den Schlüssel und erstelle eine Datei mit dem Namen .env
in demselben Ordner, in dem wir das Python-Skript schreiben werden. Der Inhalt der Datei .env
sollte sein:
GEMINI_API_KEY=<paste_your_key_here>
Abrechnungskonto
Wenn wir jetzt versuchen würden, den API-Schlüssel zu verwenden, würden wir eine Fehlermeldung erhalten, die besagt: "Die Imagen-API ist derzeit nur für abgerechnete Nutzer zugänglich." Das liegt daran, dass die API nicht kostenlos ist und wir ein Abrechnungskonto mit dem Projekt verknüpfen müssen, bevor wir sie nutzen können.
Zum Zeitpunkt der Erstellung dieses Artikels beträgt der Preis für die Erstellung eines Bildes mit Imagen 3 $0,03. Weitere Informationen findest du auf der Seite mit den Preisen.
Um ein Abrechnungskonto hinzuzufügen, klicke auf die Schaltfläche "Abrechnung einrichten" neben dem API-Schlüssel in Google AI Studio.
Dadurch werden wir auf die Google Cloud-Website weitergeleitet, wo wir entweder ein bestehendes Abrechnungskonto auswählen können, indem wir auf "Abrechnungskonto verknüpfen" klicken, oder ein neues erstellen können, indem wir auf "Abrechnungskonten verwalten" klicken.
Nehmen wir an, wir haben keine, also erstellen wir "Rechnungskonten verwalten". Oben links auf der Seite gibt es eine Schaltfläche "Konto erstellen". Um das Konto zu erstellen, müssen wir unsere persönlichen Daten eingeben und eine Kreditkarte angeben, um die Zahlungen abzuwickeln.
Mit Python ein Bild mit Imagen 3 erzeugen
Einrichtung der Umgebung mit Anaconda
In diesem Tutorial verwenden wir Anaconda, eine beliebte Plattform, die die Paketverwaltung und das Einrichten von Projekten vereinfacht und so die Ausführung von Python-Skripten erleichtert.
Wir können Anaconda von ihrer offiziellen Website installieren.
Um die Anaconda-Umgebung einzurichten, öffne ein Terminal und:
- Erstelle eine Umgebung:
conda create -n imagen python=3.9
. Mit diesem Befehl wurde eine Umgebung mit dem Namenimagen
erstellt, die die Version 3.9 von Python verwendet. - Aktiviere die Umgebung:
conda activate imagen
. - Installiere das generative KI-Paket von Google:
pip install -q -U google-genai
. - Installiere ein Bildverarbeitungspaket, um die erzeugten Bilder zu verarbeiten:
pip install pillow
. - Installiere ein Paket, um den API-Schlüssel zu laden:
pip install python-dotenv
Wir können die Pakete auch direkt installieren, ohne Anaconda zu verwenden. Dabei besteht jedoch die Gefahr, dass einige der aktuell installierten Pakete mit einigen der neuen Pakete in Konflikt geraten oder dass unsere Python-Installation eine andere Version von Python verwendet. Mit Anaconda werden diese potenziellen Probleme vermieden.
Unser erstes Bild generieren
Wir sind jetzt bereit, Imagen 3 zu benutzen. Erstelle ein neues Python-Skript, z. B. gen_image.py
, im selben Ordner wie die Datei .env.
.
Zuerst importieren wir die notwendigen Pakete:
# Google generative AI:
from google import genai
from google.genai import types
# Packages to process the generated image:
from PIL import Image
from io import BytesIO
# Packages to load the .env file:
import os
from dotenv import load_dotenv
Als Nächstes laden wir den API-Schlüssel aus der Datei .env
:
load_dotenv()
api_key = os.getenv("GEMINI_API_KEY")
Dann initialisieren wir den generativen KI-Client von Google. Dies ist das Objekt, mit dem wir mit der Google API kommunizieren können:
client = genai.Client(api_key=api_key)
Um ein Bild zu erzeugen, verwenden wir die Funktion client.models.generate_images()
:
prompt="""
A dog surfing at the beach
"""
response = client.models.generate_images(
model="imagen-3.0-generate-002",
prompt=prompt,
config=types.GenerateImagesConfig(
number_of_images=1,
)
)
Schließlich zeigen wir das erzeugte Bild mit dem Objekt Image
an:
for generated_image in response.generated_images:
image = Image.open(BytesIO(generated_image.image.image_bytes))
image.show()
Hier ist das Ergebnis:
Textgenerierung
Eine der interessanten Funktionen von Imagen 3 im Vergleich zu anderen Text-Bild-Modellen ist die Möglichkeit, Text zu erzeugen. Probieren wir es aus, indem wir das Wort "Tee" aus frischen Teeblättern erzeugen lassen:
prompt="""
Word "tea" made from fresh tea leaves, white background
"""
response = client.models.generate_images(
model="imagen-3.0-generate-002",
prompt=prompt,
)
Hier ist das Ergebnis:
Bilderzeugungsoptionen mit Imagen 3
Die Optionen für die Bilderzeugung werden über die types.GenerateImagesConfig
Optionen bereitgestellt. Im obigen Beispiel haben wir nur die Anzahl der zu erzeugenden Bilder angegeben:
config=types.GenerateImagesConfig(
number_of_images=1,
)
In diesem Abschnitt erkunden wir die anderen Optionen, die die Imagen 3 API bietet. Siehe die offizielle Dokumentation für weitere Informationen.
Mehrere Bilder generieren
Wir können den Parameter number_of_images
verwenden, um mehrere Bilder mit einer einzigen Eingabeaufforderung zu erzeugen. Standardmäßig werden vier Bilder erstellt.
Versuchen wir, zwei Bilder für einen Comic zu erstellen.
prompt="""
Single comic book panel of two people overlooking a destroyed city.
A speech bubble points from one of them and says: I guess this is the end.
"""
response = client.models.generate_images(
model="imagen-3.0-generate-002",
prompt=prompt,
config=types.GenerateImagesConfig(
number_of_images=2,
)
)
Hier ist das Ergebnis:
Dies ist ein weiteres Beispiel für die Erstellung von Text in Bildern. Auch wenn das Bild auf der linken Seite zusätzlichen unerwünschten Text enthält, können wir durch die Möglichkeit, mehrere Bilder zu erstellen, unsere Chancen erhöhen, das gewünschte Ergebnis zu erhalten. Das Bild auf der rechten Seite entspricht fast vollständig unserer Aufforderung.
Kontrolle des Seitenverhältnisses
Standardmäßig sind die erzeugten Bilder quadratisch und haben ein Seitenverhältnis von 1:1
. Das Modell unterstützt die folgenden Seitenverhältnisse: 1:1
, 3:4
, 4:3
, 9:16
, und 16:9
.
Lass uns ein 9:16
Bild erstellen, das wir als Telefonhintergrund verwenden können:
prompt="""
A drone shot of a river flowing between mountains with a stormy sky.
"""
response = client.models.generate_images(
model="imagen-3.0-generate-002",
prompt=prompt,
config=types.GenerateImagesConfig(
aspect_ratio="9:16",
)
)
Hier ist das Ergebnis:
Sicherheitsstufe Filter
In der Dokumentation wird erwähnt, dass wir die safety_filter_level
verwenden können, um den Grad der Bildfilterung festzulegen. Jedes generierte Bild erhält einen Wahrscheinlichkeitswert, der die Wahrscheinlichkeit misst, dass das Bild unsicher ist (z. B. unangemessener Inhalt).
Die Einstellung des Filters für die Sicherheitsstufe ist wichtig, weil sie dazu beiträgt, dass die generierten Inhalte angemessen sind und den Präferenzen der Nutzer/innen entsprechen.
In der Dokumentation steht, dass es drei Stufen unterstützt:
BLOCK_LOW_AND_ABOVE
: Blockiere das Bild auch bei einer niedrigen Wahrscheinlichkeitszahl.BLOCK_MEDIUM_AND_ABOVE
: Blockiere nur Bilder mit mittleren und hohen Wahrscheinlichkeitswerten.BLOCK_ONLY_HIGH
: Nur Bilder mit einer hohen Wahrscheinlichkeitsbewertung blockieren
Nach einigen Versuchen unterstützt die API jedoch nur noch die Option BLOCK_LOW_AND_ABOVE
. Jede andere Angabe führt zu einem Fehler.
Person Generation
Mit der Option person_generation
können wir steuern, ob das Modell Personen erzeugen darf. Sie bietet zwei Optionen:
DONT_ALLOW
: Bilder, auf denen Menschen zu sehen sind, werden gesperrt.ALLOW_ADULT
: So können wir Bilder mit Menschen (nur Erwachsene) erstellen.
Die Standardoption ist, Menschen zuzulassen. Wenn wir zum Beispiel die Option "Personen nicht zulassen" einstellen und versuchen, ein Bild von jemandem zu erzeugen, der kocht, werden wir keine Bilder erhalten.
prompt="""
A person cooking.
"""
response = client.models.generate_images(
model="imagen-3.0-generate-002",
prompt=prompt,
config=types.GenerateImagesConfig(
person_generation="DONT_ALLOW",
)
)
print(response.generated_images)
Hier ist die Ausgabe:
None
Eine gute Aufforderung für Imagen 3
Die offizielle Dokumentation bietet eine umfassende Anleitung zur Eingabeaufforderung für Imagen 3, daher werde ich sie hier nicht wiederholen. Hier sind die wichtigsten Ideen, wie du einen guten Prompt erstellen kannst:
- Grundlagen des Prompt-Schreibens:
- Thema: Konzentriere dich auf das Hauptobjekt, die Person oder die Szene, die du darstellen willst.
- Kontext und Hintergrund: Beschreibe das Umfeld oder die Umgebung, in der sich das Thema befindet.
- Stil: Gib den gewünschten künstlerischen oder fotografischen Stil an (z. B. Skizze, Gemälde, Foto).
- Verwende eine beschreibende Sprache: Verwende detaillierte Adjektive und den Kontext, um das gewünschte Ergebnis zu verdeutlichen.
- Verweise auf bestimmte Stile: Orientiere dich an bekannten Künstlern oder Kunstströmungen, um die Ästhetik zu vermitteln.
- Text in Bildern: Begrenze den Text auf 25 Zeichen oder weniger und verwende eindeutige Sätze, um zusätzliche Informationen zu liefern.
- Aufforderung zur Parametrisierung: Wenn wir mehrere Bilder im gleichen Stil erstellen müssen, ist es eine gute Idee, eine wiederverwendbare Prompt-Vorlage zu erstellen und nur den Teil einzugeben, der sich ändert.
- Fotografie: Lege Kameraeinstellungen, Objektivtypen und Beleuchtung fest, um das Ergebnis zu beeinflussen.
- Art: Verwende Beschreibungen wie "ein Gemälde von..." oder bestimmte Techniken wie "Aquarellmalerei von...".
- Bildqualitätsmodifikatoren: Verwende Schlüsselwörter wie "hochwertig" oder "4K", um die Qualität der Ausgabe zu verbessern.
- Fotorealistische Bilder: Füge technische Details wie den Objektivtyp und die Brennweite hinzu, um den Realismus zu erhöhen.
Bildbearbeitung und -anpassung
Imagen 3 bietet auch die Möglichkeit, Bilder zu bearbeiten und anzupassen. Leider sind diese Funktionen immer noch gesperrt und nur für bestimmte Nutzer zugänglich.
Die Anpassungsfunktion ermöglicht es uns zum Beispiel, ein Referenzbild aus einer Eingabeaufforderung heraus anzupassen. In dem Beispiel wird ein Foto einer Frau gegeben, und die Eingabeaufforderung ändert dieses Bild in eines, auf dem dieselbe Person Orangen hält.
Weitere Informationen dazu und das Antragsformular für den Zugang finden Sie auf ihrer Website.
Fazit
In diesem Lernprogramm haben wir gelernt, wie man mit Imagen 3 Bilder mit Python und der Generativen API von Google erstellt. Insgesamt bin ich mit den Ergebnissen zufrieden, die ich beim Experimentieren mit der API erhalten habe. Ich habe das Gefühl, dass die Ergebnisse von hoher Qualität sind und weniger KI-Artefakte enthalten, wodurch es schwieriger wird, sie von echten Bildern zu unterscheiden.
Die Möglichkeit, mit Text in Bildern zu arbeiten, ist nützlich für Branding und Marketing. Insgesamt finde ich, dass dieses Modell gut funktioniert. Ich wünschte nur, alle Funktionen wären offen, denn ich finde, dass die Bildbearbeitung noch nützlicher ist als die Bilderstellung.