Imagen ব্যবহার করে ছবি তৈরি করুন


Firebase SDK-তে Vertex AI আপনাকে Imagen 3 মডেলে অ্যাক্সেস দেয় ( Imagen API এর মাধ্যমে) যাতে আপনি একটি টেক্সট প্রম্পট থেকে ছবি তৈরি করতে পারেন। এই ক্ষমতা দিয়ে, আপনি এই ধরনের কাজ করতে পারেন:

  • প্রাকৃতিক ভাষায় লেখা প্রম্পট থেকে ছবি তৈরি করুন
  • বিস্তৃত বিন্যাস এবং শৈলীতে ছবি তৈরি করুন
  • ছবিতে পাঠ্য রেন্ডার করুন

মনে রাখবেন যে Firebase-এ Vertex AI এখনও Imagen মডেলের জন্য উপলব্ধ সমস্ত বৈশিষ্ট্য সমর্থন করে না। এই পৃষ্ঠায় পরে সমর্থিত ক্ষমতা এবং বৈশিষ্ট্য সম্পর্কে আরও জানুন।

শুধুমাত্র পাঠ্য ইনপুটের জন্য কোডে যান

আপনি শুরু করার আগে

যদি আপনি ইতিমধ্যেই না করে থাকেন, শুরু করার নির্দেশিকাটি সম্পূর্ণ করুন, যা বর্ণনা করে যে কীভাবে আপনার ফায়ারবেস প্রকল্প সেট আপ করবেন, আপনার অ্যাপকে ফায়ারবেসের সাথে সংযুক্ত করবেন, SDK যোগ করবেন, Vertex AI পরিষেবা শুরু করবেন এবং একটি ImagenModel উদাহরণ তৈরি করবেন।

নিশ্চিত করুন যে আপনি ন্যূনতম এই Firebase লাইব্রেরি সংস্করণগুলি ব্যবহার করছেন:
iOS+ : v11.9.0+ | Android : v16.2.0+ ( BoM : v33.10.0+) | ওয়েব : v11.4.1+ | ফ্লটার : v1.4.0+ (BoM: v3.8.0+)

মডেল যে এই ক্ষমতা সমর্থন করে

ইমেজ জেনারেশন ইমেজেন 3 মডেল দ্বারা সমর্থিত। Gemini 2.0 মডেলের দ্বারা ইমেজ তৈরির জন্য সমর্থন শীঘ্রই আসছে।

শুধুমাত্র পাঠ্য ইনপুট থেকে ছবি তৈরি করুন

আপনি একটি ইমেজেন মডেলকে টেক্সট সহ প্রম্পট করে ছবি তৈরি করতে বলতে পারেন। আপনি একটি ছবি বা একাধিক ছবি তৈরি করতে পারেন।

শুধুমাত্র পাঠ্য ইনপুট থেকে একটি চিত্র তৈরি করুন

এই নমুনা চেষ্টা করার আগে নিশ্চিত করুন যে আপনি এই গাইডের শুরু করার আগে বিভাগটি সম্পূর্ণ করেছেন।

আপনি একটি ইমেজেন মডেলকে পাঠ্য সহ প্রম্পট করে একটি একক চিত্র তৈরি করতে বলতে পারেন।

একটি ImagenModel ইন্সট্যান্স তৈরি করা নিশ্চিত করুন এবং generateImages কল করুন।

সুইফট

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.');
}

আপনার ব্যবহারের ক্ষেত্রে এবং অ্যাপের জন্য উপযুক্ত একটি মডেল এবং ঐচ্ছিকভাবে একটি অবস্থান কীভাবে চয়ন করবেন তা শিখুন।

শুধুমাত্র পাঠ্য ইনপুট থেকে একাধিক ছবি তৈরি করুন

এই নমুনা চেষ্টা করার আগে নিশ্চিত করুন যে আপনি এই গাইডের শুরু করার আগে বিভাগটি সম্পূর্ণ করেছেন।

ডিফল্টরূপে, Imagen 3 মডেল প্রতি অনুরোধে শুধুমাত্র একটি ছবি তৈরি করে। যাইহোক, আপনি ImagenModel ইনস্ট্যান্স তৈরি করার সময় একটি ImagenGenerationConfig প্রদান করে অনুরোধ প্রতি একাধিক ছবি তৈরি করতে একটি Imagen মডেলকে বলতে পারেন।

একটি ImagenModel ইন্সট্যান্স তৈরি করা নিশ্চিত করুন এবং generateImages কল করুন।

সুইফট

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.');
}

আপনার ব্যবহারের ক্ষেত্রে এবং অ্যাপের জন্য উপযুক্ত একটি মডেল এবং ঐচ্ছিকভাবে একটি অবস্থান কীভাবে চয়ন করবেন তা শিখুন।



সমর্থিত বৈশিষ্ট্য এবং প্রয়োজনীয়তা

ইমেজেন 3 মডেলগুলি ইমেজ তৈরির সাথে সম্পর্কিত অনেক বৈশিষ্ট্য অফার করে। Firebase-এ Vertex AI সহ মডেলগুলি ব্যবহার করার সময় কী সমর্থিত তা এই বিভাগটি বর্ণনা করে।

