Создавайте изображения с помощью Imagen 3

Imagen 3 — это модель генерации изображений. Ее можно использовать для создания пользовательских аватаров для профилей пользователей или для интеграции персонализированных визуальных ресурсов в существующие потоки экранов для повышения вовлеченности пользователей.

Вы можете получить доступ к моделям Imagen из вашего приложения Android с помощью Firebase AI Logic SDK. Модели Imagen доступны с использованием обоих поставщиков API Firebase AI Logic: Gemini Developer API (рекомендуется для большинства разработчиков) и Vertex AI.

Диаграмма, иллюстрирующая архитектуру интеграции Firebase AI Logic для доступа к API разработчика Gemini. Приложение Android использует Firebase Android SDK для подключения к Firebase. Затем Firebase взаимодействует с API разработчика Gemini, который получает доступ к Gemini Pro и Flash в облаке.
Рисунок 1. Доступ к моделям Imagen 3 с использованием Firebase AI Logic.

Экспериментируйте с подсказками

Создание идеальных подсказок часто требует нескольких попыток. Вы можете экспериментировать с подсказками изображений в Vertex AI Studio , IDE для проектирования и прототипирования подсказок. Для советов по улучшению подсказок ознакомьтесь с руководством по атрибутам подсказок и изображений .

Скриншот интерфейса Google Cloud Vertex AI Studio, отображающий четыре сгенерированных изображения T-Rex с синим рюкзаком в доисторическом лесу. На левой боковой панели отображаются параметры навигации, такие как Панель инструментов, Модельный сад и Видение, а на правой панели находятся Параметры для настроек генерации изображений.
Рисунок 2. Vertex AI Studio поможет вам усовершенствовать подсказки по генерации изображений.

Настройте проект Firebase и подключите свое приложение

Чтобы добавить Firebase в свой проект Android , следуйте инструкциям в документации Firebase.

Добавьте зависимость Gradle

Добавьте следующие зависимости в файл build.gradle :

dependencies {
  // Import the BoM for the Firebase platform
  implementation(platform("com.google.firebase:firebase-bom:33.14.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-3.0-generate-002",
    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-3.0-generate-002",
       config,
       ImagenSafetySettings.builder()
          .setSafetyFilterLevel(ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE)
          .setPersonFilterLevel(ImagenPersonFilterLevel.BLOCK_ALL)
          .build())
);

После создания экземпляра ImagenModel вы можете генерировать изображения, вызывая generateImages :

Котлин

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

Ява

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