ComfyUI公式テンプレートから取得したKrea2用WFでは、前段にLLMによるプロンプト拡張処理が組み込まれていた

ComfyUI公式テンプレートから取得したKrea2用WFでは、前段にLLMによるプロンプト拡張処理が組み込まれていた

今回検証するのは、ComfyUIのテンプレートから取得したKrea2用ワークフローです。Krea2そのものの内部仕様を解析したものではなく、このワークフロー上でLLMがどのようにプロンプトを加工し、生成結果へ影響しているかを調べます。

はっちゃーん!
今日はKrea2のワークフローを解剖するでー!
物騒な言い方をするな。何を調べたんだ?
Krea2用のComfyUIワークフローを見てたら、画像を作る前にLLMが動いとったんよ
LLM? 画像生成モデルに直接プロンプトを渡してるわけじゃないのか?
せや。まず、うちが書いたプロンプトをLLMに渡して、Krea2向けの文章に書き直してから生成しとるみたいやねん
最近ローカル画像生成で使われている、プロンプト自動生成の仕組みか
たぶんそれやな。しかも、ただの翻訳やないで。構図、光、背景、雰囲気までLLMが勝手に考えよる

元のプロンプトは、LLMによって自然な文章に変換される

まず、うちの設定を日本語と英語を混ぜて書いたで
丸顔、少しふっくらした頬、長身、紫髪、RELAXのTシャツ……いつものあーちゃんだな
それをLLMに渡したら、こういう長い英文になったんよ

A beautiful theatrical anime illustration of A-chan, a cheerful young adult university girl...

タグの羅列ではなく、画像の内容を説明する文章になっているな
せやろ? 日本語で書いた顔の特徴も英語に変換されて、桜の背景や光まで一つの文章にまとめられとる
システムプロンプトを見ると、被写体、雰囲気、画風、光、構図を考えてから、一段落の画像生成用プロンプトを出力するよう指示されている
つまりこのWF、こういう流れやな

ユーザーのプロンプト → LLMが内容を整理・補完 → Krea2向けの自然文プロンプト → Krea2で画像生成

これなら、プロンプトを変更したときだけ生成開始が遅くなる理由も説明できる
画像を作る前に、LLMが文章を考えとったんやな(笑)

Krea2は品質タグがなくても高品質なのか?

次は品質タグの実験や!
masterpieceや8K resolutionを入れた文章と、入れていない文章を比較したんだな
せや。結果は、どっちも構図や服装はほぼ同じやった
品質タグ入りの方が、少し描き込みが細かく見える画像もあった。ただし、常に明確な差が出たわけではない
品質タグなしの方が綺麗に見える回もあったしなー
今回の比較では、品質タグ以外の文章も少し違っていた。特に、品質タグなし側にはclean line artやminimal shadingといった画風を変える表現が含まれていた
そっちが効いて、線が太めでシンプルな塗りになった可能性もあるんやな
だから現時点では、こう考えるのが妥当だろう

Krea2では品質タグが完全に無意味とは限らない。
ただし、品質タグよりも、画風・光・構図を具体的に説明する文章の方が影響は大きそう。

昔みたいにmasterpiece, best quality, 8Kを山盛りにせんでも、普通にええ絵が出るっちゅうことやな

単語の順番で、主役の見え方は変わるのか?

次はプロンプトの順番を変えてみたで
背景、衣服、キャラクターの順と、キャラクター、衣服、背景の順だな
背景から書いた方は、桜の存在感が強くなったように見えた
キャラクターから書いた方は、人物やRELAXのTシャツが目立つ構図になった
やっぱり先に書いた方が重要になるんちゃう?
可能性はある。ただし、画像生成には揺らぎもある。一枚ずつの比較だけで、順番が必ず重要度を決めるとは断定できない
慎重やなー
だが、Krea2が単語をバラバラに拾うだけでなく、文章の構造や文脈を使っている可能性は高そうだ
タグを並べるより、背景、人物、服装、動作を意味のまとまりで書いた方が良さそうやね

LLMはプロンプトを整えるだけではなく、構図まで決めていた

