Site icon AppTractor

ИИ-генерация изображений в Firebase AI Logic

Добавление кастомных изображений в ваше приложение может значительно улучшить и персонализировать пользовательский опыт, а также повысить вовлеченность пользователей. В этой статье рассматриваются две новые возможности генерации изображений с помощью Firebase AI Logic: специализированные функции редактирования Imagen, которые в настоящее время находятся в стадии предварительной версии, и общедоступный Gemini 2.5 Flash Image (также известный как «Nano Banana»), предназначенный для создания контекстных или диалоговых изображений.

Изображения, созданные с помощью Firebase AI Logic

Модели генерации изображений можно использовать для создания аватаров профилей пользователей или для интеграции персонализированных визуальных ресурсов непосредственно в основные экранные потоки.

Например, Imagen предлагает новые функции редактирования (в предварительной версии для разработчиков). Теперь вы можете рисовать маску и использовать закрашивание для генерации пикселей внутри маски. Кроме того, доступна функция закрашивания для генерации пикселей за пределами маски.

Imagen поддерживает внутреннюю заливку, позволяя генерировать только часть изображения.

В качестве альтернативы Gemini 2.5 Flash Image (также известный как Nano Banana) может использовать расширенные знания о мире и возможности рассуждения моделей Gemini для создания контекстно-релевантных изображений, что идеально подходит для создания динамических иллюстраций, соответствующих текущему опыту пользователя в приложении.

Используйте Gemini 2.5 Flash Image для динамического создания иллюстраций, соответствующих контексту вашего приложения.

И наконец, возможность диалогового и итеративного редактирования изображений позволяет пользователям редактировать фотографии, используя естественный язык.

Используйте Gemini 2.5 Flash Image для редактирования изображений с использованием естественного языка.

Приступая к интеграции ИИ в ваше приложение, важно изучить вопросы безопасности ИИ. Особенно важно оценить риски безопасности вашего приложения, рассмотреть настройки для снижения рисков безопасности, провести тестирование безопасности, соответствующее вашему варианту использования, а также получить отзывы пользователей и отслеживать контент.

Imagen или Gemini: выбор за вами

Разница между Gemini 2.5 Flash Image («Nano Banana») и Imagen заключается в их основной направленности и расширенных возможностях. Gemini 2.5 Flash Image, как модель изображений в более широком семействе Gemini, превосходно справляется с диалоговым редактированием изображений, поддерживая контекст и согласованность темы на протяжении нескольких итераций, а также используя «мировые знания и рассуждения» для создания контекстно-релевантных визуальных эффектов или встраивания точных визуальных эффектов в длинных текстовых последовательностях.

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

Gemini 2.5 Flash Images (Nano Banana )

Imagen

Знания о мире и рассуждения для создания более релевантных по контексту изображений

Редактируйте изображения в диалоговом режиме, сохраняя контекст

Встраивайте точные визуальные элементы в длинных текстовых последовательностях

Указывайте соотношение сторон или формат создаваемых изображений

Поддержка редактирования на основе масок для закрашивания и раскрашивания.

Расширенный контроль над деталями создаваемого изображения (качество, художественные детали и особые стили)

Давайте посмотрим, как использовать их в вашем приложении.

Зарисовка в Imagen

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

Функции редактирования изображений включают inpainting и outpainting — инструменты редактирования на основе масок. Эта новая возможность позволяет изменять отдельные области изображения без необходимости перегенерировать всю картинку. То есть можно сохранить удачные части изображения и корректировать только то, что требуется изменить.

Используйте функции редактирования Imagen для внесения точных целенаправленных изменений в изображение, гарантируя его целостность.

Эти изменения вносятся с сохранением основных элементов и общей целостности исходного изображения, изменяя только область в маске.

Чтобы реализовать inpainting с помощью Imagen, сначала инициализируйте imagen-3.0-capability-001 — специальную модель Imagen, поддерживающую функции редактирования:

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0
val editingModel =
        Firebase.ai(backend = GenerativeBackend.vertexAI()).imagenModel(
            "imagen-3.0-capability-001",
            generationConfig = ImagenGenerationConfig(
                numberOfImages = 1,
                aspectRatio = ImagenAspectRatio.SQUARE_1x1,
                imageFormat = ImagenImageFormat.jpeg(compressionQuality = 75),
            ),
        )

Далее определяем функцию редактирования:

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0

val prompt = "remove the pancakes and make it an omelet instead"

suspend fun inpaintImageWithMask(sourceImage: Bitmap, maskImage: Bitmap, prompt: String, editSteps: Int = 50): Bitmap {
        val imageResponse = editingModel.editImage(
            referenceImages = listOf(
                ImagenRawImage(sourceImage.toImagenInlineImage()),
                ImagenRawMask(maskImage.toImagenInlineImage()),
            ),
            prompt = prompt,
            config = ImagenEditingConfig(
                editMode = ImagenEditMode.INPAINT_INSERTION,
                editSteps = editSteps,
            ),
        )
        return imageResponse.images.first().asBitmap()
    }

Вы предоставляете sourceImage, maskImage, а также промпт для редактирования и количество шагов, которые необходимо выполнить.

Вы можете увидеть это в действии в примере редактирования Imagen в каталоге примеров Android AI!

Imagen также поддерживает функцию outpainting, которая позволяет модели генерировать пиксели за пределами маски. Вы также можете использовать возможности настройки изображений Imagen, чтобы изменить стиль изображения или обновить объект на изображении. Подробнее об этом читайте в документации для Android-разработчиков.

Разговорная генерация изображений с помощью Gemini 2.5 Flash Image

Один из способов редактирования изображений с помощью Gemini 2.5 Flash Image — использовать возможности многошагового чата модели.

Сначала инициализируйте модель:

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0

val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
    modelName = "gemini-2.5-flash-image",
    // Configure the model to respond with text and images (required)
    generationConfig = generationConfig {
        responseModalities = listOf(ResponseModality.TEXT,
        ResponseModality.IMAGE)
    }
)

Чтобы достичь результата, аналогичного описанному выше методу Imagen на основе масок, мы можем использовать API чата для начала диалога с Gemini 2.5 Flash Image.

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0

// Initialize the chat
val chat = model.startChat()


// Load a bitmap
val source = ImageDecoder.createSource(context.contentResolver, uri)
val bitmap = ImageDecoder.decodeBitmap(source)


// Create the initial prompt instructing the model to edit the image
val prompt = content {
    image(bitmap)
    text("remove the pancakes and add an omelet")
}

// To generate an initial response, send a user message with the image and text prompt
var response = chat.sendMessage(prompt)

// Inspect the returned image
var generatedImageAsBitmap = response
    .candidates.first().content.parts.filterIsInstance<ImagePart>().firstOrNull()?.image

// Follow up requests do not need to specify the image again
response = chat.sendMessage("Now, center the omelet in the pan")
generatedImageAsBitmap = response
    .candidates.first().content.parts.filterIsInstance<ImagePart>().firstOrNull()?.image

Вы можете увидеть это в действии в примере Gemini Image Chat в каталоге Android AI Samples, а также узнать больше о нём в документации.

Заключение

Как Imagen, так и Gemini 2.5 Flash Image предлагают мощные возможности, позволяющие выбрать идеальную модель генерации изображений для персонализации вашего приложения и повышения вовлечённости пользователей в зависимости от вашего конкретного сценария использования.

Exit mobile version