Imagen की मदद से इमेज जनरेट करना

Imagen, इमेज जनरेट करने वाला एक मॉडल है. इसका इस्तेमाल, उपयोगकर्ता प्रोफ़ाइलों के लिए कस्टम अवतार जनरेट करने के लिए किया जा सकता है. इसके अलावा, इसका इस्तेमाल मौजूदा स्क्रीन फ़्लो में लोगों की दिलचस्पी बढ़ाने के लिए, उनकी पसंद के मुताबिक विज़ुअल ऐसेट को इंटिग्रेट करने के लिए भी किया जा सकता है.

Firebase AI Logic SDK का इस्तेमाल करके, अपने Android ऐप्लिकेशन से Imagen मॉडल को ऐक्सेस किया जा सकता है. Imagen मॉडल, Firebase AI Logic एपीआई उपलब्ध कराने वाली दोनों कंपनियों के ज़रिए उपलब्ध हैं: Gemini Developer API (ज़्यादातर डेवलपर के लिए इसका सुझाव दिया जाता है) और Vertex AI.

Gemini Developer API को ऐक्सेस करने के लिए, Firebase AI Logic इंटिग्रेशन आर्किटेक्चर को दिखाने वाला डायग्राम. Android ऐप्लिकेशन, Firebase से कनेक्ट करने के लिए Firebase Android SDK का इस्तेमाल करता है. इसके बाद, Firebase, Gemini Developer API के साथ इंटरैक्ट करता है. यह API, क्लाउड में Gemini Pro और Flash को ऐक्सेस करता है.
पहली इमेज. Firebase AI Logic का इस्तेमाल करके, Imagen मॉडल ऐक्सेस करें.

प्रॉम्प्ट के साथ एक्सपेरिमेंट करना

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

Google Cloud Vertex AI Studio इंटरफ़ेस का स्क्रीनशॉट. इसमें, प्रीहिस्टोरिक जंगल में नीले रंग का बैकपैक पहने हुए टी-रेक्स की जनरेट की गई चार इमेज दिखाई गई हैं. बाईं ओर मौजूद साइडबार में, नेविगेशन के विकल्प दिखते हैं. जैसे, डैशबोर्ड, मॉडल गार्डन, और विज़न. वहीं, दाईं ओर मौजूद पैनल में, इमेज जनरेट करने की सेटिंग के पैरामीटर होते हैं.
दूसरी इमेज. Vertex AI Studio की मदद से, इमेज जनरेट करने के लिए इस्तेमाल किए जाने वाले प्रॉम्प्ट को बेहतर बनाया जा सकता है.

Firebase प्रोजेक्ट सेट अप करना और अपने ऐप्लिकेशन को कनेक्ट करना

अपने Android प्रोजेक्ट में Firebase जोड़ने के लिए, Firebase के दस्तावेज़ में दिए गए चरणों का पालन करें.

Gradle डिपेंडेंसी जोड़ना

अपनी build.gradle फ़ाइल में ये डिपेंडेंसी जोड़ें:

dependencies {
  // Import the BoM for the Firebase platform
  implementation(platform("com.google.firebase:firebase-bom:34.2.0"))

  // Add the dependency for the Firebase AI Logic library. When using the BoM,
  // you don't specify versions in Firebase library dependencies
  implementation("com.google.firebase:firebase-ai")
}

इमेज जनरेट करना

अपने Android ऐप्लिकेशन में इमेज जनरेट करने के लिए, सबसे पहले ImagenModel को इंस्टैंटिएट करें. इसमें कॉन्फ़िगरेशन का विकल्प होता है.

generationConfig पैरामीटर का इस्तेमाल करके, नेगेटिव प्रॉम्प्ट, इमेज की संख्या, आउटपुट इमेज का आसपेक्ट रेशियो, इमेज का फ़ॉर्मैट तय किया जा सकता है. साथ ही, वॉटरमार्क जोड़ा जा सकता है. safetySettings पैरामीटर का इस्तेमाल करके, सुरक्षा और व्यक्ति के हिसाब से फ़िल्टर कॉन्फ़िगर किए जा सकते हैं.

Kotlin

val config = ImagenGenerationConfig {
    numberOfImages = 2,
    aspectRatio = ImagenAspectRatio.LANDSCAPE_16x9,
    imageFormat = ImagenImageFormat.jpeg(compressionQuality = 100),
    addWatermark = false
}

// Initialize the Gemini Developer API backend service
// For Vertex AI use Firebase.ai(backend = GenerativeBackend.vertexAI())
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).imagenModel(
    modelName = "imagen-3.0-generate-002",
    generationConfig = config,
    safetySettings = ImagenSafetySettings(
       safetyFilterLevel = ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE,
       personFilterLevel = ImagenPersonFilterLevel.BLOCK_ALL
    )
)

Java

ImagenGenerationConfig config = new ImagenGenerationConfig.Builder()
    .setNumberOfImages(2)
    .setAspectRatio(ImagenAspectRatio.LANDSCAPE_16x9)
    .setImageFormat(ImagenImageFormat.jpeg(100))
    .setAddWatermark(false)
    .build();

// For Vertex AI use Firebase.ai(backend = GenerativeBackend.vertexAI())
ImagenModelFutures model = ImagenModelFutures.from(
    FirebaseAI.ai(backend = GenerativeBackend.googleAI()).imagenModel(
       "imagen-3.0-generate-002",
       config,
       ImagenSafetySettings.builder()
          .setSafetyFilterLevel(ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE)
          .setPersonFilterLevel(ImagenPersonFilterLevel.BLOCK_ALL)
          .build())
);

ImagenModel इंस्टैंटिएट होने के बाद, generateImages को कॉल करके इमेज जनरेट की जा सकती हैं:

Kotlin

val imageResponse = model.generateImages(
  prompt = "An astronaut riding a horse",
)
val image = imageResponse.images.first
val bitmapImage = image.asBitmap()

Java

CompletableFuture<GenerateContentResponse> futureResponse =
    model.generateContent(
        Content.newBuilder()
            .addParts(
                Part.newBuilder()
                    .setText("An astronaut riding a horse")
                    .build())
            .build());

try {
  GenerateContentResponse imageResponse = futureResponse.get();
  List<GeneratedImage> images =
      imageResponse
          .getCandidates(0)
          .getContent()
          .getParts(0)
          .getInlineData()
          .getImagesList();

  if (!images.isEmpty()) {
    GeneratedImage image = images.get(0);
    Bitmap bitmapImage = image.asBitmap();
    // Use bitmapImage
  }
} catch (ExecutionException | InterruptedException e) {
  e.printStackTrace();
}