產品新訊

運用 AI 圖像生成功能提升使用者參與度

5 分鐘閱讀

在應用程式中加入自訂圖片,可大幅改善及個人化使用者體驗,並提升使用者參與度。本文將探討 Firebase AI Logic 的兩項全新圖像生成功能:目前為預先發布版的 Imagen 專用編輯功能,以及 Gemini 2.5 Flash Image (又稱「Nano Banana」) 的正式發布,這項功能專為生成情境或對話式圖像而設計。

透過 Firebase AI Logic 生成圖片,提升使用者參與度

圖片生成模型可用於建立自訂使用者個人資料顯示圖片,或將個人化視覺素材直接整合至主要畫面流程。 

舉例來說,Imagen 提供新的編輯功能 (開發人員預先發布版)。現在可以繪製遮罩,並使用修復功能在遮罩區域內生成像素。此外,你也可以使用外繪功能,在遮罩外生成像素。  

Imagen inpainting.png

Imagen 支援局部修復,可只生成圖片的一部分。 

或者,Gemini 2.5 Flash Image (又稱 Nano Banana) 可運用 Gemini 模型擴充的世界知識和推論能力,生成與脈絡相關的圖片,非常適合用來建立與使用者目前應用程式體驗相符的動態插圖。   

 

In-context nano banana illustration.png

使用 Gemini 2.5 Flash Image 建立與應用程式相關的動態插圖。

最後,使用者可以透過對話和疊代方式編輯圖片,以自然語言編輯相片。

 

photo edit natural language.png

使用 Gemini 2.5 Flash Image,以自然語言編輯圖片。

開始將 AI 整合至應用程式時,請務必瞭解 AI 安全性。請務必評估應用程式的資安風險、考慮調整措施來降低安全風險、根據您的用途執行適當的安全測試、徵求使用者意見回饋,以及監控內容。

Imagen 或 Gemini:由你選擇

Gemini 2.5 Flash Image (「Nano Banana」) 和 Imagen 的差異在於主要用途和進階功能。Gemini 2.5 Flash Image 是 Gemini 系列中的圖像模型,擅長進行對話式圖像編輯,可在多次疊代中維持脈絡和主體一致性,並運用「世界知識和推論」功能,在長篇文字序列中建立與脈絡相關的影像內容或嵌入準確的圖像。

Imagen 是 Google 專門的圖像生成模型,可提供更強大的創作控制功能,擅長生成極為逼真的圖像、藝術細節和特定風格,並提供明確的控制選項,可指定生成圖像的長寬比或格式。

Gemini 2.5 Flash Images 
(Nano Banana 🍌)
Imagen

🌎 世界知識和推論能力,提供更多與情境相關的圖片
  

💬 透過對話編輯圖片,同時保留情境脈絡
  

📖 在長篇文字序列中嵌入準確的視覺元素

📐 指定生成圖片的顯示比例或格式

 

🖌️支援以遮罩為基礎的編輯功能,可進行修復和外擴。

 

🎚️ 更能掌握生成圖像的細節 (品質、藝術細節和特定風格)

讓我們看看如何在應用程式中使用這些功能。

使用 Imagen 修復圖片

幾個月前,我們推出了 Imagen 的新編輯功能。雖然 Imagen 現在已可生成圖片,但編輯功能仍處於開發人員搶先體驗階段。

Imagen 編輯功能包括修復擴圖,以及以遮罩為基礎的圖片編輯功能。這項新功能可讓使用者修改圖片的特定區域,不必重新生成整張圖片。也就是說,你可以保留圖片的最佳部分,只變更想變更的部分。

Imagen inpainting dog.png

使用 Imagen 編輯功能,精確調整圖片特定部分,並確保圖片其他部分完整無缺

這些變更會保留原始圖片的核心元素和整體完整性,只修改遮罩中的區域。

如要使用 Imagen 實作修復功能,請先初始化 imagen-3.0-capability-001,也就是支援編輯功能的特定 Imagen 模型:

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0
val editingModel =
        Firebase.ai(backend = GenerativeBackend.vertexAI()).imagenModel(
            "imagen-3.0-capability-001",
            generationConfig = ImagenGenerationConfig(
                numberOfImages = 1,
                aspectRatio = ImagenAspectRatio.SQUARE_1x1,
                imageFormat = ImagenImageFormat.jpeg(compressionQuality = 75),
            ),
        )

接著定義修復函式:

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0

val prompt = "remove the pancakes and make it an omelet instead"

suspend fun inpaintImageWithMask(sourceImage: Bitmap, maskImage: Bitmap, prompt: String, editSteps: Int = 50): Bitmap {
        val imageResponse = editingModel.editImage(
            referenceImages = listOf(
                ImagenRawImage(sourceImage.toImagenInlineImage()),
                ImagenRawMask(maskImage.toImagenInlineImage()),
            ),
            prompt = prompt,
            config = ImagenEditingConfig(
                editMode = ImagenEditMode.INPAINT_INSERTION,
                editSteps = editSteps,
            ),
        )
        return imageResponse.images.first().asBitmap()
    }

您需要提供 sourceImage、maskImage、編輯提示,以及要執行的編輯步驟數量。

您可以在 Android AI 範例目錄的「Imagen Editing Sample」中查看實際運作情形!

Imagen 也支援外繪,可讓模型在遮罩外生成像素。您也可以使用 Imagen 的圖片自訂功能,變更圖片的風格或更新圖片中的主題。詳情請參閱 Android 開發人員說明文件

使用 Gemini 2.5 Flash Image 進行對話式圖像生成

如要使用 Gemini 2.5 Flash Image 編輯圖片,其中一種方法是運用模型的多輪對話功能。

首先,初始化模型:

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0

val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
    modelName = "gemini-2.5-flash-image",
    // Configure the model to respond with text and images (required)
    generationConfig = generationConfig {
        responseModalities = listOf(ResponseModality.TEXT,
        ResponseModality.IMAGE)
    }
)

如要達到與上述以遮罩為基礎的 Imagen 方法類似的結果,可以利用 chat API 啟動與 Gemini 2.5 Flash Image 的對話。

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0

// Initialize the chat
val chat = model.startChat()


// Load a bitmap
val source = ImageDecoder.createSource(context.contentResolver, uri)
val bitmap = ImageDecoder.decodeBitmap(source)


// Create the initial prompt instructing the model to edit the image
val prompt = content {
    image(bitmap)
    text("remove the pancakes and add an omelet")
}

// To generate an initial response, send a user message with the image and text prompt
var response = chat.sendMessage(prompt)

// Inspect the returned image
var generatedImageAsBitmap = response
    .candidates.first().content.parts.filterIsInstance<ImagePart>().firstOrNull()?.image

// Follow up requests do not need to specify the image again
response = chat.sendMessage("Now, center the omelet in the pan")
generatedImageAsBitmap = response
    .candidates.first().content.parts.filterIsInstance<ImagePart>().firstOrNull()?.image

您可以在 Android AI 範例目錄的 Gemini 圖像即時通訊範例中查看實際運作情形,並在 Android 說明文件中進一步瞭解。

結語

Imagen 和 Gemini 2.5 Flash Image 都提供強大的功能,您可以根據特定用途選取理想的圖像生成模型,打造個人化應用程式並提升使用者參與度。

撰寫者:

繼續閱讀