সমর্থিত ক্ষমতা এবং বৈশিষ্ট্য

Firebase-এ Vertex AI Imagen 3 মডেলের এই বৈশিষ্ট্যগুলিকে সমর্থন করে।

  • মানুষ এবং মুখ তৈরি করা হচ্ছে (প্রদত্ত যে আপনার ফায়ারবেস প্রকল্পের Google Cloud থেকে অনুমোদন রয়েছে)

  • জেনারেট করা ইমেজের মধ্যে টেক্সট তৈরি করা হচ্ছে

  • জেনারেট করা ছবিতে একটি ওয়াটারমার্ক যোগ করা হচ্ছে

  • ইমেজ জেনারেশন প্যারামিটার কনফিগার করা, যেমন জেনারেট করা ছবির সংখ্যা, আকৃতির অনুপাত এবং ওয়াটারমার্কিং

  • নিরাপত্তা সেটিংস কনফিগার করা হচ্ছে

Firebase-এ Vertex AI Imagen 3 মডেলের এই উন্নত বৈশিষ্ট্যগুলিকে সমর্থন করে না

মনে রাখবেন যে এই বৈশিষ্ট্যগুলির বেশিরভাগই ইমেজেন মডেল সার্ভার-সাইড ব্যবহার করার সময়ও ব্যবহারকারীদের একটি অনুমোদিত তালিকায় থাকা প্রয়োজন।

  • ইমেজ এডিটিং বা ম্যানিপুলেশন ফিচার, যার মধ্যে আছে আপস্কেলিং ইমেজ

  • মডেলের অনুরোধে ছবি সহ (যেমন কয়েক শট শেখার জন্য)

  • SDK ব্যবহার করে ডিজিটাল ওয়াটারমার্ক যাচাই করা হচ্ছে
    আপনি যদি যাচাই করতে চান যে একটি ছবিতে একটি জলছাপ আছে, তাহলে আপনি ছবিটির মিডিয়া ট্যাব ব্যবহার করে Vertex AI স্টুডিওতে আপলোড করতে পারেন।

  • পাঠ্য থেকে "লাইভ চিত্র" তৈরি করা হচ্ছে (MP4 প্রজন্ম)

  • একটি পূর্বনির্ধারিত শৈলী ব্যবহার করে ছবি তৈরি করা হচ্ছে

  • ইনপুট পাঠ্যের ভাষা সেট করা

  • includeSafetyAttributes সক্ষম করা, যার মানে হল safetyAttributes.categories এবং safetyAttributes.scores ফেরত দেওয়া যাবে না

  • প্রম্পট এনহান্সমেন্ট অক্ষম করা ( enhancePrompt প্যারামিটার), যার অর্থ হল একটি এলএলএম-ভিত্তিক প্রম্পট পুনর্লিখন টুল সর্বদা স্বয়ংক্রিয়ভাবে প্রদত্ত প্রম্পটে আরও বিশদ যোগ করবে যাতে উচ্চ মানের ছবিগুলি সরবরাহ করা যায় যা প্রদত্ত প্রম্পটকে আরও ভালভাবে প্রতিফলিত করে।

  • মডেল ( storageUri প্যারামিটার) থেকে প্রতিক্রিয়ার অংশ হিসাবে সরাসরি Google Cloud Storage একটি জেনারেট করা ছবি লেখা। পরিবর্তে, প্রতিক্রিয়ায় চিত্রগুলি সর্বদা বেস 64-এনকোডেড চিত্র বাইট হিসাবে ফেরত দেওয়া হয়।
    আপনি যদি Cloud Storage এ একটি জেনারেটেড ইমেজ আপলোড করতে চান, আপনি Cloud Storage for Firebase ব্যবহার করতে পারেন।

স্পেসিফিকেশন এবং সীমাবদ্ধতা

সীমাবদ্ধতা (প্রতি অনুরোধ) চিত্র 3 ছবি 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 আকৃতির অনুপাত)



আপনি আর কি করতে পারেন?

  • অননুমোদিত ক্লায়েন্টদের দ্বারা অপব্যবহার থেকে আপনার অ্যাপে ব্যবহার করা APIগুলিকে রক্ষা করার জন্য Firebase App Check সেট আপ করা সহ উত্পাদনের জন্য প্রস্তুতির বিষয়ে চিন্তা করা শুরু করুন৷ এছাড়াও, উত্পাদন চেকলিস্ট পর্যালোচনা করতে ভুলবেন না।

বিষয়বস্তু তৈরি নিয়ন্ত্রণ কিভাবে শিখুন

সমর্থিত মডেল সম্পর্কে আরও জানুন

বিভিন্ন ব্যবহারের ক্ষেত্রে উপলব্ধ মডেল এবং তাদের কোটা এবং মূল্য সম্পর্কে জানুন।


Firebase-এ Vertex AI-এর সাথে আপনার অভিজ্ঞতা সম্পর্কে মতামত দিন