|

Nano Banana ProはSeedパラメータ非対応?一括スタイル再現を実現する5つの代替案

著者注:Nano Banana Pro が Seed パラメータをサポートしていない技術的な理由と、満足のいく生成結果が得られた際に、それをバッチ処理で再現するための現実的で効果的な代替案を深く掘り下げます。

あるユーザーからの切実なフィードバック:「画像を加工して生成したのですが、その結果にとても満足しています。これと全く同じ効果で、他の画像も数枚まとめて作りたいのですが、どうすればいいでしょうか?毎回生成される結果が微妙に違ってしまうんです。」これは、Nano Banana Pro で一括画像生成(Image-to-Image)を行う際の典型的な悩みです。満足のいく画像を参考画像として入れても、効果が一致しない――理由はシンプルです。Nano Banana Pro 公式が Seed パラメータをサポートしていないため、生成のたびに全く新しいランダムな推論プロセスが走るからです。

核心となる価値:この記事では回り道をせず、なぜ Seed がないのか、なぜ参考画像だけでは不十分なのかを明確に解説した上で、Seed がなくても満足のいく効果を可能な限り再現するための「5つの実効性のある代替案」を提案します。

nano-banana-pro-no-seed-batch-consistency-guide-ja 图示


まずは明確に:なぜ Nano Banana Pro には Seed がないのか?

公式パラメータ一覧

Nano Banana Pro(gemini-3-pro-image-preview)の generationConfig は以下のパラメータをサポートしています:

パラメータ名 役割
responseModalities 出力タイプの指定 ["IMAGE"]
resolution 画像解像度 "1K" / "2K" / "4K"
aspectRatio アスペクト比 "16:9" / "1:1" / "2:3"
candidateCount 同時生成される候補数 1(画像生成は 1 に固定)
temperature テキスト部分のランダム性(画像には影響しません) 1.0(デフォルト推奨)

seed パラメータ:リストに含まれておらず、公式にはサポートされていません。

コード内で seed を渡そうとすると、直接エラーになります:

# ❌ エラーになります:Unknown field 'seed' in GenerationConfig
response = model.generate_content(
    prompt,
    generation_config=genai.GenerationConfig(
        response_modalities=["IMAGE"],
        seed=42  # ← エラー!公式はこのパラメータをサポートしていません
    )
)

Gemini Image API vs Imagen API:2つの異なるサービス

Google の公式ドキュメントに seed パラメータがあるのを見かけた方もいるかもしれませんが、それは Imagen API(Vertex AI 上の画像生成サービス)のことであり、Nano Banana Pro ではありません。

比較項目 Nano Banana Pro Imagen API(Vertex AI)
モデル ID gemini-3-pro-image-preview imagen-3.0-generate-002
Seed サポート ❌ 非対応 ✅ 対応(seed パラメータ)
API エンドポイント Google Generative AI Vertex AI
呼び出し SDK google-generativeai google-cloud-aiplatform
画質 最高レベルのリアリズム、文字レンダリングに強い 高品質、多様なスタイル
価格(APIYI) $0.05/枚 別途価格設定

結論:どうしても Seed による再現性が必要な場合は、Nano Banana Pro で存在しないパラメータをいじるのではなく、Imagen API に切り替えるべきです。APIYI などのサードパーティプロキシは Imagen API をサポートしておらず、この API は公式サイトの KEY でのみ利用可能です。

なぜ参考画像だけでは不十分なのか?

満足のいく生成結果を参考画像として再度入力するのは、最も直感的なアイデアですが、実際の効果は「いまいち」です。その根本的な理由は以下の通りです:

Nano Banana Pro は参考画像を「コピー用のテンプレート」ではなく「スタイルの参考」として理解します。「この画像をもう少し暗くして」と参考画像をアップロードすると、モデルは次のように動きます:

  1. 参考画像の全体的なスタイル、構成、内容を分析する
  2. 「もう少し暗くして」という指示を再解釈する
  3. 指示に従った新しい画像をゼロから生成する

このプロセスには毎回ランダム性が伴うため、「ほんの少し暗く」という指示が、1回目はちょうど良い 15% の輝度低下だったとしても、2回目は 50% になり、3回目は全く異なるスタイルになる可能性があります。

nano-banana-pro-no-seed-batch-consistency-guide-ja 图示


5 つの代替案:最も直接的な方法から根本的な解決策まで

案1:プロンプトの精密な数値化(即効性が最も高い)

