Membuat gambar menggunakan Imagen


SDK Vertex AI in Firebase memberi Anda akses ke model Imagen 3 (melalui Imagen API) sehingga Anda dapat membuat gambar dari perintah teks. Dengan kemampuan ini, Anda dapat melakukan hal-hal seperti:

  • Membuat gambar dari perintah yang ditulis dalam bahasa alami
  • Membuat gambar dalam berbagai format dan gaya
  • Merender teks dalam gambar

Perhatikan bahwa Vertex AI in Firebase belum mendukung semua fitur yang tersedia untuk model Imagen. Pelajari lebih lanjut di Kemampuan dan fitur yang didukung nanti di halaman ini.

Langsung ke kode untuk input khusus teks

Sebelum memulai

Jika belum melakukannya, selesaikan panduan memulai. Hal ini mencakup penyiapan project Firebase, menghubungkan aplikasi ke Firebase, menambahkan SDK, dan menginisialisasi layanan Vertex AI. Semua ini adalah tugas yang diperlukan sebelum Anda dapat mengirim permintaan perintah ke model Imagen menggunakan SDK Vertex AI in Firebase.

Perhatikan bahwa untuk membuat gambar menggunakan model Imagen:

  • Pastikan Anda menggunakan setidaknya versi library Firebase berikut:
    iOS+: v11.9.1+ | Android: v16.2.0+ (BoM: v33.10.0+) | Web: v11.4.1+ | Flutter: v1.4.0+ (BoM: v3.8.0+)

  • Melakukan inisialisasi ImagenModel (bukan GenerativeModel)

  • Kirim perintah Anda dalam panggilan ke generateImages() (bukan ke generateContent() atau generateContentStream())

Inisialisasi ImagenModel dan penggunaan generateImages() ditampilkan dalam contoh di halaman ini.

Model yang mendukung kemampuan ini

Pembuatan gambar didukung oleh model Imagen 3. Dukungan untuk pembuatan gambar oleh model Gemini 2.0 akan segera hadir.

Membuat gambar dari input khusus teks

Anda dapat meminta model Imagen untuk membuat gambar dengan meminta teks. Anda dapat membuat satu gambar atau beberapa gambar.

Membuat satu gambar dari input khusus teks

Pastikan Anda telah menyelesaikan bagian Sebelum memulai dalam panduan ini sebelum mencoba contoh ini.

Anda dapat meminta model Imagen untuk membuat satu gambar dengan meminta teks.

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

Pelajari cara memilih model dan secara opsional lokasi yang sesuai untuk kasus penggunaan dan aplikasi Anda.

Membuat beberapa gambar dari input khusus teks

Pastikan Anda telah menyelesaikan bagian Sebelum memulai dalam panduan ini sebelum mencoba contoh ini.

Secara default, model Imagen 3 hanya menghasilkan satu gambar per permintaan. Namun, Anda dapat meminta model Imagen untuk membuat beberapa gambar per permintaan dengan memberikan generationConfig selama inisialisasi model.

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

Pelajari cara memilih model dan secara opsional lokasi yang sesuai untuk kasus penggunaan dan aplikasi Anda.

Fitur dan persyaratan yang didukung

Model Imagen 3 menawarkan banyak fitur terkait pembuatan gambar. Bagian ini menjelaskan hal yang didukung saat menggunakan model dengan Vertex AI in Firebase.

Kemampuan dan fitur yang didukung

Vertex AI in Firebase mendukung fitur model Imagen 3 ini.

  • Membuat orang dan wajah (dengan asumsi bahwa project Firebase Anda memiliki persetujuan dari Google Cloud)

  • Membuat teks dalam gambar yang dihasilkan

  • Menambahkan watermark ke gambar yang dihasilkan

  • Mengonfigurasi parameter pembuatan gambar, seperti jumlah gambar yang dihasilkan, rasio aspek, dan pemberian watermark

  • Mengonfigurasi setelan keamanan

Vertex AI in Firebase tidak mendukung fitur lanjutan model Imagen 3 ini.

Perhatikan bahwa sebagian besar fitur ini mengharuskan pengguna berada dalam daftar pengguna yang disetujui meskipun menggunakan model Imagen sisi server.

  • Fitur pengeditan atau manipulasi gambar, yang mencakup peningkatan resolusi gambar

  • Menyertakan gambar dalam permintaan ke model (seperti untuk pembelajaran few-shot)

  • Memverifikasi watermark digital menggunakan SDK
    Jika ingin memverifikasi bahwa gambar memiliki watermark, Anda dapat mengupload gambar ke Vertex AI Studio menggunakan tab Media.

  • Membuat "gambar live" dari teks (pembuatan MP4)

  • Membuat gambar menggunakan gaya standar

  • Menyetel bahasa teks input

  • Mengaktifkan includeSafetyAttributes, yang berarti bahwa safetyAttributes.categories dan safetyAttributes.scores tidak dapat ditampilkan

  • Menonaktifkan peningkatan perintah (parameter enhancePrompt), yang berarti bahwa alat penulisan ulang perintah berbasis LLM akan selalu otomatis menambahkan detail selengkapnya ke perintah yang diberikan untuk memberikan gambar berkualitas lebih tinggi yang lebih mencerminkan perintah yang diberikan

  • Menulis gambar yang dihasilkan langsung ke Google Cloud Storage sebagai bagian dari respons dari model (parameter storageUri). Sebagai gantinya, gambar selalu ditampilkan sebagai byte gambar berenkode base64 dalam respons.
    Jika ingin mengupload gambar yang dihasilkan ke Cloud Storage, Anda dapat menggunakan Cloud Storage for Firebase.

Spesifikasi dan batasan

Batas (per permintaan) Imagen 3 Imagen 3 Fast
Jumlah maksimum token input 480 token 480 token
Jumlah maksimum gambar output 4 gambar 4 gambar
Resolusi gambar output yang didukung (piksel)
  • 1024x1024 piksel (rasio aspek 1:1)
  • 896x1280 (rasio aspek 3:4)
  • 1280x896 (rasio aspek 4:3)
  • 768x1408 (rasio aspek 9:16)
  • 1408x768 (rasio aspek 16:9)
  • 1024x1024 piksel (rasio aspek 1:1)
  • 896x1280 (rasio aspek 3:4)
  • 1280x896 (rasio aspek 4:3)
  • 768x1408 (rasio aspek 9:16)
  • 1408x768 (rasio aspek 16:9)

Apa lagi yang dapat Anda lakukan?

  • Mulailah memikirkan persiapan untuk produksi, termasuk menyiapkan Firebase App Check untuk melindungi API yang Anda gunakan di aplikasi dari penyalahgunaan oleh klien yang tidak sah. Selain itu, pastikan untuk meninjau checklist produksi.

Pelajari cara mengontrol pembuatan konten

Pelajari lebih lanjut model yang didukung

Pelajari model yang tersedia untuk berbagai kasus penggunaan serta kuota dan harga-nya.


Berikan masukan tentang pengalaman Anda dengan Vertex AI in Firebase