Vertex AI in Firebase SDK 可讓您存取 Imagen 3 模型 (透過 Imagen API),以便根據文字提示產生圖像。這項功能可讓您執行以下操作:
- 根據自然語言寫成的提示生成圖片
- 以多種格式和風格產生圖片
- 在圖片中顯示文字
請注意,Vertex AI in Firebase 目前尚不支援 Imagen 型號提供的所有功能。如要進一步瞭解,請參閱本頁稍後的「支援的功能和功能」一節。
事前準備
如果您尚未完成入門指南,請先完成這項操作。這包括設定 Firebase 專案、將應用程式連結至 Firebase、新增 SDK 以及初始化 Vertex AI 服務。您必須先完成這些必要工作,才能使用 Vertex AI in Firebase SDK 向 Imagen 模型傳送提示要求。
請注意,如要使用 Imagen 模型產生圖片,請遵循下列步驟:
請務必至少使用下列 Firebase 程式庫版本:
iOS+:v11.9.1 以上版本 | Android:v16.2.0 以上版本 (BoM:v33.10.0 以上版本) | Web:v11.4.1 以上版本 | Flutter:v1.4.0 以上版本 (BoM:v3.8.0 以上版本)初始化
ImagenModel
(不是GenerativeModel
)在對
generateImages()
發出的呼叫中傳送提示 (不對generateContent()
或generateContentStream()
發送)
本頁的範例會顯示 ImagenModel
的初始化作業和 generateImages()
的使用方式。
支援這項功能的型號
Imagen 3 模型支援圖片產生功能。我們即將支援使用 Gemini 2.0 模型產生圖片。
從純文字輸入內容生成圖片
您可以使用文字提示,要求 Imagen 模型產生圖像。您可以產生一張圖片或多張圖片。
根據純文字輸入內容生成一張圖片
請先完成本指南的「事前準備」一節,再嘗試使用這個範例。
您可以要求 Imagen 模型透過文字提示生成單一圖像。
Kotlin
// Using Imagen with Vertex AI in Firebase is in public preview
// It requires opt-in to use the API
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
// Initialize the Vertex AI service and Imagen model
// Specify an Imagen 3 model that supports your use case
val imagenModel = Firebase.vertexAI.imagenModel("imagen-3.0-generate-002")
// Provide an image generation prompt
val prompt = "An astronaut riding a horse"
// To generate an image, call `generateImages` with the text prompt
val imageResponse = imagenModel.generateImages(prompt)
// Handle the generated image
val image = imageResponse.images.first()
val bitmapImage = image.asBitmap()
}
Java
// Initialize the Vertex AI service and Imagen model
// Specify an Imagen 3 model that supports your use case
ImagenModel imagenModel = FirebaseVertexAI.getInstance().imagenModel(
/* modelName */ "imagen-3.0-generate-002");
ImagenModelFutures model = ImagenModelFutures.from(imagenModel);
// Provide an image generation prompt
String prompt = "An astronaut riding a horse";
// To generate an image, call `generateImages` with the text prompt
Futures.addCallback(model.generateImages(prompt), new FutureCallback<ImagenGenerationResponse<ImagenInlineImage>>() {
@Override
public void onSuccess(ImagenGenerationResponse<ImagenInlineImage> result) {
if (result.getImages().isEmpty()) {
Log.d("TAG", "No images generated");
}
Bitmap bitmap = result.getImages().get(0).asBitmap();
// Use the bitmap to display the image in your UI
}
@Override
public void onFailure(Throwable t) {
// ...
}
}, Executors.newSingleThreadExecutor());
根據純文字輸入內容生成多張圖片
請先完成本指南的「事前準備」一節,再嘗試使用這個範例。
根據預設,Imagen 3 模型每個要求只會產生一張圖片。不過,您可以要求 Imagen 模型在模型初始化期間提供 generationConfig
,讓每個要求產生多張圖片。
Kotlin
// Using Imagen with Vertex AI in Firebase is in public preview
// It requires opt-in to use the API
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
// Initialize the Vertex AI service and Imagen model
// Specify an Imagen 3 model that supports your use case
val imagenModel = Firebase.vertexAI.imagenModel(
modelName = "imagen-3.0-generate-002",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/vertex-ai/model-parameters
generationConfig = ImagenGenerationConfig(numberOfImages = 4)
)
// Provide an image generation prompt
val prompt = "An astronaut riding a horse"
// To generate images, call `generateImages` with the text prompt
val imageResponse = imagenModel.generateImages(prompt)
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (imageResponse.filteredReason != null) {
Log.d(TAG, "FilteredReason: ${imageResponse.filteredReason}")
}
for (image in imageResponse.images) {
val bitmap = image.asBitmap()
// Use the bitmap to display the image in your UI
}
}
Java
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/vertex-ai/model-parameters
ImagenGenerationConfig imagenGenerationConfig = new ImagenGenerationConfig.Builder()
.setNumberOfImages(4)
.build();
// Initialize the Vertex AI service and Imagen model
// Specify an Imagen 3 model that supports your use case
ImagenModel imagenModel = FirebaseVertexAI.getInstance().imagenModel(
/* modelName */ "imagen-3.0-generate-002",
/* imageGenerationConfig */ imagenGenerationConfig);
ImagenModelFutures model = ImagenModelFutures.from(imagenModel);
// Provide an image generation prompt
String prompt = "An astronaut riding a horse";
// To generate images, call `generateImages` with the text prompt
Futures.addCallback(model.generateImages(prompt), new FutureCallback<ImagenGenerationResponse<ImagenInlineImage>>() {
@Override
public void onSuccess(ImagenGenerationResponse<ImagenInlineImage> result) {
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (result.getFilteredReason() != null){
Log.d("TAG", "FilteredReason: " + result.getFilteredReason());
}
// Handle the generated images
List<ImagenInlineImage> images = result.getImages();
for (ImagenInlineImage image : images) {
Bitmap bitmap = image.asBitmap();
// Use the bitmap to display the image in your UI
}
}
@Override
public void onFailure(Throwable t) {
// ...
}
}, Executors.newSingleThreadExecutor());
支援的功能和相關規定
Imagen 3 模型提供許多與圖像產生相關的功能。本節說明搭配 Vertex AI in Firebase 使用模型時支援的功能。
支援的功能
Vertex AI in Firebase 支援 Imagen 3 型號的這些功能。
產生人物和臉孔 (前提是您的 Firebase 專案已獲得 Google Cloud 的核准)
在產生的圖片中產生文字
為產生的圖片加上浮水印
設定圖片產生參數,例如產生的圖片數量、顯示比例和浮水印
調整安全性設定
Vertex AI in Firebase不支援 Imagen 3 型號的這些進階功能。
請注意,即使在伺服器端使用 Imagen 模型,這些功能大多都需要已核准的使用者名單。
圖片編輯或處理功能,包括放大圖片
在傳送至模型的要求中加入圖片 (例如少量樣本學習)
使用 SDK 驗證數位浮水印
如要驗證圖片是否含有浮水印,您可以使用 Media 分頁將圖片上傳至 Vertex AI Studio。使用文字產生「動態圖片」 (MP4 產生)
使用預先定義的風格生成圖片
啟用
includeSafetyAttributes
,表示無法傳回safetyAttributes.categories
和safetyAttributes.scores
停用提示強化功能 (
enhancePrompt
參數),這表示以 LLM 為基礎的提示重寫工具一律會自動為提供的提示新增更多詳細資料,以便提供更高品質的圖片,更貼近提供的提示將產生的圖片直接寫入 Google Cloud Storage,做為模型回應的一部分 (
storageUri
參數)。相反地,圖片一律會以 base64 編碼的圖片位元組形式傳回。
如要將產生的圖片上傳至 Cloud Storage,您可以使用 Cloud Storage for Firebase。
規格和限制
限制 (每項要求) | Imagen 3 | Imagen 3 Fast |
---|---|---|
輸入符記數量上限 | 480 個符記 | 480 個符記 |
輸出圖片數量上限 | 4 張圖片 | 4 張圖片 |
支援的輸出圖片解析度 (像素) |
|
|
其他功能
- 開始著手準備正式版,包括設定 Firebase App Check,保護應用程式中使用的 API 免遭未經授權的用戶端濫用。此外,請務必詳閱製作檢查清單。
瞭解如何控管內容產生
- 瞭解提示設計,包括最佳做法、策略和提示範例。
- 設定 Imagen 模型參數,例如顯示比例、人物生成和浮水印。
- 使用安全性設定,調整可能會收到有害回應的機率。
進一步瞭解支援的型號
瞭解可用於各種用途的模型,以及相關配額和價格。針對 Vertex AI in Firebase 的使用體驗提供意見回饋