問題シーン:「画像をほんの少し暗くして」→ 結果が暗すぎたり、逆に明るすぎたりすることがある。

根本的な原因は「ほんの少し」という表現が曖昧すぎることにあります。Nano Banana Pro は、「ほんの少し」に対する理解が毎回一致することを保証できません。解決策は、曖昧な表現を数値に置き換えることです。

❌ 曖昧なプロンプト:
"Make this image slightly darker"
(この画像をほんの少し暗くして)

✅ 数値化したプロンプト:
"Apply a subtle darkening effect equivalent to reducing brightness by
approximately 15-20%. The image should feel slightly moodier but all
details must remain clearly visible. Do NOT go dark. The result should
be close to: brightness 85% of original, contrast unchanged."
(明るさを約15〜20%下げるのに相当する、わずかな暗転効果を適用してください。
画像は少し情緒的な雰囲気にする必要がありますが、すべてのディテールははっきりと
見える状態を維持してください。暗くしすぎないでください。結果は、元の明るさの
85%程度、コントラストは変更なしの状態に近づけてください。)

よくある調整の数値化の書き方

明るさの調整:
"brightness at 85% of original" (15%下げる)
"increase brightness by 10%, keep contrast" (明るさを10%上げる)

色調の調整:
"add a very subtle warm orange tint, color shift about 10%"
"slight cool blue cast, saturation unchanged"

スタイルの強度:
"apply film grain texture at 20% opacity, barely noticeable"
"add very subtle vignette at corners, 15% strength"

💡 重要なテクニック:プロンプトの中で "approximately X%"(約X%)、"not exceeding Y%"(Y%を超えない)、"subtle/barely noticeable"(わずかな/かろうじて気づく程度)といった程度の限定詞を使い、モデルに対して変化の幅の境界を明確に伝えます。

案2:満足のいく結果 + 精密なプロンプトの組み合わせ(推奨される第一選択)

単に参照画像をアップロードするだけでは効果が不安定ですが、参照画像 + 数値化したプロンプトの組み合わせにすると、効果は格段に向上します。

import google.generativeai as genai
import base64

genai.configure(
    api_key="YOUR_APIYI_KEY",
    client_options={"api_endpoint": "vip.apiyi.com"}  # APIYI $0.05/回
)
model = genai.GenerativeModel("gemini-3-pro-image-preview")

def apply_consistent_effect(
    source_image_path: str,      # 処理する新しい画像
    approved_result_path: str,   # 最初に満足のいく結果が得られた画像(スタイル参照用)
    effect_description: str,     # 精密に数値化した効果の説明
    output_path: str
) -> str:
    """
    満足のいく効果を新しい画像に再現する
    参照画像 + 精密な数値化プロンプトの二重アンカーを使用
    """
    # 2枚の画像を読み込む
    with open(source_image_path, "rb") as f:
        source_data = base64.b64encode(f.read()).decode()
    with open(approved_result_path, "rb") as f:
        approved_data = base64.b64encode(f.read()).decode()

    prompt = f"""
I have two reference images:
- Image 1 (source): The new image I want to process
- Image 2 (approved result): A previous edit I was very happy with

Please apply the SAME effect from Image 2 to Image 1.
The effect is: {effect_description}

Critical instructions:
- The degree of change should match Image 2 EXACTLY
- Do not over-apply the effect
- Keep all other image properties unchanged
- If unsure about intensity, err on the side of LESS change
"""

    response = model.generate_content(
        [
            {"inline_data": {"mime_type": "image/jpeg", "data": source_data}},
            {"inline_data": {"mime_type": "image/jpeg", "data": approved_data}},
            prompt
        ],
        generation_config=genai.GenerationConfig(
            response_modalities=["IMAGE"],
            resolution="4K",
            aspect_ratio="1:1"
        )
    )

    for part in response.candidates[0].content.parts:
        if part.inline_data and part.inline_data.mime_type.startswith("image/"):
            with open(output_path, "wb") as f:
                f.write(base64.b64decode(part.inline_data.data))
            return output_path
    return None


# 使用例
result = apply_consistent_effect(
    source_image_path="new_product_photo.jpg",
    approved_result_path="approved_dark_edit.jpg",
    effect_description="subtle darkening, brightness reduced by approximately 15-20%, "
                       "image should be slightly moodier but all details clearly visible",
    output_path="output_consistent.png"
)
# 1回あたり $0.05(APIYI apiyi.com)

