앱에 맞춤 이미지를 추가하면 사용자 환경을 크게 개선하고 맞춤설정하며 사용자 참여도를 높일 수 있습니다. 이 게시물에서는 현재 미리보기로 제공되는 특화된 Imagen 수정 기능과 컨텍스트 또는 대화형 이미지 생성을 위해 설계된 Gemini 2.5 Flash Image (일명 'Nano Banana')의 일반 제공이라는 Firebase AI Logic을 사용한 이미지 생성을 위한 두 가지 새로운 기능을 살펴봅니다.
Firebase AI Logic을 통해 생성된 이미지로 사용자 참여도 높이기
이미지 생성 모델을 사용하여 맞춤 사용자 프로필 아바타를 만들거나 맞춤설정된 시각적 애셋을 주요 화면 흐름에 직접 통합할 수 있습니다.
예를 들어 Imagen은 새로운 수정 기능을 제공합니다 (개발자 미리보기). 이제 마스크를 그리고 인페인팅을 활용하여 마스크된 영역 내에서 픽셀을 생성할 수 있습니다. 또한 아웃페인팅을 사용하여 마스크 외부에서 픽셀을 생성할 수 있습니다.
Imagen은 인페인팅을 지원하므로 이미지의 일부만 생성할 수 있습니다.
또는 Gemini 2.5 Flash Image (일명 Nano Banana)는 확장된 세계 지식과 Gemini 모델의 추론 기능을 사용하여 컨텍스트와 관련된 이미지를 생성할 수 있습니다. 이는 사용자의 현재 인앱 환경에 맞는 동적 일러스트레이션을 만드는 데 적합합니다.
Gemini 2.5 Flash Image를 사용하여 앱과 컨텍스트가 관련된 동적 일러스트레이션을 만드세요.
마지막으로 대화형 및 반복적으로 이미지를 수정하는 기능을 사용하면 사용자가 자연어를 사용하여 사진을 수정할 수 있습니다.
Gemini 2.5 Flash Image를 사용하여 자연어로 사진을 수정하세요.
애플리케이션에 AI를 통합하기 시작할 때는 AI 안전에 관해 알아보는 것이 중요합니다. 특히 애플리케이션의 보안 위험을 평가하고, 안전 위험을 완화하기 위한 조정을 고려하고, 사용 사례에 적합한 안전 테스트를 실행하고, 사용자 의견을 수집하고, 콘텐츠를 모니터링하는 것이 중요합니다.
Imagen 또는 Gemini: 선택은 개발자의 몫
Gemini 2.5 Flash Image ("Nano Banana")와 Imagen의 차이점은 기본 초점과 고급 기능에 있습니다. 더 큰 Gemini 제품군 내의 이미지 모델인 Gemini 2.5 Flash Image는 대화형 이미지 수정에 탁월하며, 여러 반복에서 컨텍스트와 주제 일관성을 유지하고, '세계 지식 및 추론'을 활용하여 컨텍스트와 관련된 시각적 요소를 만들거나 긴 텍스트 시퀀스 내에 정확한 시각적 요소를 삽입합니다.
Imagen은 Google의 특화된 이미지 생성 모델로, 더 큰 창의적 제어를 위해 설계되었으며, 매우 사실적인 출력, 예술적 세부정보, 특정 스타일을 전문으로 하고, 생성된 이미지의 가로세로 비율 또는 형식을 지정하기 위한 명시적 제어를 제공합니다.
| Gemini 2.5 Flash Images (Nano Banana 🍌) | Imagen |
🌎 컨텍스트와 관련된 이미지를 위한 세계 지식 및 추론 💬 컨텍스트를 유지하면서 대화형으로 이미지 수정 📖 긴 텍스트 시퀀스 내에 정확한 시각적 요소 삽입 | 📐 생성된 이미지의 가로세로 비율 또는 형식 지정
🖌️인페인팅 및 아웃페인팅을 위한 마스크 기반 수정 지원
🎚️ 생성된 이미지의 세부정보 (품질, 예술적 세부정보, 특정 스타일)를 더 세부적으로 제어 |
앱에서 이러한 기능을 사용하는 방법을 알아보겠습니다.
Imagen을 사용한 인페인팅
몇 개월 전 Imagen의 새로운 수정 기능이 출시되었습니다. Imagen은 이제 이미지 생성을 위한 프로덕션 준비가 완료되었지만 수정 기능은 아직 개발자 미리보기 로 제공됩니다.
Imagen 수정 기능에는 마스크 기반 이미지 수정 기능인 인페인팅 및 아웃페인팅이 포함됩니다. 이 새로운 기능을 사용하면 사용자가 전체 사진을 다시 생성하지 않고도 이미지의 특정 영역을 수정할 수 있습니다. 즉, 이미지의 가장 좋은 부분을 보존하고 변경하려는 부분만 변경할 수 있습니다.
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는 모두 강력한 기능을 제공하므로 특정 사용 사례에 따라 앱을 맞춤설정하고 사용자 참여도를 높이는 데 적합한 이미지 생성 모델을 선택할 수 있습니다.
계속 읽기
-
제품 소식
오늘 Google은 저렴한 비용으로 속도에 중점을 두고 설계된 최첨단 인텔리전스인 Gemini 3 Flash를 출시하여 Gemini 3 모델 제품군을 확장합니다.
Thomas Ezan • 전문 길이: 2분
-
제품 소식
이제 Android Emulator를 사용하여 멀티 기기 상호작용을 그 어느 때보다 쉽게 테스트할 수 있습니다.
Steven Jenkins • 전문 길이: 2분
-
제품 소식
모든 개발자의 AI 워크플로와 요구사항은 고유하며 AI가 개발에 어떻게 도움이 되는지 선택할 수 있는 것이 중요합니다. 1월에는 로컬 또는 원격 AI 모델을 선택하여 Android 스튜디오에서 AI 기능을 구동할 수 있는 기능을 도입했습니다.
Matthew Warner • 전문 길이: 2분
소식 받아 보기
Android 개발 관련 최신 정보를 이메일로 받아 보세요. 매주