Vertex AI in Firebase SDK'ları, metin isteminden resim oluşturabilmeniz için Imagen 3 modellerine (Imagen API aracılığıyla) erişim sağlar. Bu özellik sayesinde şunları yapabilirsiniz:
- Doğal dilde yazılmış istemlerden resim oluşturma
- Çeşitli biçim ve stillerde resimler oluşturun
- Resimlerdeki metni oluşturma
Vertex AI in Firebase'ün henüz Imagen modellerinde kullanılabilen tüm özellikleri desteklemediğini unutmayın. Bu sayfanın ilerleyen kısmındaki Desteklenen özellikler ve özellikler bölümünden daha fazla bilgi edinebilirsiniz.
Yalnızca metin girişi için koda atlama
Başlamadan önce
Henüz yapmadıysanız Firebase projenizi oluşturma, uygulamanızı Firebase'e bağlama, SDK'yı ekleme, Vertex AI hizmetini başlatma ve ImagenModel
örneği oluşturma hakkında bilgi veren başlangıç kılavuzunu tamamlayın.
En az şu Firebase kitaplığı sürümlerini kullandığınızdan emin olun:
iOS+: v11.9.0+ |
Android: v16.2.0+ (BoM: v33.10.0+) |
Web: v11.4.1+ |
Flutter: v1.4.0+ (BoM: v3.8.0+)
Bu özelliği destekleyen modeller
Resim oluşturma, Imagen 3 modelleri tarafından desteklenir. Gemini 2.0 modelleri tarafından resim oluşturma desteği yakında kullanıma sunulacaktır.
Yalnızca metin girişinden resim oluşturma
Imagen modelinden metin istemi vererek resim oluşturmasını isteyebilirsiniz. Tek bir resim veya birden fazla resim oluşturabilirsiniz.
Yalnızca metin içeren girişten bir resim oluşturma
Bu örneği denemeden önce bu kılavuzun Başlamadan önce bölümünü tamamladığınızdan emin olun.
Metin istemi göndererek bir Imagen modelinden tek bir resim oluşturmasını isteyebilirsiniz.
ImagenModel
örneği oluşturduğunuzdan ve generateImages
işlevini çağırdığınızdan emin olun.
Swift
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.');
}
Kullanım alanınıza ve uygulamanıza uygun bir modeli ve isteğe bağlı olarak bir konum nasıl seçeceğinizi öğrenin.
Yalnızca metin girişinden birden fazla resim oluşturma
Bu örneği denemeden önce bu kılavuzun Başlamadan önce bölümünü tamamladığınızdan emin olun.
Varsayılan olarak Imagen 3 modelleri istek başına yalnızca bir resim oluşturur.
Ancak ImagenModel
örneğini oluştururken ImagenGenerationConfig
sağlayarak Imagen modelinden istek başına birden fazla resim oluşturmasını isteyebilirsiniz.
ImagenModel
örneği oluşturduğunuzdan ve generateImages
işlevini çağırdığınızdan emin olun.
Swift
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.');
}
Kullanım alanınıza ve uygulamanıza uygun bir modeli ve isteğe bağlı olarak bir konum nasıl seçeceğinizi öğrenin.
Desteklenen özellikler ve gereksinimler
Imagen 3 modelleri, resim oluşturmayla ilgili birçok özellik sunar. Bu bölümde, Vertex AI in Firebase ile modelleri kullanırken desteklenenler açıklanmaktadır.
Desteklenen özellikler ve özellikler
Vertex AI in Firebase, Imagen 3 modellerinin bu özelliklerini destekler.
Kişi ve yüz oluşturma (Firebase projenizin Google Cloud'den onay almış olması gerekir)
Oluşturulan resimlerde metin oluşturma
Oluşturulan resimlere filigran ekleme
Oluşturulan resim sayısı, en boy oranı ve filigran gibi resim oluşturma parametrelerini yapılandırma
Güvenlik ayarlarını yapılandırma
Vertex AI in Firebase, Imagen 3 modellerinin bu ileri seviye özelliklerini desteklemez.
Bu özelliklerin çoğunun, Imagen modellerini sunucu tarafında kullanırken bile onaylanmış bir kullanıcı listesinde yer almayı gerektirdiğini unutmayın.
Resimlerin ölçeklendirilmesini içeren resim düzenleme veya değiştirme özellikleri
Modele gönderilen isteğe resim ekleme (ör. az sayıda örnekle öğrenme için)
SDK'ları kullanarak dijital filigranları doğrulama
Bir görüntünün filigran içerdiğini doğrulamak istiyorsanız görüntüyü Medya sekmesini kullanarak Vertex AI Studio'ya yükleyebilirsiniz.Metinden "canlı görüntüler" oluşturma (MP4 oluşturma)
Önceden tanımlanmış bir stili kullanarak resim oluşturma
includeSafetyAttributes
etkinleştirildiğindesafetyAttributes.categories
vesafetyAttributes.scores
iade edilemez.İstem geliştirme'yi (
enhancePrompt
parametresi) devre dışı bırakmak. Bu durumda, LLM tabanlı bir istem yeniden yazma aracı, sağlanan istemi daha iyi yansıtan daha yüksek kaliteli resimler sunmak için her zaman sağlanan istemin üzerine otomatik olarak daha fazla ayrıntı ekler.Oluşturulan resmi, modelden gelen yanıtın (
storageUri
parametresi) bir parçası olarak doğrudan Google Cloud Storage içine yazma. Bunun yerine, resimler yanıtta her zaman base64 kodlu resim baytları olarak döndürülür.
Oluşturulan bir resmi Cloud Storage'a yüklemek istiyorsanız Cloud Storage for Firebase'ı kullanabilirsiniz.
Özellikler ve sınırlamalar
Sınırlar (istek başına) | Imagen 3 | Imagen 3 Fast |
---|---|---|
Maksimum giriş jetonu sayısı | 480 jeton | 480 jeton |
Maksimum çıkış resmi sayısı | 4 resim | 4 resim |
Desteklenen çıkış resim çözünürlükleri (piksel) |
|
|
Başka neler yapabilirsiniz?
- Uygulamanızda kullandığınız API'leri yetkisiz istemciler tarafından kötüye kullanıma karşı korumak için Firebase App Check ayarlarını yapmak da dahil olmak üzere üretime hazırlanmaya başlayın. Ayrıca üretim kontrol listesini de inceleyin.
İçerik oluşturmayı nasıl kontrol edeceğinizi öğrenin
- En iyi uygulamalar, stratejiler ve örnek istemler dahil olmak üzere istem tasarımını anlama
- En boy oranı, kişi oluşturma ve filigran gibi Imagen model parametrelerini yapılandırın.
- Zararlı olarak değerlendirilebilecek yanıtlar alma olasılığını ayarlamak için güvenlik ayarlarını kullanın.
Desteklenen modeller hakkında daha fazla bilgi
Çeşitli kullanım alanları için kullanılabilen modeller, kotaları ve fiyatlandırmaları hakkında bilgi edinin.Vertex AI in Firebase ile ilgili deneyiminiz hakkında geri bildirim verme