🚀 実測アドバイス:この方法は、一貫性を「完全にランダム」から「高い確率で期待通り」に引き上げますが、それでも100%ではありません。1バッチごとに2〜3個のバリエーションを同時に生成し(candidateCount はエラーになる場合があるため、複数回呼び出しを推奨)、人間が最も近いものを選ぶのがおすすめです。APIYI なら1回 $0.05 という低コストなので、複数回のサンプリングも現実的です。

案3:マルチサンプリング + バッチフィルタリング(大量処理向け)

現在の状況下で最も現実的なプランは、各画像に対して3〜5個のバリエーションを生成し、人間またはプログラムで最も近いものを選別することです。

import asyncio
import base64
import os
import google.generativeai as genai

genai.configure(
    api_key="YOUR_APIYI_KEY",
    client_options={"api_endpoint": "vip.apiyi.com"}  # APIYI $0.05/回
)
model = genai.GenerativeModel("gemini-3-pro-image-preview")

EFFECT_PROMPT = """
Apply subtle darkening effect:
- Brightness: approximately 85% of original (reduce by ~15%)
- Mood: slightly darker, more atmospheric
- Details: all elements must remain clearly visible
- Do NOT: make it too dark, change colors dramatically, lose details
This is a subtle, refined adjustment - less is more.
"""

async def generate_variants(image_path: str, n_variants: int = 3) -> list:
    """同じ画像に対して n 個のバリエーションを生成し、選別用に提供する"""
    with open(image_path, "rb") as f:
        img_data = base64.b64encode(f.read()).decode()

    async def one_call(i: int) -> str:
        output = image_path.replace(".jpg", f"_v{i+1}.png")
        loop = asyncio.get_event_loop()
        try:
            response = await loop.run_in_executor(None, lambda: model.generate_content(
                [{"inline_data": {"mime_type": "image/jpeg", "data": img_data}},
                 EFFECT_PROMPT],
                generation_config=genai.GenerationConfig(
                    response_modalities=["IMAGE"],
                    resolution="4K"
                )
            ))
            for part in response.candidates[0].content.parts:
                if part.inline_data:
                    with open(output, "wb") as f:
                        f.write(base64.b64decode(part.inline_data.data))
                    return output
        except Exception as e:
            print(f"  バリエーション {i+1} 失敗: {e}")
        return None

    # 並列で複数のバリエーションを生成
    results = await asyncio.gather(*[one_call(i) for i in range(n_variants)])
    return [r for r in results if r]


async def batch_process(image_list: list, n_variants: int = 3):
    """複数の画像をバッチ処理し、各画像に対して複数のバリエーションを生成する"""
    for img_path in image_list:
        print(f"\n処理中: {img_path}")
        variants = await generate_variants(img_path, n_variants)
        cost = len(variants) * 0.05
        print(f"  {len(variants)} 個のバリエーションを生成、コスト ${cost:.2f}(APIYI)")
        print(f"  ファイル: {variants}")
        print(f"  → 最も満足のいくバリエーションを手動で選択してください")


# 例:5枚の画像を処理し、各3個のバリエーションを生成
images = ["photo_01.jpg", "photo_02.jpg", "photo_03.jpg", "photo_04.jpg", "photo_05.jpg"]
asyncio.run(batch_process(images, n_variants=3))
# 5枚 × 3バリエーション = 15回呼び出し、APIYI 総コスト $0.75

コスト見積もり

規模 バリエーション数 総呼び出し回数 APIYI コスト
10 枚 各 3 個 30 回 $1.50
50 枚 各 3 個 150 回 $7.50
100 枚 各 2 個 200 回 $10.00

案4:Seed をサポートするモデルへの切り替え(根本的な解決策)

業務で正確な再現性が必要な場合、最も徹底した解決策は、ネイティブで Seed をサポートしているモデルに切り替えることです。

Imagen API (Vertex AI) —— 同じ Google 傘下で、Seed をサポートしています:

from google.cloud import aiplatform
from vertexai.preview.vision_models import ImageGenerationModel

# Imagen API は seed パラメータをサポート
model = ImageGenerationModel.from_pretrained("imagen-3.0-generate-002")
response = model.generate_images(
    prompt="your prompt here",
    seed=42,              # ✅ 公式にサポート!
    number_of_images=1,
    add_watermark=False   # seed 使用時は透かしをオフにする必要があります
)
# 同じ seed + 同じ prompt → 同じ結果(高い再現性)

