思い通りのキャラクターをAIに描かせるのは難しい?桃太郎で実験してみた

「なんで桃太郎が描けないの?ポンコツなの?」

AIにそんな八つ当たりをしたのがほんの数日前…

ことの発端は、

「同じイラストをいろんなAIに描いてもらって、結果の違いを記事にしよう!題材はそうだなぁ~、みんなが知ってる昔話のキャラクターにしよう!」

なんて考えたのが始まり。

そしてAIなら桃太郎くらいすんなり描いてくれるだろう、とこの時は軽く考えていた。

結果は想定外のオンパレードで、

なぜ犬が三匹!?

右に謎生物

孫悟飯!?

どうしてこうなった(笑)

こんな絵を描くような指示を出した覚えはないのだが。

きっとプロンプトが悪いのだろう。

こうして私は、試行錯誤の沼にハマったのだった…

既存キャラの生成が難しい理由

なんか上手くいかない。

これまで私が画像生成AIに作ってもらった画像は、風景など決まった答えがないものばかりだった。

対して今回描きたいのは具体的なイメージが既にある「桃太郎」。

日本人なら皆「桃太郎とはこうあるべき」というイメージを思い浮かべることができる。

そう、決まった答えがあるのだ。

既に知ってるキャラクターを生成する場合、我々は正解にどれだけ近いかを比較出来てしまうので、AIの生成結果に対して「こんなんじゃない」と厳しめの評価をしてしまう。

だって桃太郎は、犬を3匹も連れていないし、変な生き物も連れてない。ましてやカメハメ波を打ったりもしないでしょ?

「そんなん桃太郎じゃない!」となってしまうのだ。

プロンプトが悪い?

AIにイメージ通りに描いてもらうのが、こんなに難しいなんて…

「だったらプロンプト直せばいいじゃない。」って思うでしょ?

結論を先に書くと、その通り「結局プロンプトをもっと精密に書く」が解決への糸口となったのだが、このとき私は重大なミスを犯していた。

私が犯した重大なミス

最初に私がChatGPTに依頼した内容はこう。

桃太郎の画像をAIで生成したいです。どのAIを使っても、必ず一目で「桃太郎」と分かるよう、まずは桃太郎の特徴を列挙してください。

承知しました!
AIで生成する際に「一目で桃太郎」と分かるためには、ストーリーや伝統的な描写から導かれる特徴を整理しておくのが大事です。以下に列挙しますね。

■桃太郎の特徴(ビジュアル面)
年齢設定:幼児〜少年(昔話の主人公としては若い姿で描かれる)
髪型:黒髪で短め、またはちょんまげ風(時代劇を意識した髪型が多い)
服装:
・鎧や甲冑の一部を身に着ける(勇敢さを示す)
・袴や和服風の衣装(日本昔話らしさを強調)
・腰に刀を帯びていることが多い
持ち物:
・旗(「日本一」と書かれた旗が代表的)
・木刀や刀、武具
・きびだんご(腰に袋をぶら下げる)
■桃太郎を象徴する要素
桃:大きな桃から生まれたイメージ(桃のモチーフを背景や小物で表現すると分かりやすい)
仲間の動物:犬、猿、キジの3匹(それぞれきびだんごで仲間になった)
舞台設定:
・鬼ヶ島へ鬼退治に行くイメージ
・舟や島、鬼の砦を背景に描かれることも多い
■印象的な要素(性格・雰囲気)
・勇敢さ、正義感
・子供ながらも頼もしさ、力強さ
・勇ましい表情やポーズ(刀を構える、旗を掲げるなど)

流石ChatGPT先生、ちゃんと桃太郎を分かっていらっしゃる。

これらの情報を元に画像生成用のプロンプトを出力してください

丸顔で幼い表情をした4〜5歳くらいの可愛くて勇敢な桃太郎。大きなキラキラした瞳と黒い短髪。小さな和服を着て、帯には小さなきびだんごの袋を下げている。背中には「日本一」と書かれた小さな旗。そばには仲間の犬・猿・キジが遊ぶように描かれている。背景には桃が描かれ、誕生の象徴を示す。全体のイラストはカラフルで温かみがあり、絵本風のやわらかい雰囲気。

ここまで出来たら、あとは他の画像生成AIにプロンプトを入れるだけだ。

この時私は、テストのつもりでそのままChatGPTに画像を生成してもらったのだが、その時出来上がった画像がこれだ。

かわいい桃太郎ができました!

これなら誰が見ても桃太郎と認識できる!

このプロンプトを他のAIに入れて検証してみよう…

さて、ここまでで私が犯したミス、お気づきだろうか?

答え

それは「新しいチャット」で試さなかったこと。

ChatGPTは、それまでの会話の文脈も踏まえて画像を生成してくれるので、プロンプトが不完全だったことに気付けなかった。

「このプロンプトは完璧だ!」と思い込んだまま、他のAIで画像を作った結果

これ桃太郎か?

ペットを連れた男の子の画像に。

