יצירת תמונות באמצעות Imagen


ערכות ה-SDK של Vertex AI in Firebase נותנות לכם גישה למודלים של Imagen 3 (דרך Imagen API) כדי שתוכלו ליצור תמונות מהנחיית טקסט. בעזרת היכולת הזו תוכלו לבצע פעולות כמו:

  • יצירת תמונות מהנחיות שנכתבות בשפה טבעית
  • יצירת תמונות במגוון רחב של פורמטים וסגנונות
  • רינדור של טקסט בתמונות

חשוב לזכור ש-Vertex AI in Firebase עדיין לא תומך בכל התכונות שזמינות לדגמי Imagen. מידע נוסף זמין בקטע יכולות ותכונות נתמכות בהמשך הדף.

מעבר לקוד עבור קלט טקסט בלבד

לפני שמתחילים

אם עדיין לא עשיתם זאת, כדאי לעיין במדריך למתחילים. הפעולות האלה כוללות הגדרת פרויקט Firebase, קישור האפליקציה ל-Firebase, הוספת ה-SDK ואיפוס השירות Vertex AI. אלה כל המשימות הנדרשות לפני שאפשר לשלוח בקשה להצגת הודעה למודל Imagen באמצעות ערכות ה-SDK של Vertex AI in Firebase.

חשוב לזכור: כדי ליצור תמונות באמצעות מודלים של 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 יוצרים רק תמונה אחת לכל בקשה. עם זאת, אפשר לבקש ממודל Imagen ליצור כמה תמונות לכל בקשה על ידי מתן generationConfig במהלך האינטוליזציה של המודל.

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 בצד השרת.

  • תכונות של עריכת תמונות או מניפולציה שלהן, כולל התאמת תמונות

  • הוספת תמונות לבקשה למודלים (למשל, לצורך למידת few-shot)

  • אימות של סימני מים דיגיטליים באמצעות ערכות ה-SDK
    כדי לוודא שלתמונה יש סימן מים, אפשר להעלות אותה ל-Vertex AI Studio באמצעות הכרטיסייה Media.

  • יצירת 'תמונות חיות' מטקסט (יצירת קובצי MP4)

  • יצירת תמונות באמצעות סגנון מוגדר מראש

  • הגדרת השפה של טקסט הקלט

  • הפעלת includeSafetyAttributes, כלומר אי אפשר להחזיר את הערכים safetyAttributes.categories ו-safetyAttributes.scores

  • השבתת שיפור ההנחיה (הפרמטר enhancePrompt). המשמעות היא שכלי לשכתוב הנחיות שמבוסס על LLM תמיד יוסיף באופן אוטומטי פרטים נוספים להנחיה שסופקה כדי לספק תמונות באיכות גבוהה יותר שמשקפות טוב יותר את ההנחיה שסופקה.

  • כתיבת תמונה שנוצרה ישירות ב-Google Cloud Storage כחלק מהתגובה מהמודל (הפרמטר storageUri). במקום זאת, התמונות תמיד מוחזר בתגובה כבייט של תמונה בקידוד base64.
    אם רוצים להעלות תמונה שנוצרה ב-Cloud Storage, אפשר להשתמש ב-Cloud Storage for Firebase.

מפרטים והגבלות

מגבלות (לכל בקשה) Imagen 3 Imagen 3 Fast
מספר הטוקנים המקסימלי לקלט 480 אסימונים 480 אסימונים
מספר התמונות המקסימלי בפלט 4 תמונות 4 תמונות
רזולוציות תמונות פלט נתמכות (פיקסלים)
  • 1,024x1,024 פיקסלים (יחס גובה-רוחב של 1:1)
  • 896x1280 (יחס גובה-רוחב של 3:4)
  • 1280x896 (יחס גובה-רוחב של 4:3)
  • 768x1408 (יחס גובה-רוחב של 9:16)
  • 1408x768 (יחס גובה-רוחב של 16:9)
  • 1,024x1,024 פיקסלים (יחס גובה-רוחב של 1:1)
  • 896x1280 (יחס גובה-רוחב של 3:4)
  • 1280x896 (יחס גובה-רוחב של 4:3)
  • 768x1408 (יחס גובה-רוחב של 9:16)
  • 1408x768 (יחס גובה-רוחב של 16:9)

מה עוד אפשר לעשות?

איך שולטים ביצירת תוכן

מידע נוסף על המודלים הנתמכים

כאן תוכלו לקרוא מידע נוסף על המודלים הזמינים לתרחישי שימוש שונים, על המכסות ועל התמחור שלהם.


שליחת משוב על חוויית השימוש ב-Vertex AI in Firebase