با استفاده از Imagen تصاویر تولید کنید


Firebase AI Logic SDK به شما امکان دسترسی به مدل های Imagen 3 (از طریق Imagen API ) را می دهد تا بتوانید تصاویر را از یک درخواست متنی تولید کنید. با این قابلیت می توانید کارهایی مانند:

  • ایجاد تصاویر از دستورات نوشته شده به زبان طبیعی
  • تصاویر را در طیف گسترده ای از فرمت ها و سبک ها ایجاد کنید
  • رندر متن در تصاویر

توجه داشته باشید که Firebase AI Logic هنوز از تمام ویژگی‌های موجود برای مدل‌های Imagen پشتیبانی نمی‌کند. در ادامه این صفحه در مورد قابلیت ها و ویژگی های پشتیبانی شده بیشتر بیاموزید.

پرش به کد برای ورودی فقط متنی

قبل از شروع

برای مشاهده محتوا و کد ارائه دهنده خاص در این صفحه، روی ارائه دهنده API Gemini خود کلیک کنید.

اگر قبلاً این کار را نکرده‌اید، راهنمای شروع را تکمیل کنید، که نحوه راه‌اندازی پروژه Firebase را توضیح می‌دهد، برنامه خود را به Firebase متصل کنید، SDK را اضافه کنید، سرویس Backend را برای ارائه‌دهنده API انتخابی خود مقداردهی اولیه کنید و یک نمونه ImagenModel ایجاد کنید.

مدل هایی که از این قابلیت پشتیبانی می کنند

تولید تصویر توسط مدل های Imagen 3 پشتیبانی می شود.

توجه داشته باشید که Firebase AI Logic همچنین از تولید تصویر توسط مدل‌های Gemini پشتیبانی می‌کند—اسناد به زودی ارائه می‌شود!

تصاویر را از ورودی فقط متنی تولید کنید

می‌توانید از یک مدل Imagen بخواهید که با ارسال متن، تصاویر تولید کند. شما می توانید یک تصویر یا چندین تصویر ایجاد کنید.

یک تصویر از ورودی فقط متنی ایجاد کنید

قبل از امتحان این نمونه، بخش قبل از شروع این راهنما را تکمیل کنید تا پروژه و برنامه خود را راه اندازی کنید.
در آن بخش، همچنین روی دکمه ای برای ارائه دهنده API Gemini انتخابی خود کلیک می کنید تا محتوای خاص ارائه دهنده را در این صفحه ببینید .

می‌توانید از یک مدل Imagen بخواهید که یک تصویر را با درخواست متن ایجاد کند.

مطمئن شوید که یک نمونه ImagenModel ایجاد کرده اید و generateImages را فراخوانی کنید.

سویفت


import FirebaseAI

// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())


// Create an `ImagenModel` instance with a model that supports your use case
let model = ai.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 this SDK to access Imagen models is a Preview release and requires opt-in
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
  // Initialize the Gemini Developer API backend service
  // Create an `ImagenModel` instance with an Imagen model that supports your use case
  val imagenModel = Firebase.ai(backend = GenerativeBackend.googleAI()).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 Gemini Developer API backend service
