إنشاء صور باستخدام 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 والإصدارات الأحدث: الإصدار 11.9.1 والإصدارات الأحدث | Android: الإصدار 16.2.0 والإصدارات الأحدث (BoM: الإصدار 33.10.0 والإصدارات الأحدث) | الويب: الإصدار 11.4.1 والإصدارات الأحدث | Flutter: الإصدار 1.4.0 والإصدارات الأحدث (BoM: الإصدار 3.8.0 والإصدارات الأحدث)

  • اضبط ImagenModel (وليس GenerativeModel).

  • أرسِل طلبك في مكالمة إلى generateImages() (وليس إلى generateContent() أو generateContentStream()).

يتم عرض عملية إعداد ImagenModel واستخدام generateImages() في الأمثلة الواردة في هذه الصفحة.

الطُرز التي تتيح هذه الميزة

تتيح نماذج Imagen 3 إنشاء الصور. ستتوفّر قريبًا إمكانية استخدام نماذج Gemini 2.0 لإنشاء الصور.

إنشاء صور من إدخال نصي فقط

يمكنك أن تطلب من نموذج Imagen إنشاء صور من خلال تقديم طلب باستخدام نص. يمكنك إنشاء صورة واحدة أو صور متعددة.

إنشاء صورة واحدة من إدخال نصي فقط

يُرجى التأكد من إكمال قسم قبل البدء في هذا الدليل قبل تجربة هذا العيّنة.

يمكنك أن تطلب من نموذج Imagen إنشاء صورة واحدة من خلال تقديم طلب باستخدام نص.

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 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()
}

Java

// 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 أثناء بدء تشغيل النموذج.

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 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
  }
}

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 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)، ما يعني أنّ أداة إعادة كتابة الطلبات المستندة إلى نموذج اللغة الكبيرة ستضيف تلقائيًا المزيد من التفاصيل إلى الطلب المقدَّم لتقديم صور ذات جودة أعلى تعكس الطلب المقدَّم بشكل أفضل

  • كتابة صورة تم إنشاؤها مباشرةً في Google Cloud Storage كجزء من الاستجابة من النموذج (المَعلمة storageUri) بدلاً من ذلك، يتم عرض الصور دائمًا في الردّ على شكل وحدات بيانات صور مُرمّزة بترميز base64.
    إذا أردت تحميل صورة تم إنشاؤها إلى Cloud Storage، يمكنك استخدام Cloud Storage for Firebase.

المواصفات والقيود

الحدود (لكل طلب) Imagen 3 Imagen 3 Fast
الحد الأقصى لعدد الرموز المميّزة للإدخال 480 رمزًا مميزًا 480 رمزًا مميزًا
الحد الأقصى لعدد الصور التي يتم عرضها 4 صور 4 صور
درجات دقة الصور المتوافقة للإخراج (بالبكسل)
  • ‫1024×1024 بكسل (نسبة العرض إلى الارتفاع 1:1)
  • ‫‎896×1280 (نسبة العرض إلى الارتفاع 3:4)
  • ‫1280×896 (نسبة العرض إلى الارتفاع 4:3)
  • ‫768×1408 (نسبة العرض إلى الارتفاع 9:16)
  • ‫1408×768 (نسبة العرض إلى الارتفاع 16:9)
  • ‫1024×1024 بكسل (نسبة العرض إلى الارتفاع 1:1)
  • ‫‎896×1280 (نسبة العرض إلى الارتفاع 3:4)
  • ‫1280×896 (نسبة العرض إلى الارتفاع 4:3)
  • ‫768×1408 (نسبة العرض إلى الارتفاع 9:16)
  • ‫1408×768 (نسبة العرض إلى الارتفاع 16:9)

الإجراءات الأخرى التي يمكنك اتّخاذها

  • ابدأ التفكير في الاستعداد للإصدار العلني، بما في ذلك إعداد Firebase App Check لحماية واجهات برمجة التطبيقات التي تستخدمها في تطبيقك من إساءة استخدامها من قِبل العملاء غير المصرّح لهم. يُرجى أيضًا مراجعة قائمة التحقّق من الإنتاج.

التعرّف على كيفية التحكّم في إنشاء المحتوى

مزيد من المعلومات عن الطُرز المتوافقة

اطّلِع على مزيد من المعلومات عن النماذج المتاحة لحالات الاستخدام المختلفة واطلاعك على الحصص و الأسعار.


تقديم ملاحظات حول تجربتك مع Vertex AI in Firebase