Stable Diffusion / Flux —— 完璧な Seed エコシステム:

# APIYI (apiyi.com) 経由で Flux にアクセス、seed をサポート
import requests

response = requests.post(
    "https://vip.apiyi.com/v1/images/generations",
    headers={"Authorization": "Bearer YOUR_APIYI_KEY"},
    json={
        "model": "flux-dev",      # または flux-schnell
        "prompt": "your prompt",
        "seed": 12345,            # ✅ 完全な seed サポート
        "width": 1024,
        "height": 1024
    }
)
# seed を固定 → 一貫性のあるベース画像を大量生成可能

案5:画像の後処理(最高の精度と安定性)

もしニーズが「画像に対して固定の明るさ/色調調整をバッチ適用する」(例:一律に15%暗くする)といったものであれば、AI 生成を使うのは最適解ではありません。**画像の後処理(ポストプロセッシング)**こそが正しいツールです。

from PIL import Image, ImageEnhance
import os

def batch_darken(input_dir: str, output_dir: str, brightness_factor: float = 0.85):
    """
    明るさを精密にバッチ調整する
    brightness_factor: 0.85 = 15%低下、完全に再現可能、ランダム性ゼロ
    """
    os.makedirs(output_dir, exist_ok=True)
    files = [f for f in os.listdir(input_dir) if f.lower().endswith(('.jpg', '.png', '.webp'))]

    for filename in files:
        img = Image.open(os.path.join(input_dir, filename))
        enhancer = ImageEnhance.Brightness(img)
        # 明るさを精密にコントロール、毎回全く同じ結果が得られる
        darkened = enhancer.enhance(brightness_factor)
        darkened.save(os.path.join(output_dir, filename))
        print(f"✓ {filename} → 明るさ {brightness_factor*100:.0f}%")

# バッチ処理、APIコストゼロ、100%再現可能
batch_darken("input_images/", "darkened_output/", brightness_factor=0.85)

適用シーンの比較

調整タイプ 推奨ツール 理由
明るさ/コントラスト/彩度の統一 PIL / Photoshop バッチ処理 精密、再現可能、コストゼロ
色調フィルターの統一(暖色/寒色) PIL / LUT フィルター 100% の一貫性
複雑なスタイル転送(背景変更/被写体変更) Nano Banana Pro AI の真価が発揮される領域
精密な再現が必要かつクリエイティブな変化を含む Imagen API(Seed あり) 品質と一貫性の両立

🎯 率直なアドバイス:単に「画像を15%暗くしたい」だけなら、PIL の ImageEnhance.Brightness を使ってください。コストゼロ、100%の一貫性、たった一行のコードで解決します。AI 画像生成の価値は、複雑な内容の理解とクリエイティブな生成にあり、精密なパラメータ調整にあるわけではありません。


主要AI画像モデルのSeed対応比較

モデル Seed対応 再現の安定性 備考
Nano Banana Pro ❌ 非対応 低(毎回ランダム) 参考画像+プロンプトで一部改善可能
Imagen API ✅ 公式対応 同一のSeedとプロンプトで再現可能
Stable Diffusion ✅ 完全対応 非常に高い オープンソースエコシステム、セルフホストまたはクラウド
Flux Dev/Pro ✅ 対応 写実性が高く、API連携が可能
Midjourney --seed パラメータ 中(参考レベル) 同一Seedでスタイルは近似するが完全一致はしない
DALL-E 3 ❌ 非対応 Nano Banana Proと同様の制限あり

💡 プラットフォームの推奨事項APIYI(apiyi.com)を通じて、Nano Banana Pro、Flux、Stable Diffusionなどの複数の画像モデルに一括でアクセスできます。同一のAPIキーでモデルを切り替えられるため、Seed値の要否に応じて柔軟に選択できて便利です。





{5つの代替案の横断的比較}

{ソリューション}
<text x="26

よくある質問

Q1:Nano Banana Pro でシード(seed)効果を「ハック」する方法はありますか?

本当の意味でのハック方法はありません。一部のサードパーティプラットフォーム(fal.ai など)は、API ラッパー層に seed パラメータを追加していますが、これはプラットフォーム側のランダム性を制御するだけで、Google ネイティブの Gemini 画像生成における seed と同等ではありません。実際、最終的な画像の再現性への影響は非常に限定的です。