これが桃太郎だ!と言われても、首かしげますよね。

そして、あーでもない、こーでもない、とプロンプトをいじりまわした結果、

「なんで桃太郎が描けないの?ポンコツなの?(冒頭のセリフ)」となったわけ。

原因判明

致命的な過ちに気付いた私は、すぐChatGPTの「新しいチャット」を開いて先ほどのプロンプトを試してみた。

その結果がこれ。

桃太郎の要素がいくつか抜け落ちてる

この画像を見て改めて気づいた。

確かにプロンプトにはおでこの鉢巻きや、腰の刀についての描写は含まれていない。

プロンプトには含まれていないけど、その前の特徴を書き出してもらったところには、ちゃんと書かれてあった。

これではっきりした。

やっぱりプロンプトの情報不足なんだと。

ちなみに同じことをGeminiでも試したら、

現代版ももたろう?

犬・サル・キジがいるから、かろうじて桃太郎?という仕上がりだった。

プロンプトの情報不足が原因なら、ここであのツールを試してみよう。

前の記事で紹介をしたOpneAI公式のプロンプト生成ツール「OpenAI developer platform」

プロンプトを細かく生成してくれるので、これを使えば一発で上手くいくのでは?

ということで、早速試してみた。(使い方は前の記事を見てね

プロンプト生成ツールを試す

プロンプト生成ツールに一言、

桃太郎の画像作って

とだけ入力すると、すぐさま以下のようなプロンプトを出してくれた。(英語だったので日本語に翻訳)

日本の昔話のキャラクター「桃太郎(Peach Boy)」に基づいて、詳細で視覚的に魅力的な画像を作成してください。描写は伝統的な説明に忠実であることを確保してください。・桃太郎は、若い少年として描写し、伝統的な侍風の衣装を着て、旗やのぼりを持っていること。
・彼の三匹の動物の仲間(犬、猿、キジ)を含め、それぞれが明確に識別でき、桃太郎と一緒に描かれていること。
・舞台は、日本の昔話に登場する要素(田舎の村、桃〈桃太郎の起源〉、伝統的な風景など)を反映していること。
・すべてのキャラクターは表情豊かに描かれ、仲間意識やチームワークを示すような配置にすること。最終的な画像を作成する前に、昔話の慣習に基づいた本格的な桃太郎表現に必要な要素を分析し、グループの冒険への準備が際立つ構図を検討してください。すべての物語的な視覚要素が含まれていると確信できたときのみ、画像を生成してください。出力形式: 画像のみを返してください。テキストや説明は一切含めないでください。

桃太郎の姿について細かく書いてないけど、大丈夫かな?

このプロンプトをChatGPTに入力してできた画像がこれ。

おしい!なんか変な生き物いるw

右下のへんな生き物さえいなければ完璧だった(笑)

ならばと、同じプロンプトをGeminiにも投入!

おしい!種がむきだしw

全く違うテイストだけど、これもちゃんと桃太郎と分かる!

では、Midjourneyに入れたらどうだろう?

う~ん、これは桃太郎ではないよねぇ。

OpenAI developer platformが作るプロンプトは、ChatGPTやGeminiのような対話が得意なAI(大規模言語モデル)には使えるけど、Midjourneyのような画像生成に特化したAIにはもっと違うアプローチが必要ということが分かった。

もっと精密なプロンプトを出す

Midjourneyのような画像生成AIで桃太郎を描く方法。

やはり「プロンプトを細かく設定する」ことくらいしか、今の私には思い浮かばなかった。

とはいえ、キャラの特徴を事細かに手書きなんて、私には出来そうにない。

ならばここはChatGPTにまかせてしまおう!

思いついた手順は以下の通り

  1. お手本の画像をChatGPTにアップロード
  2. 画像を詳細に読み込んでもらう
  3. 画像生成AI用にプロンプトを出してもらう

ここで大事なのは「詳細に」というところ。

これまで以上に丁寧に、詳細に、特徴を書き出してもらうことができるのか?

早速試してみた。

使う画像は、ChatGPTに作ってもらった可愛い桃太郎。

この画像を詳細に読み込んでもらうために、以下のような指示を出した。

この桃太郎の画像を他の画像生成AIでも再現できるよう、特徴を細部まで抽出してプロンプトにしてください。

ちなみにこのとき使ったChatGPTのバージョンは「ChatGPT 5 Thinking」。

じっくりと57秒考えてから以下のような返答が返ってきた。(長いので一部抜粋)

いいね、この画像なら“誰が見ても桃太郎”を他AIでも再現しやすいです。まず要素を最小漏れで抽出→そのまま使える**共通プロンプト(JP/EN)**と、MJ/SD系向け書式も置いておきます。

① 観察から抽出した識別コア(内容最優先)
・年齢/体型:4–5歳の幼児体型、二頭身~2.5頭身、丸い童顔、にっこり笑顔、黒目まる目。
・髪/頭:黒髪、前髪ぱっつん気味、白いはちまき+青い鉢巻、上で小さなちょんまげ。
・服装:水色の子ども用着物+赤い袖なし羽織、黄色い帯、紺の袴/ズボン。
・小道具:腰にきび団子の小袋(白い巾着)、膝の上に短い刀の鞘を右手で持つ。
・ポーズ:正面向きで正座、穏やかで勇敢な雰囲気。
・仲間:左に犬(クリーム色、茶耳、赤い首輪)、右後ろに猿(茶色、座り、にっこり)、右前に雉(緑の頭・赤い頬・青い翼・橙褐色の胴)。
・シンボル:背後右に大きな桃(淡いピンク~橙、葉つき)。
・旗:左肩後ろに赤いのぼり旗、縦書きで**「日本一」。※文字が不安定なモデルでは無地の赤旗**に置換。
・背景/小物:下部に芝生の地面(小さな草のタッチ)、左上に桜の花1輪。
・画風:日本の絵本風/ゆるふわ、水彩・ガッシュ感、生成りの紙テクスチャ、温かいセピア寄りトーン、柔らかい茶色のアウトライン、影は浅め。
・構図/比率:正方形(1:1)、キャラはセンター、犬=左、猿=右奥、雉=右手前、桃=右後ろ、旗=左後ろ。

② 移植性の高い共通プロンプト(JP)
日本の民話の英雄桃太郎(Momotaro / Momotarō, “Peach Boy”)の4–5歳の幼児。丸い童顔・黒髪・白いはちまき+青い鉢巻・小さなちょんまげ。水色の子ども用着物+赤い袖なし羽織+黄色い帯+紺の袴。腰のきび団子の小袋、右手に短い刀の鞘。正面向きで正座し、優しく勇敢な表情。犬(クリーム色・茶耳・赤い首輪)、猿(茶色)、雉(緑の頭・赤い頬・青い翼・橙褐色の胴)がそばにいる。右後ろに大きな桃、左後ろに赤いのぼり旗(文字は「日本一」。文字が難しければ無地の赤旗)。左上に桜の花。下部に芝生。日本の絵本風、水彩ガッシュ、生成り紙のテクスチャ、温かいセピア寄り、柔らかい茶色のアウトライン、影は浅め。正方形(1:1)。鎧武者・成人化・写実3D・西洋騎士・過度な文字崩れは避ける。

この後も英語バージョンや、Midjourney用などのプロンプトを出力してくれた。

まず情報量が全然違う!

記事の冒頭で出してもらったプロンプトの文字数が171文字なのに対して、今回出してもらったプロンプトは346文字と、情報量が約2倍にも増えた。

これならいけるのでは!?

早速、Midjourneyに②のプロンプトを入れてみた。

頑張ったほうだと思いません?

日本語が上手く表記できないのは今のところ諦めるとして、それ以外は概ね桃太郎ではないだろうか?

もう一度、各画像生成AIにこのプロンプトを入れてみると、

ImageFX

Canva

Gemini

そしてChatGPT

日本語までちゃんと表示できているのは、この中ではChatGPTだけだった。

Geminiは「OpenAI developer platform」で作った画像のほうが綺麗だったね。

ChatGPT以外の桃太郎は100点とは言い難いものの、それまでの画像よりも格段に桃太郎に近づいたと言える結果だった。

まとめ(プレゼント付き)

今回の実験では、プロンプトの情報量がいかに大事かということを思い知らされた。

キャラクターの生成において濃密なプロンプトを用意する方法は二つ。

一つは、「OpenAI developer platform」。

これはChatGPTやGeminiといった大規模言語モデルのAIであれば、プロンプトの意図を汲み取って出力することができそう。

もう一つは、「画像を詳細に読み込ませる」方法。

今回はChatGPTに「特徴を細部まで抽出して」と指示をしたのだが、この指示の出し方で正解だったのかをChatGPTに聞いてみた。

次回新しいチャットで画像生成を依頼する際、毎回今回のような詳細なプロンプトを出してもらうには、どのように指示を出したらよいですか?

いい質問!結論から言うと、次回も同じクオリティを安定して出すコツは、**「自己完結・移植性・抽出→整形の指示を“型”にして毎回使う」**ことです。

ということで、ChatGPT先生が「コピペで使える依頼テンプレ」を作ってくれた。

この画像から、他AIでも崩れない“自己完結プロンプト”を作って。
出力は①識別コア(内容最優先で最小漏れ)②共通プロンプトJP/EN(新規チャットでも通る)③モデル別(Midjourney/SDXL用+ネガティブ)。移植性重視・テキスト描画は無地代替も併記で。

<使い方>ChatGPTに画像を添付したら、上のプロンプトをコピペして入れるだけ。

私も試したが、かなり情報量が多い画像生成用プロンプトが出来上がった。

興味のある方は、上のプロンプトをコピペして試してみてほしい。

山田ゆうき

可愛いもの好き。AIを使って何か楽しいもの作れないか試行錯誤しています。

関連記事

コメント

この記事へのトラックバックはありません。