Vertex AI در Firebase SDK به شما امکان می دهد به مدل های Imagen 3 (از طریق Imagen API ) دسترسی داشته باشید تا بتوانید تصاویر را از یک درخواست متنی تولید کنید. با این قابلیت می توانید کارهایی مانند:
- ایجاد تصاویر از دستورات نوشته شده به زبان طبیعی
- تصاویر را در طیف گسترده ای از فرمت ها و سبک ها ایجاد کنید
- رندر متن در تصاویر
توجه داشته باشید که Vertex AI در Firebase هنوز از همه ویژگیهای موجود برای مدلهای Imagen پشتیبانی نمیکند. در ادامه این صفحه در مورد قابلیت ها و ویژگی های پشتیبانی شده بیشتر بیاموزید.
قبل از شروع
اگر قبلاً این کار را نکردهاید، راهنمای شروع را تکمیل کنید، که نحوه راهاندازی پروژه Firebase را توضیح میدهد، برنامه خود را به Firebase متصل کنید، SDK را اضافه کنید، سرویس Vertex AI را راهاندازی کنید، و یک نمونه ImagenModel
ایجاد کنید.
مطمئن شوید که حداقل از این نسخه های کتابخانه Firebase استفاده می کنید:
iOS+ : نسخه 11.9.0+ | اندروید : نسخه 16.2.0+ ( BoM : v33.10.0+) | وب سایت : v11.4.1+ | فلوتر : نسخه 1.4.0+ (BoM: نسخه 3.8.0+)
مدل هایی که از این قابلیت پشتیبانی می کنند
تولید تصویر توسط مدل های Imagen 3 پشتیبانی می شود. پشتیبانی از تولید تصویر توسط مدل های Gemini 2.0 به زودی ارائه می شود.
تصاویر را از ورودی فقط متنی تولید کنید
میتوانید از یک مدل Imagen بخواهید که با ارسال متن، تصاویر تولید کند. شما می توانید یک تصویر یا چندین تصویر ایجاد کنید.
یک تصویر از ورودی فقط متنی ایجاد کنید
قبل از امتحان کردن این نمونه، مطمئن شوید که بخش قبل از شروع این راهنما را تکمیل کرده اید.
میتوانید از یک مدل Imagen بخواهید که یک تصویر را با درخواست متن ایجاد کند.
مطمئن شوید که یک نمونه ImagenModel
ایجاد کرده اید و generateImages
را فراخوانی کنید.
سویفت
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
let model = vertex.imagenModel(modelName: "imagen-3.0-generate-002")
// Provide an image generation prompt
let prompt = "An astronaut riding a horse"
// To generate an image, call `generateImages` with the text prompt
let response = try await model.generateImages(prompt: prompt)
// Handle the generated image
guard let image = response.images.first else {
fatalError("No image in the response.")
}
let uiImage = UIImage(data: image.data)
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 create an `ImagenModel` instance
// 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 create an `ImagenModel` instance
// 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());
Web
import { initializeApp } from "firebase/app";
import { getVertexAI, getImagenModel } from "firebase/vertexai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Vertex AI service
const vertexAI = getVertexAI(firebaseApp);
// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
const imagenModel = getImagenModel(
vertexAI,
{
model: "imagen-3.0-generate-002"
}
);
// Provide an image generation prompt
const prompt = "An astronaut riding a horse.";
// To generate an image, call `generateImages` with the text prompt
const response = await imagenModel.generateImages(prompt)
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (response.filteredReason) {
console.log(response.filteredReason);
}
if (response.images.length == 0) {
throw new Error("No images in the response.")
}
const image = response.images[0];
Dart
import 'package:firebase_vertexai/firebase_vertexai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Vertex AI service and create an `ImagenModel` instance
// Specify an Imagen 3 model that supports your use case
final model =
FirebaseVertexAI.instance.imagenModel(model: 'imagen-3.0-generate-002');
// Provide an image generation prompt
const prompt = 'An astronaut riding a horse.';
// To generate an image, call `generateImages` with the text prompt
final response = await model.generateImages(prompt);
if (response.images.isNotEmpty) {
final image = response.images[0];
// Process the image
} else {
// Handle the case where no images were generated
print('Error: No images were generated.');
}
نحوه انتخاب یک مدل و به صورت اختیاری مکان مناسب برای مورد استفاده و برنامه خود را بیاموزید.
چندین تصویر را از ورودی متنی ایجاد کنید
قبل از امتحان کردن این نمونه، مطمئن شوید که بخش قبل از شروع این راهنما را تکمیل کرده اید.
بهطور پیشفرض، مدلهای Imagen 3 در هر درخواست تنها یک تصویر تولید میکنند. با این حال، می توانید از یک مدل Imagen بخواهید که در هر درخواست با ارائه یک ImagenGenerationConfig
هنگام ایجاد نمونه ImagenModel
، چندین تصویر ایجاد کند.
مطمئن شوید که یک نمونه ImagenModel
ایجاد کرده اید و generateImages
را فراخوانی کنید.
سویفت
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
let model = vertex.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
let prompt = "An astronaut riding a horse"
// To generate images, call `generateImages` with the text prompt
let response = try await model.generateImages(prompt: prompt)
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if let filteredReason = response.filteredReason {
print(filteredReason)
}
// Handle the generated images
let uiImages = response.images.compactMap { UIImage(data: $0.data) }
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 create an `ImagenModel` instance
// 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 create an `ImagenModel` instance
// 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());
Web
import { initializeApp } from "firebase/app";
import { getVertexAI, getImagenModel } from "firebase/vertexai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Vertex AI service
const vertexAI = getVertexAI(firebaseApp);
// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
const imagenModel = getImagenModel(
vertexAI,
{
model: "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: {
numberOfImages: 4
}
}
);
// Provide an image generation prompt
const prompt = "An astronaut riding a horse.";
// To generate images, call `generateImages` with the text prompt
const response = await imagenModel.generateImages(prompt)
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (response.filteredReason) {
console.log(response.filteredReason);
}
if (response.images.length == 0) {
throw new Error("No images in the response.")
}
const images = response.images[0];
Dart
import 'package:firebase_vertexai/firebase_vertexai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Vertex AI service and create an `ImagenModel` instance
// Specify an Imagen 3 model that supports your use case
final model = FirebaseVertexAI.instance.imagenModel(
model: '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
const prompt = 'An astronaut riding a horse.';
// To generate images, call `generateImages` with the text prompt
final response = await model.generateImages(prompt);
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (response.filteredReason != null) {
print(response.filteredReason);
}
if (response.images.isNotEmpty) {
final images = response.images;
for(var image in images) {
// Process the image
}
} else {
// Handle the case where no images were generated
print('Error: No images were generated.');
}
نحوه انتخاب یک مدل و به صورت اختیاری مکان مناسب برای مورد استفاده و برنامه خود را بیاموزید.
ویژگی ها و الزامات پشتیبانی شده
مدل های ایمیجن 3 ویژگی های زیادی در رابطه با تولید تصویر ارائه می دهند. این بخش مواردی را که هنگام استفاده از مدلهای دارای هوش مصنوعی Vertex در Firebase پشتیبانی میشوند، توضیح میدهد.
قابلیت ها و ویژگی های پشتیبانی شده
Vertex AI در Firebase از این ویژگی های مدل های Imagen 3 پشتیبانی می کند.
ایجاد افراد و چهرهها (با توجه به اینکه پروژه Firebase شما تأییدیه Google Cloud را دارد)
تولید متن در تصاویر تولید شده
اضافه کردن واترمارک به تصاویر تولید شده
پیکربندی پارامترهای تولید تصویر ، مانند تعداد تصاویر تولید شده، نسبت ابعاد و واترمارک
پیکربندی تنظیمات ایمنی
Vertex AI در Firebase از این ویژگی های پیشرفته مدل های Imagen 3 پشتیبانی نمی کند.
توجه داشته باشید که بسیاری از این ویژگیها نیاز به قرار گرفتن در لیست تایید شده از کاربران حتی هنگام استفاده از مدلهای Imagen سمت سرور دارند.
ویژگی های ویرایش یا دستکاری تصویر، که شامل ارتقاء مقیاس تصاویر می شود
شامل تصاویر در درخواست مدل (مانند آموزش چند شات)
تأیید واترمارک دیجیتال با استفاده از SDK
اگر میخواهید تأیید کنید که یک تصویر دارای واترمارک است، میتوانید تصویر را با استفاده از تب Media آن در Vertex AI Studio آپلود کنید.تولید "تصاویر زنده" از متن (تولید MP4)
تولید تصاویر با استفاده از یک سبک از پیش تعریف شده
فعال کردن
includeSafetyAttributes
، به این معنی کهsafetyAttributes.categories
وsafetyAttributes.scores
قابل بازگشت نیستند.غیرفعال کردن بهبود سریع (پارامتر
enhancePrompt
)، به این معنی که یک ابزار بازنویسی اعلان مبتنی بر LLM همیشه به طور خودکار جزئیات بیشتری را به درخواست ارائه شده اضافه می کند تا تصاویر با کیفیت بالاتری را ارائه دهد که اعلان ارائه شده را بهتر منعکس کند.نوشتن یک تصویر تولید شده مستقیماً در Google Cloud Storage به عنوان بخشی از پاسخ مدل (پارامتر
storageUri
). در عوض، تصاویر همیشه به عنوان بایت های تصویر کدگذاری شده با پایه 64 در پاسخ بازگردانده می شوند.
اگر میخواهید یک تصویر تولید شده را در Cloud Storage آپلود کنید، میتوانید از Cloud Storage for Firebase استفاده کنید.
مشخصات و محدودیت ها
محدودیت ها (در هر درخواست) | تصویر 3 | Imagen 3 سریع |
---|---|---|
حداکثر تعداد نشانه های ورودی | 480 توکن | 480 توکن |
حداکثر تعداد تصاویر خروجی | 4 تصویر | 4 تصویر |
وضوح تصویر خروجی پشتیبانی شده (پیکسل) |
|
|
چه کار دیگری می توانید انجام دهید؟
- به فکر آماده شدن برای تولید باشید، از جمله راهاندازی Firebase App Check برای محافظت از APIهایی که در برنامه خود استفاده میکنید در برابر سوءاستفاده توسط مشتریان غیرمجاز. همچنین، حتماً چک لیست تولید را مرور کنید.
یاد بگیرید چگونه تولید محتوا را کنترل کنید
- طراحی سریع، از جمله بهترین شیوهها، استراتژیها و درخواستهای نمونه را درک کنید .
- پارامترهای مدل Imagen مانند نسبت ابعاد، تولید شخص و واترمارک را پیکربندی کنید .
- از تنظیمات ایمنی برای تنظیم احتمال دریافت پاسخ هایی که ممکن است مضر تلقی شوند استفاده کنید .
درباره مدل های پشتیبانی شده بیشتر بدانید
در مورد مدل های موجود برای موارد استفاده مختلف و سهمیه ها و قیمت آنها اطلاعات کسب کنید.درباره تجربه خود با Vertex AI در Firebase بازخورد بدهید