「シード効果」に最も近い組み合わせは、**「精緻に定量化されたプロンプト + 満足のいく結果を参考画像として使用 + 複数回のサンプリングと選別」**です。これらを組み合わせることで、一致率を完全なランダムから約 60〜70% の確率まで高めることができますが、100% になることはありません。

再現性が必須のワークフローの場合は、Imagen API への切り替えをお勧めします。APIYI(apiyi.com) を利用すれば、複数のサービスを同時に接続して比較テストを行うことができます。

Q2:「少し暗くする」といった効果を大量に再現したいのですが、最速の方法は何ですか?

「暗さ」の性質によります:

  • 単なる明るさや露出の調整の場合:Python の PIL ImageEnhance.Brightness(img).enhance(0.85) でバッチ処理するのが最適です。10 行程度のコードで済み、コストはゼロ、再現性は 100% です。
  • スタイル、雰囲気、AI によるコンテンツ生成が関わる場合(例:「暗いトーンにしつつ、背景に映画のような質感を持たせる」):手法 2(参考画像 + 定量化プロンプト)を用い、APIYI(apiyi.com) で一括呼び出しを行います。1 枚あたり $0.05 で、2〜3 個のバリエーションを生成した後に、最も近いものを手動で選択します。

Q3:Nano Banana Pro は将来的に seed パラメータをサポートしますか?

現時点では公式発表はありません。Google の製品ロードマップを見ると、Imagen API は精密で制御可能な画像生成(seed を含む)に特化したサービスである一方、Gemini の画像生成は「高品質なクリエイティブ生成」に寄っています。両者の位置付けが異なるため、将来的に Nano Banana Pro に seed が追加される可能性はありますが、現時点では不透明です。

最新情報は Google AI 公式ブログ(blog.google/technology/google-deepmind)や Gemini API のチェンジログ(ai.google.dev/gemini-api/docs/changelog)で確認できます。更新があれば、APIYI(apiyi.com) でもいち早く関連する活用ガイドを公開する予定です。


まとめ

Nano Banana Pro が seed パラメータをサポートしていないという事実を前提に、シーンに合わせて以下の 5 つの代替案を選択しましょう。

  1. 精緻に定量化されたプロンプト:「少し」といった曖昧な表現の代わりに数値を使用することで、即座に効果が得られます。
  2. 参考画像 + 定量化プロンプト:2 枚の画像(元画像 + 満足のいく結果)を入力し、再現したい効果の度合いを正確に記述します。
  3. 複数回のサンプリングと選別:1 枚につき 2〜3 個のバリエーションを生成します。APIYI なら 1 回 $0.05 と低コストなため、手動で最適なものを選ぶ戦略が有効です。
  4. Imagen API / Flux への切り替え:業務で再現性が必須な場合は、ネイティブで seed をサポートするモデルに切り替えます。
  5. PIL による後処理:明るさや色調の固定的な調整であれば、AI は最適解ではありません。PIL を使う方が正確です。

万能な解決策(銀弾)はありません。現在の状況に最も適したプランを選んでください。APIYI(apiyi.com)プラットフォームでは、1 回 $0.05 という低コストで複数回サンプリングができるため、「試行錯誤して選別する」戦略が完全に現実的です。これは公式サイトの価格(1 回 $0.24)に比べて 5 倍もお得になります。


参考文献

  1. Google Gemini API 画像生成パラメータドキュメント

    • リンク:ai.google.dev/gemini-api/docs/image-generation
    • 説明:generationConfig の公式サポートパラメータリスト。seed フィールドがないことを確認済み。
  2. Vertex AI Imagen API ドキュメント(seed サポートあり)

    • リンク:cloud.google.com/vertex-ai/generative-ai/docs/image/generate-images
    • 説明:Imagen API における seed パラメータの使用方法と制限事項。
  3. Gemini Python SDK GitHub Issue #536

    • リンク:github.com/google-gemini/deprecated-generative-ai-python/issues/536
    • 説明:Gemini の画像生成において seed パラメータがサポートされていないことを確認するコミュニティの議論。
  4. APIYI プラットフォームのマルチモデル接続

    • リンク:docs.apiyi.com
    • 説明:Nano Banana Pro / Imagen / Flux の統合接続に関する説明。

著者:技術チーム
技術交流:同様の一括生成における一貫性の問題に直面していませんか?ぜひコメント欄で議論しましょう。AI 画像生成の実践的なノウハウについては、APIYI apiyi.com 技術コミュニティをご覧ください。

類似投稿