DX開発事業部の西田です。

Gemini 2.0 Flash での画像生成がパブリックプレビューになり、Vertex AIでも実行できるようになったので早速試してみたいと思います。

Gemini 2.0 Flash 画像生成でできること

テキストから画像を生成

プロンプト:
「背景に花火がある東京タワーの画像を生成してください。」

生成結果:

日本語もサポートされています。

画像にテキストを入れる(テキストレンダリング)

プロンプト:
『「クラウドのことならアイレットにお任せ!」というボードを持った笑顔のビジネスマン。』

生成結果:

画像とテキストを交互に生成(インターリーブ)

プロンプト:
「おいしいカレーライスのレシピを考えてください。途中の調理風景と完成がわかる画像も一緒に生成してください。」

生成結果:

画像編集

プロンプト:
「スーツの色をピンク色にして。それ以外は何もしなくてよい。」

生成結果:

チャット形式でマルチターンで画像を編集していくことも可能です。

価格

Vertex AI Pricing  |  Generative AI on Vertex AI  |  Google Cloud
Discover flexible pricing for training, deployment, and prediction for Generative AI models with Vertex AI. Build and scale intelligent applications efficiently.

トークンベースの価格は次のようになっています。

モデル タイプ 価格
Gemini 2.0 Flash Image Generation 100万入力トークン $0.15
100万入力音声トークン $1.00
100万入力動画トークン $3.00
100万出力テキストトークン $0.60
100万出力画像トークン $30.00

画像出力のトークン消費にかかるコストが大きいので注意が必要です。

目安として1024×1024の画像の場合、1290トークンを消費し、画像の解像度によっても異なります。
参考

SDKで実行

!pip install google-genai==1.14.0
from google import genai
from google.genai.types import GenerateContentConfig, Modality
from PIL import Image
from io import BytesIO


client = genai.Client(
  vertexai=True, project=PROJECT_ID, location=LOCATION
)
response = client.models.generate_content(
    model="gemini-2.0-flash-preview-image-generation",
    contents=(
        "おいしいカレーライスのレシピを考えてください。"
        "途中の調理風景と完成がわかる画像も一緒に生成してください。"
    ),
    config=GenerateContentConfig(response_modalities=[Modality.TEXT, Modality.IMAGE]),
)

output_file_name = "output.md"
# 生成されたレスポンスの要素を順番に処理してMarkdownファイルに保存
with open(output_file_name, "w") as fp:
    for i, part in enumerate(response.candidates[0].content.parts):
        if part.text is not None:
            # テキストはそのまま書き出す
            fp.write(part.text)
        elif part.inline_data is not None:
            # 画像データがあれば画像として保存し、Markdownの画像タグを記載
            image = Image.open(BytesIO((part.inline_data.data)))
            image.save(f"example-image-{i+1}.png")
            fp.write(f"![image](./example-image-{i+1}.png)")

# Debug
# print(response.model_dump_json(indent=2))
# print(f"total_token_count: {response.usage_metadata.total_token_count}")

with open(output_file_name, "r", encoding="utf-8") as f:
    content = f.read()

print(content)


高品質な画像生成モデルはすでに Imagen がありますが、Geminiと統合されることでより直感的に対話を交えた形で画像生成、編集が行えるようになりますね。
生成速度も速く、対話形式でもストレスを感じにくいです。
プレビューなのでまだ安定していないところは少々ありますが、GAやバージョンアップでより改善されることが期待できそうです!