تولید تصاویر با Imagen، تولید تصاویر با Imagen، تولید تصاویر با Imagen

Imagen یک مدل تولید تصویر است. می‌توان از آن برای تولید آواتارهای سفارشی برای نمایه‌های کاربر یا ادغام دارایی‌های بصری شخصی‌شده در جریان‌های صفحه موجود برای افزایش تعامل کاربر استفاده کرد.

می‌توانید با استفاده از Firebase AI Logic SDK به مدل‌های Imagen از برنامه Android خود دسترسی پیدا کنید. مدل‌های Imagen با استفاده از هر دو ارائه‌دهنده API AI Logic Firebase در دسترس هستند: Gemini Developer API (توصیه‌شده برای اکثر توسعه‌دهندگان) و Vertex AI.

نموداری که معماری یکپارچه سازی منطق هوش مصنوعی Firebase را نشان می دهد        برای دسترسی به Gemini Developer API. یک برنامه اندروید از Firebase استفاده می کند        Android SDK برای اتصال به Firebase. سپس Firebase با آن تعامل دارد        Gemini Developer API، که به Gemini Pro & Flash در داخل دسترسی دارد        ابر
شکل 1. با استفاده از Firebase AI Logic به مدل های Imagen دسترسی پیدا کنید.

با دستورات آزمایش کنید

ایجاد درخواست های ایده آل اغلب به تلاش های متعدد نیاز دارد. می‌توانید درخواست‌های تصویر را در Google AI Studio آزمایش کنید، یک IDE برای طراحی سریع و نمونه‌سازی. برای راهنمایی در مورد چگونگی بهبود درخواست‌های خود، راهنمای ویژگی فرمان و تصویر را مرور کنید.

تصویری از رابط هوش مصنوعی گوگل استودیو،       نمایش چهار تصویر تولید شده از یک تی رکس با یک کوله پشتی آبی در یک       جنگل ماقبل تاریخ
شکل 2. استودیوی هوش مصنوعی گوگل می تواند به شما کمک کند تا درخواست های تولید تصویر خود را اصلاح کنید.

یک پروژه Firebase راه اندازی کنید و برنامه خود را متصل کنید

برای افزودن Firebase به پروژه Android خود، مراحل موجود در اسناد Firebase را دنبال کنید.

وابستگی Gradle را اضافه کنید

وابستگی های زیر را به فایل build.gradle خود اضافه کنید:

dependencies {
  // Import the BoM for the Firebase platform
  implementation(platform("com.google.firebase:firebase-bom:34.3.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 برای پیکربندی فیلترهای ایمنی و شخص استفاده کنید.

کاتلین

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-4.0-generate-001",
    generationConfig = config,
    safetySettings = ImagenSafetySettings(
       safetyFilterLevel = ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE,
       personFilterLevel = ImagenPersonFilterLevel.BLOCK_ALL
    )
)

جاوا

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-4.0-generate-001",
       config,
       ImagenSafetySettings.builder()
          .setSafetyFilterLevel(ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE)
          .setPersonFilterLevel(ImagenPersonFilterLevel.BLOCK_ALL)
          .build())
);

هنگامی که ImagenModel شما نمونه سازی شد، می توانید با فراخوانی generateImages تصاویر ایجاد کنید:

کاتلین

val imageResponse = model.generateImages(
  prompt = "A hyper realistic picture of a t-rex with a blue bagpack in a prehistoric forest",
)
val image = imageResponse.images.first
val bitmapImage = image.asBitmap()

جاوا

CompletableFuture<GenerateContentResponse> futureResponse =
    model.generateContent(
        Content.newBuilder()
            .addParts(
                Part.newBuilder()
                    .setText("A hyper realistic picture of a t-rex with a blue bagpack in a prehistoric forest")
                    .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();
}