ここからが一番おもろかったところや
同じ内容をLLMに処理させたら、生成されたプロンプトが二種類に分かれたんだったな
パターン1は、桜の下に立つ女子大学生を普通に説明した文章
生成結果も、身体の広い範囲が入った構図になった
ところがパターン2には、LLMが勝手にこう書いとった

the scene is framed in a medium shot that captures her from the waist up

腰から上を写すミディアムショット、と明確に指定している
そしたら画像も、そのまんま腰から上になった(笑)
つまり、構図を決めたのはKrea2だけではない。前段のLLMが、画像ディレクターのような役割を持っている
うちが書いてへん構図まで勝手に決めよるねん
システムプロンプトには、複数の画風や構図を内部で検討して、最適なものを選ぶよう指示されている。だから入力が曖昧だと、LLMの判断でカメラ距離や背景が追加される
プロンプトを少し変えただけで構図まで変わる理由、Krea2本体やなくてLLM側の可能性もあるんやな

LLMが生成したプロンプトを、もう一度LLMに入れてみた

最後に、LLMが一度完成させたプロンプトを、そのまま入力欄へ貼り付けてみたで
再びLLMを通したわけだな。結果は?
吐き出されたプロンプト、変化なし!
すでに整理済みの文章だから、修正する必要がないと判断したのか
さらに、生成後の画像も構図、服装、背景はほぼ変化なし!
ただし、人物の顔や雰囲気だけが変わった
キャラだけ別人になったで(笑)
これは、LLMが構図や服装を強く固定している一方、顔立ちには生成モデル側の揺らぎが残っている、と考えれば説明できる
一度できたプロンプトをもう一回食わせても、LLMは『これで完成や』って返してきたんやな
このWFのLLMは、単に文章を長くする装置ではない。内容が不足していれば補完し、すでに完成していればそのまま通す、一種のプロンプト正規化器として動いているように見える

今回分かったこと

ほんなら、まとめるでー!
頼む
ComfyUIテンプレートのKrea2のWFは、こうや!
  • ユーザーが日本語やタグを含むプロンプトを書く
  • LLMが内容を自然な英文へ変換する
  • LLMが必要に応じて構図、光、背景、雰囲気を補う
  • 完成した画像キャプションをKrea2へ渡す
  • Krea2が文章を解釈して画像を生成する
そして実験結果からは、次の傾向が見えた
  • Krea2はタグの羅列より、自然な説明文との相性が良さそう
  • 品質タグの効果はあるとしても限定的
  • 具体的な画風、光、構図の説明の方が影響しやすい
  • LLMが構図を勝手に追加する場合がある
  • 完成済みのプロンプトを再入力すると、LLM出力はほぼ変化しない
  • 同じプロンプトでも、人物の顔には生成ごとの揺らぎが残る
結論! Krea2は自然言語を理解する画像モデル!
それだけでは不十分だな
む?
正確には、自然言語を理解するKrea2の前に、画像用の文章を考えるLLMが置かれている。二つが組み合わさっているから、普通のタグ入力とは違う挙動に見える
つまり……
Krea2のプロンプトを研究していたつもりが、半分はLLMの癖を研究していた
ややこしいわー!
だが、仕組みが分かれば対策もできる。構図や画風をLLM任せにしたくないなら、最初から明確に指定すればいい
逆に面倒なときは、日本語で雑に書いてLLMに丸投げやな!
その結果、勝手にミディアムショットにされても文句を言うなよ
それは文句言うでー!
言うのかよ

今回の検証で見えたのは、Krea2本体の全仕様ではなく、ComfyUIテンプレートWFに組み込まれたLLMプロンプト拡張処理の挙動です。

画像貼ろうと思ったんやけどなー
貼ればいいだろ
どの画像がどの実験か分からんようになった!
研究者として一番やったらダメなやつだ
生成しすぎたんやー!

※この記事は、ComfyUIテンプレートのKrea2用ワークフローを用いて行った実験結果をまとめたものです。画像生成モデル本体の内部仕様を解析したものではなく、ワークフロー上で観測できた挙動から推測しています。

A-chan chibi