Imagen का इस्तेमाल करके इमेज जनरेट करना


Vertex AI in Firebase एसडीके टूल की मदद से, Imagen API के ज़रिए Imagen 3 मॉडल को ऐक्सेस किया जा सकता है. इससे, टेक्स्ट प्रॉम्प्ट से इमेज जनरेट की जा सकती हैं. इस सुविधा की मदद से, ये काम किए जा सकते हैं:

  • आम भाषा में लिखे गए प्रॉम्प्ट से इमेज जनरेट करना
  • अलग-अलग फ़ॉर्मैट और स्टाइल में इमेज जनरेट करना
  • इमेज में मौजूद टेक्स्ट को रेंडर करना

ध्यान दें कि Vertex AI in Firebase पर फ़िलहाल, Imagen मॉडल के लिए उपलब्ध सभी सुविधाएं काम नहीं करती हैं. इस पेज पर, काम करने वाली सुविधाओं और सुविधाओं के बारे में ज़्यादा जानें.

सिर्फ़ टेक्स्ट इनपुट के लिए कोड पर जाएं

शुरू करने से पहले

अगर आपने अब तक ऐसा नहीं किया है, तो शुरू करने के लिए गाइड देखें. इसमें आपका Firebase प्रोजेक्ट सेट अप करना, ऐप्लिकेशन को Firebase से कनेक्ट करना, SDK टूल जोड़ना, और Vertex AI सेवा को शुरू करना शामिल है. Vertex AI in Firebase SDK टूल का इस्तेमाल करके, Imagen मॉडल को प्रॉम्प्ट अनुरोध भेजने से पहले, ये सभी ज़रूरी काम करने होंगे.

ध्यान दें कि Imagen मॉडल का इस्तेमाल करके इमेज जनरेट करने के लिए:

  • पक्का करें कि Firebase लाइब्रेरी के इन वर्शन का इस्तेमाल कम से कम किया जा रहा हो:
    iOS+: v11.9.1+ | Android: v16.2.0+ (BoM: v33.10.0+) | वेब: v11.4.1+ | Flutter: v1.4.0+ (BoM: v3.8.0+)

  • ImagenModel शुरू करें (GenerativeModel नहीं)

  • generateImages() पर कॉल करके अपना प्रॉम्प्ट भेजें (generateContent() या generateContentStream() पर नहीं)

ImagenModel को शुरू करने और generateImages() का इस्तेमाल करने का उदाहरण, इस पेज पर दिया गया है.

इस सुविधा के साथ काम करने वाले मॉडल

इमेज जनरेट करने की सुविधा, Imagen 3 मॉडल के साथ काम करती है. Gemini 2.0 मॉडल की मदद से इमेज जनरेट करने की सुविधा जल्द ही उपलब्ध होगी.

सिर्फ़ टेक्स्ट वाले इनपुट से इमेज जनरेट करना

टेक्स्ट के ज़रिए प्रॉम्प्ट देकर, Imagen मॉडल से इमेज जनरेट करने के लिए कहा जा सकता है. एक इमेज या कई इमेज जनरेट की जा सकती हैं.

सिर्फ़ टेक्स्ट वाले इनपुट से एक इमेज जनरेट करना

इस सैंपल को आज़माने से पहले, पक्का करें कि आपने इस गाइड का शुरू करने से पहले वाला सेक्शन पूरा कर लिया हो.

टेक्स्ट के ज़रिए प्रॉम्प्ट करके, Imagen मॉडल से एक इमेज जनरेट करने के लिए कहा जा सकता है.

KotlinJava
// 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()
}
// 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());

अपने इस्तेमाल के उदाहरण और ऐप्लिकेशन के हिसाब से सही मॉडल और जगह चुनने का तरीका जानें.

सिर्फ़ टेक्स्ट वाले इनपुट से कई इमेज जनरेट करना

इस सैंपल को आज़माने से पहले, पक्का करें कि आपने इस गाइड का शुरू करने से पहले वाला सेक्शन पूरा कर लिया हो.

डिफ़ॉल्ट रूप से, Imagen 3 मॉडल हर अनुरोध के लिए सिर्फ़ एक इमेज जनरेट करते हैं. हालांकि, मॉडल को शुरू करने के दौरान generationConfig देकर, Imagen मॉडल से हर अनुरोध के लिए कई इमेज जनरेट करने के लिए कहा जा सकता है.

KotlinJava
// 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
  }
}
// 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());

अपने इस्तेमाल के उदाहरण और ऐप्लिकेशन के हिसाब से सही मॉडल और जगह चुनने का तरीका जानें.

इस्तेमाल की जा सकने वाली सुविधाएं और ज़रूरी शर्तें

