Bilder mit Imagen 3 generieren

Imagen 3 ist ein Modell zur Bildgenerierung. Mit dieser Funktion können Sie benutzerdefinierte Avatare für Nutzerprofile erstellen oder personalisierte visuelle Assets in vorhandene Bildschirmflüsse einbinden, um das Nutzer-Engagement zu steigern.

Mit dem Firebase AI Logic SDK können Sie über Ihre Android-App auf Bildmodelle zugreifen. Imagen-Modelle sind über beide API-Anbieter für Firebase AI Logic verfügbar: die Gemini Developer API (für die meisten Entwickler empfohlen) und Vertex AI.

Ein Diagramm, das die Integrationsarchitektur von Firebase AI Logic für den Zugriff auf die Gemini Developer API darstellt Eine Android-App verwendet das Firebase Android SDK, um eine Verbindung zu Firebase herzustellen. Firebase interagiert dann mit der Gemini Developer API, die auf Gemini Pro und Flash in der Cloud zugreift.
Abbildung 1 Zugriff auf Imagen 3-Modelle mit Firebase AI Logic.

Mit Prompts experimentieren

Das Erstellen der idealen Prompts erfordert oft mehrere Versuche. Sie können mit Bildprompts in Vertex AI Studio experimentieren, einer IDE für das Design und Prototyping von Prompts. Tipps zur Verbesserung Ihrer Prompts finden Sie im Leitfaden zu Prompt- und Bildattributen.

Ein Screenshot der Benutzeroberfläche von Google Cloud Vertex AI Studio mit vier generierten Bildern eines T-Rex mit einem blauen Rucksack in einem prähistorischen Wald. In der linken Seitenleiste sind Navigationsoptionen wie „Dashboard“, „Model Garden“ und „Vision“ zu sehen. Der rechte Bereich enthält Parameter für die Einstellungen zur Bildgenerierung.
Abbildung 2. Mit Vertex AI Studio können Sie Ihre Prompts für die Bildgenerierung optimieren.

Firebase-Projekt einrichten und App verbinden

Folgen Sie der Anleitung in der Firebase-Dokumentation, um Firebase Ihrem Android-Projekt hinzuzufügen.

Gradle-Abhängigkeit hinzufügen

Fügen Sie der Datei build.gradle die folgenden Abhängigkeiten hinzu:

dependencies {
  // Import the BoM for the Firebase platform
  implementation(platform("com.google.firebase:firebase-bom:33.14.0"))

  // Add the dependency for the Firebase AI Logic library. When using the BoM,
  // you don't specify versions in Firebase library dependencies
  implementation("com.google.firebase:firebase-ai")
}

Bild generieren

Wenn Sie ein Bild in Ihrer Android-App generieren möchten, müssen Sie zuerst eine ImagenModel mit einer optionalen Konfiguration instanziieren.

Mit dem Parameter generationConfig können Sie einen negativen Prompt, die Anzahl der Bilder, das Seitenverhältnis des Ausgabebilds und das Bildformat definieren und ein Wasserzeichen hinzufügen. Mit dem Parameter safetySettings können Sie die Sicherheits- und Personenfilter konfigurieren.

Kotlin

val config = ImagenGenerationConfig {
    numberOfImages = 2,
    aspectRatio = ImagenAspectRatio.LANDSCAPE_16x9,
    imageFormat = ImagenImageFormat.jpeg(compressionQuality = 100),
    addWatermark = false
}

// Initialize the Gemini Developer API backend service
// For Vertex AI use Firebase.ai(backend = GenerativeBackend.vertexAI())
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).imagenModel(
    modelName = "imagen-3.0-generate-002",
    generationConfig = config,
    safetySettings = ImagenSafetySettings(
       safetyFilterLevel = ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE,
       personFilterLevel = ImagenPersonFilterLevel.BLOCK_ALL
    )
)

Java

ImagenGenerationConfig config = new ImagenGenerationConfig.Builder()
    .setNumberOfImages(2)
    .setAspectRatio(ImagenAspectRatio.LANDSCAPE_16x9)
    .setImageFormat(ImagenImageFormat.jpeg(100))
    .setAddWatermark(false)
    .build();

// For Vertex AI use Firebase.ai(backend = GenerativeBackend.vertexAI())
ImagenModelFutures model = ImagenModelFutures.from(
    FirebaseAI.ai(backend = GenerativeBackend.googleAI()).imagenModel(
       "imagen-3.0-generate-002",
       config,
       ImagenSafetySettings.builder()
          .setSafetyFilterLevel(ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE)
          .setPersonFilterLevel(ImagenPersonFilterLevel.BLOCK_ALL)
          .build())
);

Nachdem ImagenModel instanziiert wurde, können Sie Bilder generieren, indem Sie generateImages aufrufen:

Kotlin

val imageResponse = model.generateImages(
  prompt = "An astronaut riding a horse",
)
val image = imageResponse.images.first
val bitmapImage = image.asBitmap()

Java

CompletableFuture<GenerateContentResponse> futureResponse =
    model.generateContent(
        Content.newBuilder()
            .addParts(
                Part.newBuilder()
                    .setText("An astronaut riding a horse")
                    .build())
            .build());

try {
  GenerateContentResponse imageResponse = futureResponse.get();
  List<GeneratedImage> images =
      imageResponse
          .getCandidates(0)
          .getContent()
          .getParts(0)
          .getInlineData()
          .getImagesList();

  if (!images.isEmpty()) {
    GeneratedImage image = images.get(0);
    Bitmap bitmapImage = image.asBitmap();
    // Use bitmapImage
  }
} catch (ExecutionException | InterruptedException e) {
  e.printStackTrace();
}