Imagen'i kullanarak resim oluşturma


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 bölümlerinde yer alan 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 başlangıç kılavuzunu tamamlayın. Firebase projenizi oluşturma, uygulamanızı Firebase'e bağlama, SDK'yı ekleme ve Vertex AI hizmetini başlatma bu kapsamdadır. Vertex AI in Firebase SDK'larını kullanarak bir Imagen modeline istem isteği gönderebilmek için tüm bu görevleri tamamlamanız gerekir.

Imagen modellerini kullanarak resim oluşturmak için:

  • En az şu Firebase kitaplığı sürümlerini kullandığınızdan emin olun:
    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 değil) başlatma

  • İsteminizi generateImages() ile yaptığınız bir aramada gönderin (generateContent() veya generateContentStream() ile yaptığınız aramalarda değil)

ImagenModel'ün bu şekilde başlatılması ve generateImages()'un kullanımı bu sayfadaki örneklerde gösterilmektedir.

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 Imagen modelinden tek bir resim oluşturmasını isteyebilirsiniz.

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());

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 içeren girişlerden 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 model başlatma sırasında bir generationConfig sağlayarak Imagen modelinden istek başına birden fazla resim oluşturmasını isteyebilirsiniz.

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());

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 koşullar

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.

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.

  • Resim düzenleme veya değiştirme özellikleri (resimleri büyütme dahil)

  • 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ı resimler" oluşturma (MP4 oluşturma)

  • Önceden tanımlanmış bir stili kullanarak resim oluşturma

  • Giriş metninin dilini ayarlama

  • includeSafetyAttributes etkinleştirildiğinde safetyAttributes.categories ve safetyAttributes.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)
  • 1024x1024 piksel (1:1 en boy oranı)
  • 896x1280 (3:4 en boy oranı)
  • 1.280x896 (4:3 en boy oranı)
  • 768x1408 (9:16 en boy oranı)
  • 1.408x768 (16:9 en boy oranı)
  • 1024x1024 piksel (1:1 en boy oranı)
  • 896x1280 (3:4 en boy oranı)
  • 1.280x896 (4:3 en boy oranı)
  • 768x1408 (9:16 en boy oranı)
  • 1.408x768 (16:9 en boy oranı)

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

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