Imagen 3 मॉडल, इमेज जनरेट करने से जुड़ी कई सुविधाएं देते हैं. इस सेक्शन में बताया गया है कि Vertex AI in Firebase के साथ मॉडल इस्तेमाल करते समय, किन चीज़ों का इस्तेमाल किया जा सकता है.

इस्तेमाल की जा सकने वाली सुविधाएं और क्षमताएं

Vertex AI in Firebase, Imagen 3 मॉडल की इन सुविधाओं के साथ काम करता है.

  • लोगों और चेहरों को जनरेट करना (यह ज़रूरी है कि आपके Firebase प्रोजेक्ट को Google Cloud से अनुमति मिली हो)

  • जनरेट की गई इमेज में टेक्स्ट जनरेट करना

  • जनरेट की गई इमेज में वॉटरमार्क जोड़ना

  • इमेज जनरेशन पैरामीटर कॉन्फ़िगर करना. जैसे, जनरेट की गई इमेज की संख्या, आसपेक्ट रेशियो, और वॉटरमार्क

  • सुरक्षा सेटिंग कॉन्फ़िगर करना

Vertex AI in Firebase पर Imagen 3 मॉडल की इन ऐडवांस सुविधाओं का इस्तेमाल नहीं किया जा सकता.

ध्यान दें कि इनमें से ज़्यादातर सुविधाओं के लिए, अनुमति पा चुके उपयोगकर्ताओं की सूची में शामिल होना ज़रूरी है. भले ही, आपने Imagen मॉडल को सर्वर साइड पर इस्तेमाल किया हो.

  • इमेज में बदलाव करने या उन्हें मैनिप्युलेट करने की सुविधाएं. इनमें इमेज को बड़ा करने की सुविधा भी शामिल है

  • मॉडल के अनुरोध में इमेज शामिल करना (जैसे, फ़्यू-शॉट लर्निंग के लिए)

  • SDK टूल का इस्तेमाल करके, डिजिटल वॉटरमार्क की पुष्टि करना
    अगर आपको यह पुष्टि करनी है कि किसी इमेज में वॉटरमार्क है या नहीं, तो Vertex AI Studio के मीडिया टैब का इस्तेमाल करके, इमेज को अपलोड करें.

  • टेक्स्ट से"लाइव इमेज" जनरेट करना (MP4 जनरेशन)

  • पहले से तय किए गए स्टाइल का इस्तेमाल करके इमेज जनरेट करना

  • इनपुट टेक्स्ट की भाषा सेट करना

  • includeSafetyAttributes को चालू करना. इसका मतलब है कि safetyAttributes.categories और safetyAttributes.scores को वापस नहीं किया जा सकता

  • प्रॉम्प्ट को बेहतर बनाने (enhancePrompt पैरामीटर) की सुविधा बंद करना. इसका मतलब है कि एलएलएम पर आधारित प्रॉम्प्ट को फिर से लिखने वाला टूल, दिए गए प्रॉम्प्ट में अपने-आप ज़्यादा जानकारी जोड़ देगा. इससे, बेहतर क्वालिटी की ऐसी इमेज मिलती हैं जो दिए गए प्रॉम्प्ट को बेहतर तरीके से दिखाती हैं

  • मॉडल के जवाब (storageUri पैरामीटर) के हिस्से के तौर पर, जनरेट की गई इमेज को सीधे Google Cloud Storage में लिखना. इसके बजाय, इमेज को जवाब में हमेशा Base64 एन्कोड की गई इमेज के बाइट के तौर पर दिखाया जाता है.
    अगर आपको जनरेट की गई इमेज को Cloud Storage में अपलोड करना है, तो Cloud Storage for Firebase का इस्तेमाल करें.

खास जानकारी और सीमाएं

सीमाएं (हर अनुरोध के लिए) Imagen 3 Imagen 3 Fast
इनपुट टोकन की ज़्यादा से ज़्यादा संख्या 480 टोकन 480 टोकन
आउटपुट इमेज की ज़्यादा से ज़्यादा संख्या चार इमेज चार इमेज
आउटपुट इमेज के लिए इस्तेमाल किए जा सकने वाले रिज़ॉल्यूशन (पिक्सल)
  • 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 App Check को सेट अप करना भी शामिल है. इससे, अपने ऐप्लिकेशन में इस्तेमाल किए जाने वाले एपीआई को बिना अनुमति वाले क्लाइंट के गलत इस्तेमाल से बचाया जा सकता है. साथ ही, प्रोडक्शन की चेकलिस्ट को ज़रूर देखें.

कॉन्टेंट जनरेशन को कंट्रोल करने का तरीका जानें

इस्तेमाल किए जा सकने वाले मॉडल के बारे में ज़्यादा जानें

अलग-अलग कामों के लिए उपलब्ध मॉडल, उनके कोटे, और कीमत के बारे में जानें.


Vertex AI in Firebase के इस्तेमाल के अपने अनुभव के बारे में सुझाव/राय देना या शिकायत करना