Bu sayfada, Firebase AI Logic SDK'larını kullanarak Imagen'deki özelleştirme özelliğini kullanarak belirtilen bir kontrole göre resimleri düzenleme veya oluşturma hakkında bilgi verilmektedir.
Nasıl çalışır? Bir metin istemi ve en az bir kontrol referans resmi (ör. çizim veya Canny kenar resmi) sağlarsınız. Model, kontrol resimlerine dayalı yeni bir resim oluşturmak için bu girişleri kullanır.
Örneğin, modele bir roket ve ay çizimiyle birlikte bu çizime dayalı bir sulu boya resim oluşturması için metin istemi sağlayabilirsiniz.
Kontrol referans resim türleri
Kontrollü özelleştirme için referans resim olarak karalama, Canny Edge görüntüsü veya yüz ağı kullanılabilir.
Başlamadan önce
Yalnızca Vertex AI Gemini API API sağlayıcısı olarak kullanılırken kullanılabilir. |
Henüz yapmadıysanız başlangıç kılavuzunu tamamlayın. Bu kılavuzda Firebase projenizi ayarlama, uygulamanızı Firebase'e bağlama, SDK'yı ekleme, seçtiğiniz API sağlayıcısı için arka uç hizmetini başlatma ve ImagenModel
örneği oluşturma hakkında bilgiler yer alır.
Bu özelliği destekleyen modeller
Imagen, capability
modeli aracılığıyla görüntü düzenleme hizmeti sunar:
imagen-3.0-capability-001
Imagen modellerinde global
konumunun desteklenmediğini unutmayın.
Kontrollü özelleştirme isteği gönderme
Aşağıdaki örnekte, modele sağlanan referans resme (bu örnekte, uzayın çizimi, örneğin roket ve ay) dayalı yeni bir resim oluşturmasını isteyen kontrollü bir özelleştirme isteği gösterilmektedir. Referans resim kabaca elle çizilmiş bir taslak veya ana hat olduğundan CONTROL_TYPE_SCRIBBLE
kontrol türü kullanılır.
Referans resminiz bir Canny kenar resmi veya yüz ağı ise bu örneği aşağıdaki değişikliklerle de kullanabilirsiniz:
Referans resminiz Canny kenar görüntüsü ise
CONTROL_TYPE_CANNY
kontrol türünü kullanın.Referans resminiz bir yüz ağı ise
CONTROL_TYPE_FACE_MESH
kontrol türünü kullanın. Bu kontrol yalnızca kişilerin özne olarak özelleştirilmesi ile kullanılabilir.
İstem yazma ve istemlerde referans resim kullanma hakkında bilgi edinmek için bu sayfanın ilerleyen bölümlerinde istem şablonlarını inceleyin.
Swift
Imagen modelleriyle görüntü düzenleme, Swift'te desteklenmez. Bu yılın ilerleyen zamanlarında tekrar kontrol edin.
Kotlin
// Using this SDK to access Imagen models is a Preview release and requires opt-in
@OptIn(PublicPreviewAPI::class)
suspend fun customizeImage() {
// Initialize the Vertex AI Gemini API backend service
// Optionally specify the location to access the model (for example, `us-central1`)
val ai = Firebase.ai(backend = GenerativeBackend.vertexAI(location = "us-central1"))
// Create an `ImagenModel` instance with an Imagen "capability" model
val model = ai.imagenModel("imagen-3.0-capability-001")
// This example assumes 'referenceImage' is a pre-loaded Bitmap.
// In a real app, this might come from the user's device or a URL.
val referenceImage: Bitmap = TODO("Load your reference image Bitmap here")
// Define the subject reference using the reference image.
val controlReference = ImagenControlReference(
image = referenceImage,
referenceID = 1,
controlType = CONTROL_TYPE_SCRIBBLE
)
// Provide a prompt that describes the final image.
// The "[1]" links the prompt to the subject reference with ID 1.
val prompt = "A cat flying through outer space arranged like the space scribble[1]"
// Use the editImage API to perform the controlled customization.
// Pass the list of references, the prompt, and an editing configuration.
val editedImage = model.editImage(
references = listOf(controlReference),
prompt = prompt,
config = ImagenEditingConfig(
editSteps = 50 // Number of editing steps, a higher value can improve quality
)
)
// Process the result
}
Java
// Initialize the Vertex AI Gemini API backend service
// Optionally specify the location to access the model (for example, `us-central1`)
// Create an `ImagenModel` instance with an Imagen "capability" model
ImagenModel imagenModel = FirebaseAI.getInstance(GenerativeBackend.vertexAI("us-central1"))
.imagenModel(
/* modelName */ "imagen-3.0-capability-001");
ImagenModelFutures model = ImagenModelFutures.from(imagenModel);
// This example assumes 'referenceImage' is a pre-loaded Bitmap.
// In a real app, this might come from the user's device or a URL.
Bitmap referenceImage = null; // TODO("Load your image Bitmap here");
// Define the subject reference using the reference image.
ImagenControlReference controlReference = new ImagenControlReference.Builder()
.setImage(referenceImage)
.setReferenceID(1)
.setControlType(CONTROL_TYPE_SCRIBBLE)
.build();
// Provide a prompt that describes the final image.
// The "[1]" links the prompt to the subject reference with ID 1.
String prompt = "A cat flying through outer space arranged like the space scribble[1]";
// Define the editing configuration.
ImagenEditingConfig imagenEditingConfig = new ImagenEditingConfig.Builder()
.setEditSteps(50) // Number of editing steps, a higher value can improve quality
.build();
// Use the editImage API to perform the controlled customization.
// Pass the list of references, the prompt, and an editing configuration.
Futures.addCallback(model.editImage(Collections.singletonList(controlReference), prompt, imagenEditingConfig), new FutureCallback<ImagenGenerationResponse>() {
@Override
public void onSuccess(ImagenGenerationResponse 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
Imagen modelleriyle resim düzenleme, web uygulamalarında desteklenmez. Bu yılın ilerleyen zamanlarında tekrar kontrol edin.
Dart
import 'dart:typed_data';
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Vertex AI Gemini API backend service
// Optionally specify a location to access the model (for example, `us-central1`)
final ai = FirebaseAI.vertexAI(location: 'us-central1');
// Create an `ImagenModel` instance with an Imagen "capability" model
final model = ai.imagenModel(model: 'imagen-3.0-capability-001');
// This example assumes 'referenceImage' is a pre-loaded Uint8List.
// In a real app, this might come from the user's device or a URL.
final Uint8List referenceImage = Uint8List(0); // TODO: Load your reference image data here
// Define the control reference using the reference image.
final controlReference = ImagenControlReference(
image: referenceImage,
referenceId: 1,
controlType: ImagenControlType.scribble,
);
// Provide a prompt that describes the final image.
// The "[1]" links the prompt to the subject reference with ID 1.
final prompt = "A cat flying through outer space arranged like the space scribble[1]";
try {
// Use the editImage API to perform the controlled customization.
// Pass the list of references, the prompt, and an editing configuration.
final response = await model.editImage(
[controlReference],
prompt,
config: ImagenEditingConfig(
editSteps: 50, // Number of editing steps, a higher value can improve quality
),
);
// Process the result.
if (response.images.isNotEmpty) {
final editedImage = response.images.first.bytes;
// Use the editedImage (a Uint8List) to display the image, save it, etc.
print('Image successfully generated!');
} else {
// Handle the case where no images were generated.
print('Error: No images were generated.');
}
} catch (e) {
// Handle any potential errors during the API call.
print('An error occurred: $e');
}
Unity
Imagen modelleriyle resim düzenleme, Unity'de desteklenmez. Bu yılın ilerleyen zamanlarında tekrar kontrol edin.
İstem şablonları
İstekle birlikte, bir resim için referans kimliği belirttiğiniz bir ImagenControlReference
tanımlayarak referans resimler (en fazla 4 resim) sağlarsınız.
Birden fazla resmin aynı referans kimliğine sahip olabileceğini (örneğin, aynı fikrin birden fazla karalaması) unutmayın.
Ardından, istemi yazarken bu kimliklere başvurursunuz. Örneğin, istemde [1]
kullanarak referans kimliği 1
olan resimlere atıfta bulunursunuz.
Aşağıdaki tabloda, bir kontrole göre özelleştirme için istem yazarken başlangıç noktası olarak kullanabileceğiniz istem şablonları verilmiştir.
Kullanım alanı | Referans resimler | İstem şablonu | Örnek |
---|---|---|---|
Kontrollü özelleştirme | Karalama haritası (1) | Açıklamayla eşleşen scribble map [1] bir resim oluşturun: ${STYLE_PROMPT} ${PROMPT}. | Açıklamayla eşleşmesi için scribble map [1] ile uyumlu bir resim oluşturun: Resim, rahat fırça darbeleriyle yapılmış, izlenimci bir yağlı boya tablo tarzında olmalıdır. Doğal ışıkla aydınlatılmış bir ortama ve belirgin fırça darbelerine sahiptir. Bir arabanın yandan görünümü. Araba, ıslak ve yansıtıcı bir yol yüzeyine park edilmiş. Su birikintilerine şehir ışıkları yansıyor. |
Kontrollü özelleştirme | Canny kontrol resmi (1) | Açıklamaya uygun bir edge map [1] resmi oluşturun: ${STYLE_PROMPT} ${PROMPT} | Açıklamaya uygun olarak edge map [1] ile uyumlu bir resim oluştur: Resim, rahat fırça darbeleriyle yapılmış, izlenimci bir yağlı boya tablo tarzında olmalıdır. Doğal ışık alan bir ortama ve belirgin fırça darbelerine sahiptir. Bir arabanın yandan görünümü. Araba, yansıtıcı ve ıslak bir yol yüzeyine park edilmiş. Şehir ışıkları su birikintilerine yansıyor. |
FaceMesh girişiyle kişi resmi stilizasyonu |
Özne resmi (1-3) FaceMesh kontrol resmi (1) |
Açıklamaya uygun olarak SUBJECT_DESCRIPTION [1] hakkında CONTROL_IMAGE [2] pozunda bir resim oluştur: SUBJECT_DESCRIPTION [1] portresi ${PROMPT} | Açıklamaya uygun olarak a woman with short hair [1] ile ilgili bir resim oluştur. Resim, control image [2] pozunda olmalı: a woman with short hair [1]'nın bulanık arka planlı 3D çizgi film tarzında bir portresi. Kameraya bakan, pastel renk tonlarında, gülümseyen yüzlü, sevimli ve güzel bir karakter. ... |
FaceMesh girişiyle kişi resmi stilizasyonu |
Özne resmi (1-3) FaceMesh kontrol resmi (1) |
Açıklamaya uygun olarak SUBJECT_DESCRIPTION [1] hakkında CONTROL_IMAGE [2] pozunda ${STYLE_PROMPT} tarzında bir resim oluştur: SUBJECT_DESCRIPTION [1] portresi ${PROMPT} | Açıklamaya uygun olarak a woman with short hair [1] hakkında control image [2] pozunda 3D çizgi film tarzında bir resim oluştur: a woman with short hair [1] portresi bulanık arka planla 3D çizgi film tarzında. Kameraya bakan, gülümseyen yüzlü, pastel renk tonlarında, sevimli ve güzel bir karakter ... |
En iyi uygulamalar ve sınırlamalar
Kullanım alanları
Özelleştirme özelliği, modelin eğitildiği işlevlerden daha fazlasını yapabileceği izlenimini verebilecek serbest stil istemler sunar. Aşağıdaki bölümlerde, özelleştirme için amaçlanan kullanım alanları ve amaçlanmayan kullanım alanlarına dair kapsamlı olmayan örnekler açıklanmaktadır.
Bu özelliği, modeli bu kullanım alanları üzerinde eğittiğimiz ve bu alanlarda iyi sonuçlar beklediğimiz için amaçlanan kullanım alanlarında kullanmanızı öneririz. Aksine, modeli amaçlanan kullanım alanları dışında bir şeyler yapmaya zorlarsanız kötü sonuçlar almayı beklemelisiniz.
Kullanım alanları
Aşağıda, amaçlanan kullanım alanları verilmiştir. Bu alanlarda, kontrol temelinde özelleştirme yapılabilir:
İsteme ve canny edge kontrol resimlerine uygun bir resim oluşturun.
İsteme ve karalama resimlerine uygun bir resim oluşturun.
Yüz ifadesini koruyarak bir kişinin fotoğrafını stilize etme
İstenmeyen kullanım alanlarına örnekler
Aşağıda, amaçlanmayan kullanım alanlarının, kontrol temelinde özelleştirme ile ilgili olası her örneği içermeyen bir listesi yer almaktadır. Model bu kullanım alanları için eğitilmediğinden muhtemelen kötü sonuçlar üretecektir.
İstemde belirtilen bir stili kullanarak resim oluşturun.
Referans resim tarafından sağlanan belirli bir stile uygun metinden resim oluşturun. Kontrol resmi kullanarak resim kompozisyonu üzerinde belirli bir düzeyde kontrol sağlayın.
Referans resimde sağlanan belirli bir stili takip eden metinlerden resim oluşturun. Kontrol karalaması kullanarak resim kompozisyonu üzerinde belirli bir düzeyde kontrol sağlayın.
Referans resimde sağlanan belirli bir stili takip eden metinden resim oluşturun. Kontrol resmi kullanarak resim kompozisyonu üzerinde belirli bir düzeyde kontrol sağlayın. Resimdeki kişinin yüzünde belirli bir ifade var.
İki veya daha fazla kişinin yer aldığı fotoğrafları stilize edin ve yüz ifadelerini koruyun.
Evcil hayvan fotoğrafını stilize edip çizime dönüştürme Görselin kompozisyonunu koruyun veya belirtin (örneğin, sulu boya).