プロンプトの語彙はプロンプトの品質より重要――そして一晩で400枚のゲームスプライトを生成して得た他の教訓

Reddit r/LocalLLaMA / 2026/3/27

💬 オピニオンDeveloper Stack & InfrastructureIdeas & Deep AnalysisTools & Practical Usage

要点

  • 著者は、約400枚のゲーム用スプライトアセットを生成するためのAI画像パイプラインを構築したことを報告し、制作過程で遭遇した見落としがちな失敗パターンを共有している。
  • 正確なプロンプトの言い回し(例:「sparse tint maps overlays」)が、一般的に説明的であることよりも、モデルの挙動をより確実に切り替えられることを見出した。
  • この記事では、Geminiの画像編集が、base64エンコードされた参照画像を黙って無視する場合があり、その場合は参照画像をアップロードし、ホストされたURL経由で渡す必要があると述べている。
  • 背景除去では、BiRefNetが見た目には「正しそう」でも、完全に透過されたPNG(例:334バイト)を出力し得るため、ファイルサイズやアルファチャネルの平均などに基づく堅牢な検証が必要になる。
  • 大規模運用では、実用的なバッチング戦略(例:複数のアイコン/スプライトレイヤーを1回の呼び出しで生成する)により、API呼び出し回数を減らし、一貫性も向上できた。

仕事の一環として、オープンソースのCiv系ゲーム向けに約400個(ユニットのスプライト、アイコン、地形タイル)のアセットを生成するためのAI画像パイプラインを作るのに、ここ数週間を費やしました。いくつかが本当に非自明だったので、それらの具体的な失敗パターンを共有します。

一番驚いたこと:まったく同じ言い回しが、まったく別のモデル挙動を引き出す

スパースな色調(ティント)オーバーレイのマスクが必要でした。これは、特定のピクセルだけが色付けされていて、スプライト上でチームカラーがどこに現れるかを示す画像です。どれも筋の通ったプロンプトを出しても、いつも一様なシルエット塗りになりました。 "Color masks," "tint layers," "overlay maps" — どれも一様な塗り。うまくいったフレーズは"sparse tint maps overlays."この完全な文字列です。ほかの言い回しにすると、毎回誤った出力になりました。なぜこれが効くのかの良い頭のモデルはありませんが、少なくとも一貫して機能します。

レイアウトでも同様です。16:9 のアスペクト比で「横3パネル画像」を求めると、縦のスタックが生成されました。プロンプトを 1:1 に切り替え、そこに「horizontal layout」を追加したら直りました。

Base64データURIは、Geminiの画像編集では黙って無視される

参照画像をbase64で渡している場合、モデルはおそらくそれを無視して、テキストだけから生成しています。参照として何を送っても同一の画像を40枚生成したところで判明しました。修正方法は、まずCDNストレージにアップロードしてから、そのホストURLを渡すことです。目立つ形ではドキュメント化されていません。

BiRefNetの失敗モードは巧妙

背景除去にBiRefNetを使いました。ときどき、334バイトぴったりの“正しそうに見える”PNGを返しますが、それは完全に透明です:正しいヘッダ、正しい形式、フォアグラウンドはゼロ。ファイルサイズのチェックでは検出できません。適切なチェックは、サイズ > 5000バイト かつアルファチャンネルの平均 > 0.1(magick f -channel A -separate -format '%[fx:mean]' info:)です。空の出力の平均は0.0です。

実際にスケールさせて効いたバッチ処理

  • アイコン:3×3グリッド(9個のバニラアイコン → 1回のAPI呼び出し → 9個に切り戻す)。365個のアイコンに対して呼び出し回数が9分の1になりました。
  • ティントレイヤー付きスプライト:3つのPNGレイヤーを1つの横長トリプティクスにまとめ、1回の呼び出しで生成します。別々の呼び出しだと結果が不安定でした。モデルがすべてのレイヤーを一緒に見たことがないためです。

役に立ちそうなら、これらの他の詳細も共有できます。プロンプトの語彙の話が、最初に知りたかったのはそれです。もっと説明的にしたり、より明確にしたりするよりも、モデルが学習した何らかのフレーズに“当てにいく”ことに本当に集中する必要があります。

スプライトシート生成についても引き続き実験しているので、もし誰か追加のコツがあればぜひ教えてください!

submitted by /u/Low-Cook-3544
[link] [comments]