Imagen 3로 이미지 생성

Imagen 3은 이미지 생성 모델입니다. 사용자 프로필의 맞춤 아바타를 생성하거나 맞춤설정된 시각적 확장 소재를 기존 화면 흐름에 통합하여 사용자 참여도를 높이는 데 사용할 수 있습니다.

Firebase SDK의 Vertex AI를 사용하여 Android 앱에서 Imagen 모델에 액세스할 수 있습니다.

Firebase에서 Vertex AI를 사용하여 Imagen 3 모델에 액세스
그림 1. Firebase에서 Vertex AI를 사용하여 Imagen 3 모델에 액세스합니다.

프롬프트 실험

이상적인 프롬프트를 만드는 데는 여러 번의 시도가 필요한 경우가 많습니다. 프롬프트 설계 및 프로토타입 제작을 위한 IDE인 Vertex AI Studio에서 이미지 프롬프트를 실험할 수 있습니다. 프롬프트를 개선하는 방법에 관한 도움말은 프롬프트 및 이미지 속성 가이드를 참고하세요.

Vertex AI Studio를 사용하면 이미지 생성 프롬프트를 미세 조정할 수 있습니다.
그림 2. Vertex AI Studio를 사용하면 이미지 생성 프롬프트를 미세 조정할 수 있습니다.

Firebase 프로젝트 설정 및 앱 연결

Firebase 문서의 단계에 따라 Android 프로젝트에 Firebase를 추가합니다.

Gradle 종속 항목 추가

build.gradle 앱 파일에 다음 종속 항목을 추가합니다.

dependencies {
    implementation(platform("com.google.firebase:firebase-bom:33.9.0"))

    implementation("com.google.firebase:firebase-vertexai")
}

Firebase in Vertex AI의 Imagen 3에는 Firebase BOM 33.10.0 이상이 필요합니다.

이미지 생성

Android 앱에서 이미지를 생성하려면 먼저 구성(선택사항)을 사용하여 ImagenModel를 인스턴스화합니다.

generationConfig 매개변수를 사용하여 음성 프롬프트, 이미지 수, 출력 이미지 가로세로 비율, 이미지 형식을 정의하고 워터마크를 추가할 수 있습니다. safetySettings 매개변수를 사용하여 안전 및 사용자 필터를 구성할 수 있습니다.

Kotlin

val imagenModel = Firebase.vertexAI.imagenModel(
  modelName = "imagen-3.0-generate-001",
  generationConfig = ImagenGenerationConfig(
    negativePrompt = "frogs",
    numberOfImages = 2,
    aspectRatio = ImagenAspectRatio.LANDSCAPE_16x9,
    imageFormat = ImagenImageFormat.jpeg(compressionQuality = 100),
    addWatermark = false
  ),
  safetySettings = ImagenSafetySettings(
    safetyFilterLevel = ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE,
    personFilterLevel = ImagenPersonFilterLevel.BLOCK_ALL
  )
)

자바

GenerativeModel imagenModel = FirebaseVertexAI.getInstance().imagenModel(
    "imagen-3.0-generate-001",
    ImagenGenerationConfig.builder()
        .setNegativePrompt("frogs")
        .setNumberOfImages(2)
        .setAspectRatio(ImagenAspectRatio.LANDSCAPE_16x9)
        .setImageFormat(ImagenImageFormat.jpeg(100))
        .setAddWatermark(true)
        .build(),
    ImagenSafetySettings.builder()
        .setSafetyFilterLevel(ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE)
        .setPersonFilterLevel(ImagenPersonFilterLevel.BLOCK_ALL)
        .build()
);

ImagenModel가 인스턴스화되면 generateImages를 호출하여 이미지를 생성할 수 있습니다.

Kotlin

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

Java

CompletableFuture<GenerateContentResponse> futureResponse =
    imagenModel.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();
}

다음 단계