— リファレンス画像で精度が変わる
Nehan.AIの3匹のマスコットキャラクターの表情差分を、画像生成AIで一括生成する実験です。Google Gemini 2.5 Flash と OpenAI GPT Image 2 を比較しました。
キャラクターデザイン
まず、3体のキャラクターデザインシートを紹介します。これらも画像生成AI(GPT Image 2)で作成したものです。
ElecSheep⚡(電気羊) — 歩いて発電する元気な羊。紺キャップ、黄色ジャケット、プラグ型しっぽ。

ParipiSheep🎉(パリピ羊) — 交流担当のギャル羊。黒ライダージャケット、QRペンダント、WiFiテール。

SomniSheep🌙(寝言羊) — 癒し担当の眠り羊。紺ナイトキャップ、ラベンダーパジャマ。

やりたいこと
これらのデザインシートをもとに、6表情(sleep / drowsy / surprised / happy / confused / excited)を均等なグリッドで生成したい。アプリ内のキャラクターアイコンとして使います。
条件:
まず Gemini 2.5 Flash で試す
Google の Gemini 2.5 Flash Image モデルは、リファレンス画像をインラインで渡せるのが強みです。
POST generativelanguage.googleapis.com/v1beta/models/
gemini-2.5-flash-image:generateContent
contents.parts[0]: inlineData(リファレンス画像のbase64)
contents.parts[1]: text(プロンプト)
generationConfig.responseModalities: ["TEXT", "IMAGE"]
generationConfig.temperature: 0.6
グリッドテンプレート画像(空の6セル枠)も一緒に渡して、レイアウトを強制しようとしました。

Geminiの結果
ElecSheep(Gemini + テンプレート + リファレンス)

指定した6セルではなく8枚(4×2)に。帽子は維持されているが、セルサイズが不均一。テンプレートのグリッド線を参照してはいるが、正確には守れていない。
ParipiSheep(Gemini)

5枚横並びになり、さらに「FRONT」「SURRISED」「BACK」などのテキストラベルが混入。プロンプトで「NO text」と何度強調しても消えない。
SomniSheep(Gemini)

2×3の6枚グリッドになり、3体の中では最も安定。ただし「?」マークが混入。
Geminiの課題をまとめると:
リファレンス画像を渡せるのは良いが、構造化された出力(グリッド)が苦手。
GPT Image 2 で解決
OpenAI の GPT Image 2 には2つのエンドポイントがあります。
generations(テキストのみ)
POST api.openai.com/v1/images/generations
Content-Type: application/json
model: gpt-image-2
prompt: "..."
size: 1536x1024
quality: high
リファレンス画像は渡せませんが、グリッド制御が完璧。
edits(リファレンス画像あり)
POST api.openai.com/v1/images/edits
Content-Type: multipart/form-data
model: gpt-image-2
image[]: @character_reference.png
prompt: "Using this character reference..."
size: 1536x1024
quality: high
image[] パラメータでキャラデザインシートを渡せる。これが今回の発見です。Geminiの「参照画像が渡せる」メリットと、OpenAIの「グリッドが完璧」メリットを両取りできます。
editsのプロンプト例
Using this character reference sheet, create a 3x2
expression sheet (6 cells).
The character is "ElecSheep" — match the design EXACTLY
from the reference image.
IMPORTANT: Include the dark navy baseball cap with
lightning bolt pin in EVERY cell.
LAYOUT: 3 columns x 2 rows, white background,
thin gray borders.
Same character size and center position in all 6 cells.
6 EXPRESSIONS (left→right, top→bottom):
1. sleeping peacefully, eyes closed, relaxed
2. drowsy yawning, half-open eyes, covering mouth
3. surprised, wide eyes, shocked expression
4. happy, big smile, joyful laughing
5. confused, tilted head, puzzled look
6. excited, star eyes, triumphant arms-up pose
NO text, NO labels, NO symbols, NO letters anywhere.
Pure illustration only.
ポイント:
GPT Image 2 edits の結果
ElecSheep(edits + リファレンスあり)

3×2グリッド完璧。紺キャップが全フレームに。プラグテール、青ポーチも忠実に再現。テキストなし。
ParipiSheep(edits + リファレンスあり)

ライダージャケットの金スタッド、WiFiテール、LED厚底ブーツ、QRペンダント。元デザインの特徴が全て入っている。テキストなし。
SomniSheep(edits + リファレンスあり)

ナイトキャップの月星柄、ラベンダーパジャマの星ボタン、紺スカーフ。6表情の差分が明確。テキストなし。
数値比較
出力サイズ
コスト(1枚あたり)
トークン使用量(GPT Image 2 edits)
グリッド成功率(6セル指定)
結論
キャラクター表情シートのような「構造化されたグリッド出力」には GPT Image 2 の edits API が最適。リファレンス画像でデザインの再現度を担保しつつ、グリッド制御とテキスト除去が完璧です。
Gemini 2.5 Flashはコスト1/4で自由な構図の単体イラストには向きますが、グリッドや表情シートには不向き。
どちらもキャラクター生成の品質は十分実用レベルで、rembg(U2-Net)による背景除去→正方形切り出しのパイプラインと組み合わせれば、アプリ用のアセットを効率的に量産できます。
参考
Nehan.AI開発チーム — AICU Inc.