제품 소식

AI 생성 이미지로 사용자 참여도 높이기

읽는 데 5분

앱에 맞춤 이미지를 추가하면 사용자 환경을 크게 개선하고 개인화하며 사용자 참여를 높일 수 있습니다. 이 게시물에서는 Firebase AI Logic을 사용한 이미지 생성의 두 가지 새로운 기능인 전문 Imagen 편집 기능(현재 프리뷰로 제공)과 맥락 또는 대화형 이미지 생성을 위해 설계된 Gemini 2.5 Flash Image('Nano Banana'라고도 함)의 정식 버전을 살펴봅니다.

Firebase AI Logic을 통해 생성된 이미지로 사용자 참여도 높이기

이미지 생성 모델을 사용하여 맞춤 사용자 프로필 아바타를 만들거나 맞춤형 시각적 애셋을 주요 화면 플로우에 직접 통합할 수 있습니다.  

예를 들어 Imagen은 새로운 편집 기능을 제공합니다 (개발자 프리뷰). 이제 마스크를 그리고 인페인팅을 활용하여 마스크 처리된 영역 내에 픽셀을 생성할 수 있습니다. 또한 아웃페인팅을 사용하여 마스크 외부의 픽셀을 생성할 수 있습니다.   

Imagen inpainting.png

Imagen은 인페인팅을 지원하므로 이미지의 일부만 생성할 수 있습니다. 

또는 Gemini 2.5 Flash Image (일명 Nano Banana)는 Gemini 모델의 확장된 세계 지식과 추론 기능을 사용하여 맥락과 관련된 이미지를 생성할 수 있으며, 이는 사용자의 현재 인앱 환경에 맞는 동적 삽화를 만드는 데 이상적입니다.   

 

In-context nano banana illustration.png

Gemini 2.5 Flash Image를 사용하여 앱과 관련성이 있는 동적 삽화를 만드세요. 

마지막으로, 대화형으로 반복하여 이미지를 수정하는 기능을 통해 사용자는 자연어를 사용하여 사진을 수정할 수 있습니다.

 

photo edit natural language.png

Gemini 2.5 Flash Image를 사용하여 자연어로 사진을 수정합니다.

애플리케이션에 AI를 통합하기 시작할 때는 AI 안전에 대해 알아보는 것이 중요합니다. 특히 애플리케이션의 보안 위험을 평가하고, 안전 위험을 완화하기 위한 조정을 고려하고, 사용 사례에 적합한 안전 테스트를 실행하고, 사용자 의견을 요청하고, 콘텐츠를 모니터링하는 것이 중요합니다.

Imagen 또는 Gemini: 선택은 사용자의 몫입니다 

Gemini 2.5 Flash Image ('Nano Banana')와 Imagen의 차이점은 기본 초점과 고급 기능에 있습니다. Gemini 2.5 Flash Image는 더 큰 Gemini 제품군 내의 이미지 모델로서 대화형 이미지 편집에 탁월하며, 여러 반복에 걸쳐 컨텍스트와 주제 일관성을 유지하고, '전 세계에 대한 지식과 추론'을 활용하여 컨텍스트와 관련된 시각적 요소를 만들거나 긴 텍스트 시퀀스 내에 정확한 시각적 요소를 삽입합니다. 

Imagen은 Google의 전문 이미지 생성 모델로, 창의적인 제어 기능을 강화하고, 매우 사실적인 출력, 예술적 디테일, 특정 스타일을 전문으로 하며, 생성된 이미지의 가로세로 비율이나 형식을 지정하는 명시적 제어 기능을 제공하도록 설계되었습니다.

Gemini 2.5 Flash 이미지 
(Nano Banana 🍌)
Imagen

🌎 맥락에 더 적합한 이미지를 위한 세계 지식 및 추론
  

💬 맥락을 유지하면서 대화형으로 이미지 수정하기
  

📖 긴 텍스트 시퀀스 내에 정확한 시각적 요소 삽입

📐 생성된 이미지의 가로세로 비율 또는 형식 지정

 

🖌️인페인팅 및 아웃페인팅을 위한 마스크 기반 수정 지원 

 

🎚️ 생성된 이미지의 세부사항 (품질, 예술적 디테일, 특정 스타일)을 더 세부적으로 제어할 수 있습니다.

앱에서 이러한 기능을 사용하는 방법을 알아보겠습니다.
 

Imagen을 사용한 인페인팅 

몇 달 전 Imagen의 새로운 편집 기능이 출시되었습니다. Imagen은 이제 이미지 생성에 프로덕션 환경에서 사용할 수 있지만 편집 기능은 아직 개발자 프리뷰 상태입니다.

Imagen 수정 기능에는 마스크 기반 이미지 수정 기능인 인페인팅아웃페인팅이 포함됩니다. 이 새로운 기능을 사용하면 전체 이미지를 재생성하지 않고도 이미지의 특정 영역을 수정할 수 있습니다. 즉, 이미지의 가장 좋은 부분을 유지하고 변경하려는 부분만 수정할 수 있습니다.

Imagen inpainting dog.png

Imagen 편집 기능을 사용하여 이미지에서 정확한 타겟 변경을 수행하고 나머지 이미지 무결성 보장

이러한 변경사항은 원본 이미지의 핵심 요소와 전반적인 무결성을 유지하면서 마스크의 영역만 수정하여 적용됩니다.

Imagen으로 인페인팅을 구현하려면 먼저 편집 기능을 지원하는 특정 Imagen 모델을 imagen-3.0-capability-001 초기화합니다.

// 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, 프롬프트, 실행할 수정 단계 수를 제공합니다.

Android AI 샘플 카탈로그의 Imagen 수정 샘플에서 실제 작동을 확인할 수 있습니다.

또한 Imagen은 모델이 마스크 외부의 픽셀을 생성할 수 있도록 하는 아웃페인팅도 지원합니다. 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 방법과 유사한 결과를 얻으려면 chat 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

Android AI 샘플 카탈로그의 Gemini 이미지 채팅 샘플에서 실제 작동을 확인할 수 있으며 Android 문서에서 자세히 알아볼 수 있습니다.

결론

Imagen과 Gemini 2.5 Flash Image는 모두 강력한 기능을 제공하므로 특정 사용 사례에 따라 앱을 맞춤설정하고 사용자 참여도를 높이는 데 적합한 이미지 생성 모델을 선택할 수 있습니다.

작성자:

계속 읽기