// Create an `ImagenModel` instance with an Imagen model that supports your use case
ImagenModel imagenModel = FirebaseAI.getInstance(GenerativeBackend.googleAI()).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 { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";

// 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 Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });


// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
const imagenModel = getImagenModel(ai, { 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_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 Gemini Developer API backend service
// Create an `ImagenModel` instance with an Imagen model that supports your use case
final model =
  FirebaseAI.googleAI().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 هنوز برای Unity پشتیبانی نمی شود، اما به زودی دوباره بررسی کنید!

بیاموزید که چگونه یک مدل مناسب برای مورد استفاده و برنامه خود انتخاب کنید.

چندین تصویر را از ورودی متنی ایجاد کنید

قبل از امتحان این نمونه، بخش قبل از شروع این راهنما را تکمیل کنید تا پروژه و برنامه خود را راه اندازی کنید.
در آن بخش، همچنین روی دکمه ای برای ارائه دهنده API Gemini انتخابی خود کلیک می کنید تا محتوای خاص ارائه دهنده را در این صفحه ببینید .

به‌طور پیش‌فرض، مدل‌های Imagen 3 در هر درخواست تنها یک تصویر تولید می‌کنند. با این حال، می توانید از یک مدل Imagen بخواهید که در هر درخواست با ارائه یک ImagenGenerationConfig هنگام ایجاد نمونه ImagenModel ، چندین تصویر ایجاد کند.

مطمئن شوید که یک نمونه ImagenModel ایجاد کرده اید و generateImages را فراخوانی کنید.

سویفت


import FirebaseAI

// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())


// Create an `ImagenModel` instance with a model that supports your use case
let model = ai.imagenModel(
  modelName: "imagen-3.0-generate-002",
  // Configure the model to generate multiple images for each request
  // See: https://firebase.google.com/docs/ai-logic/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 this SDK to access Imagen models is a Preview release and requires opt-in
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
  // Initialize the Gemini Developer API backend service
  // Create an `ImagenModel` instance with an Imagen model that supports your use case
  val imagenModel = Firebase.ai(backend = GenerativeBackend.googleAI()).imagenModel(
      modelName = "imagen-3.0-generate-002",
      // Configure the model to generate multiple images for each request
      // See: https://firebase.google.com/docs/ai-logic/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/ai-logic/model-parameters
ImagenGenerationConfig imagenGenerationConfig = new ImagenGenerationConfig.Builder()
        .setNumberOfImages(4)
        .build();

// Initialize the Gemini Developer API backend service
// Create an `ImagenModel` instance with an Imagen model that supports your use case
ImagenModel imagenModel = FirebaseAI.getInstance(GenerativeBackend.googleAI()).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 { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";

// 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 Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });


// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
const imagenModel = getImagenModel(
  ai,
  {
    model: "imagen-3.0-generate-002",
    // Configure the model to generate multiple images for each request
    // See: https://firebase.google.com/docs/ai-logic/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_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 Gemini Developer API backend service
// Create an `ImagenModel` instance with an Imagen model that supports your use case
final model =
  FirebaseAI.googleAI().imagenModel(
    model: 'imagen-3.0-generate-002',
    // Configure the model to generate multiple images for each request
    // See: https://firebase.google.com/docs/ai-logic/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.');
}

وحدت

استفاده از Imagen هنوز برای Unity پشتیبانی نمی شود، اما به زودی دوباره بررسی کنید!

بیاموزید که چگونه یک مدل مناسب برای مورد استفاده و برنامه خود انتخاب کنید.



ویژگی ها و الزامات پشتیبانی شده

مدل های ایمیجن 3 ویژگی های زیادی در رابطه با تولید تصویر ارائه می دهند. این بخش مواردی را که هنگام استفاده از مدل‌های با Firebase AI Logic پشتیبانی می‌شوند، توضیح می‌دهد.

قابلیت ها و ویژگی های پشتیبانی شده

Firebase AI Logic از این ویژگی های مدل های Imagen 3 پشتیبانی می کند.

  • ایجاد افراد و چهره‌ها (با توجه به اینکه پروژه Firebase شما تأییدیه Google Cloud را دارد)

  • تولید متن در تصاویر تولید شده

  • اضافه کردن واترمارک به تصاویر تولید شده

  • پیکربندی پارامترهای تولید تصویر ، مانند تعداد تصاویر تولید شده، نسبت ابعاد و واترمارک

  • پیکربندی تنظیمات ایمنی

Firebase AI Logic از این ویژگی های پیشرفته مدل های 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 تصویر
وضوح تصویر خروجی پشتیبانی شده (پیکسل)
  • 1024x1024 پیکسل (نسبت تصویر 1:1)
  • 896x1280 (نسبت تصویر 3:4)
  • 1280x896 (نسبت تصویر 4:3)
  • 768x1408 (نسبت تصویر 9:16)
  • 1408x768 (نسبت تصویر 16:9)
  • 1024x1024 پیکسل (نسبت تصویر 1:1)
  • 896x1280 (نسبت تصویر 3:4)
  • 1280x896 (نسبت تصویر 4:3)
  • 768x1408 (نسبت تصویر 9:16)
  • 1408x768 (نسبت تصویر 16:9)



چه کار دیگری می توانید انجام دهید؟

یاد بگیرید چگونه تولید محتوا را کنترل کنید

درباره مدل های پشتیبانی شده بیشتر بدانید

در مورد مدل های موجود برای موارد استفاده مختلف و سهمیه ها و قیمت آنها اطلاعات کسب کنید.


درباره تجربه خود با Firebase AI Logic بازخورد بدهید