Imagen 3 で画像を生成する

Imagen 3 は画像生成モデルです。ユーザー プロフィールのカスタム アバターを生成したり、パーソナライズされたビジュアル アセットを既存の画面フローに取り込んでユーザー エンゲージメントを高めたりできます。

Vertex AI in Firebase SDK を使用して、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")
}

Vertex AI in Firebase の 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
  )
)

Java

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

次のステップ