生成前、プロンプトの見直しをしよう【PixAI】
こんにちは。(今回は、記事を下書きしておいたので、時刻的にもおかしくない挨拶)
私の記事を目にされた、ということは、おそらくPixAIでAI生成イラストを楽しんでおられる読者さんなのかと思われます。PixAIは楽しいですよね!
今回は、ちょっとだけ気を付ければ、生成イラストの質も上がって、クレジットも損しない(かもしれない)、そんな記事を書きたいと思います。
プロンプトを見直す、とは
「とりあえずPixAIを始めてみたが、どんなイラストを俺は(あたしは)生成したいのだろうか・・・?」と悩んで、
1girl, outdoor, flowerfield, smile, lokking at viewer, onepiece,
(意味を書くと、「一人の少女、屋外、お花畑、笑顔、カメラ目線、ワンピース(を着ている)」となります)
みたいなプロンプトを打ち込んで、生成してみたら・・・、
「出来た・・・けど、なんか違う。」ってこと、ありますよね?(ひとまずここは「あるある」と思ってください。じゃないと話が進まないのでw)
(PixAIでは、日本語も使えるのですが)AI君(割と従順。だけど細かいところで気を遣い過ぎ)は、与えられたキーワードに沿って「こんなイラストでいいの?」と返してくる。AI生成イラストとは、そんな仕組みです。(詳しいことは興味があったらご自身で調べてみてくださいね。)
ただ、曖昧な部分はAI君は勝手に解釈して勝手に描いて(生成して)しまう。
だから、PixAIを使っている人(我々)は、詳細まで事細かに説明しないといけない。
そして、「こういう絵は描かないで(生成しないで)欲しい」という部分(これを「ネガティブプロンプト」と言います)も、説明しないといけない。
つまり、AIを使う人は生成したい(のと、生成したくない)イラストについて、とにかく説明しないといけないんです。しかも、基本的に英語で。
・・・また長くなりそうなので、そろそろ本題に入りますが、その説明をする内容を「(通常)プロンプト」と言いまして、その辺の意味を間違えて(良くわかってなくて)プロンプトを書いてない?という記事を書きたいと思います。
※ 私は英語のプロンプトの方が、おそらくニュアンスが(AI君に)伝わりやすい、と思っているので(翻訳アプリを使えばそれっぽい単語に訳してくれるし、明らかな誤訳は手直しすれば良いんだし)英語を使っていますが、日本語のプロンプトでもそこそこはイケると思う。(まだ試していません)
そのカッコの意味、合ってる?
例えば、良く
{{ prompt1, prompt2, :1.5}}
なんてプロンプトを見かけたりしますが、これ、意味としては
「プロンプト1とプロンプト2を、1.5÷1.5倍強調して」
という意味になってしまいます。
「掛ける」ではないのです。そもそも「{ }」って、カッコ内のプロンプトの内容を弱める、って意味なのです。
で、カッコの回数分だけ、弱めることになってしまい、その結果、1.5に1.5分の1を掛けるので、1.5÷1.5になります。
(そして計算結果は1なので、カッコの意味がなくなる、と)
次に
(( prompt1, prompt2, :1.4))
これもやりたいことはわかりますが、意味としては
「プロンプト1とプロンプト2を、1.4×1.4倍強調して」
という意味なので、かなりの強調度になってしまいます。(「( )」は、カッコ内のプロンプトの内容を強める、という意味になります)
計算すると、1.4に1.4を掛けて、計算結果は1.96(ほぼ2)。
かなり、強調度がキツくなってしまいますね。
(そもそも、強弱は 0.6くらい〜1.5くらい が適切(らしい))
ここでプロンプト内のカッコについてまとめると(以下の鍵カッコは見やすくするために付けているだけなので、気にしないでください)
「( )」・・・カッコ内のプロンプトを強調する(カッコを重ねるとより強くなる)
「[ ]」「{ }」・・・カッコ内のプロンプトを弱める(カッコを重ねるとより弱くなる)
という意味になって、カッコ内の「:n.n」は、強さ(弱さ)を明示的に指定する、ということになります。(小数点第二位まで)
ちなみにカッコひとつ付けたときのデフォルト値が、「( )」の場合は1.1倍、「[ ]」「{ }」の場合は0.9倍になります。
なので、以下のような
{{ prompt1, prompt2, :1.5}} とか、
(( prompt1, prompt2, :0.75)) とか、
人間が見れば、やりたいことはわかるのだけども、なんか変な書き方をしているなあ、となるのですよ。
(ちなみに数値を明示的に書くと、書いた数値が採用されるみたい。なので気付きにくいです。カッコを複数個重ねてみて、やっと気付く、みたいな)
プロンプトにこんなこと、書いてない?
良くある例として、
( extra guitar, extra guitar neck, :1.3)
みたいな指定の方法があると思うのですよ。
(意味は「余計なギター、余計なギターのネック、を1.3倍で」みたいな感じ)
これをネガティブ指定にするのではなく、間違えて通常プロンプトの欄に書いちゃう。
そうしたら、AI君は「あら、随分とマニアックな好みなのねえ。わかったわ。ギターを多めに描いてあげるわ。」と(何故かおネエ口調)、張り切って(かどうかは知らんけど)ギターを3本も4本も(しかもネックだけ空中に、とか)描いてくださる、という。
そう。正解はネガティブ欄に書かないと、なんです。
あと、せっかくネガティブ欄に書いているのに
{{ extra limbs, extra legs, extra arms, extra hands, extra fingers, }}
なんて書いちゃう。
(意味は「余計な手足、余計な脚、余計な腕、余計な手、余計な指、をだいたい 0.8倍で」みたいな感じ)
せっかくネガティブ欄に書いているのに、弱めてどーする!となってしまうのです。
これでめでたく、節足動物か阿修羅像のような、可愛い女の子が爆誕(するかもしれない)です!!w
そう。この場合は、カッコ書きの意味を間違えている(弱めている)、ということです。
他には(特に慌てているとやりがちなのですが)
[ extra arms, :1.5]
みたいなプロンプトを、慌てているので通常プロンプト欄に書いちゃう。
(もうオチは書きませんよw)
これも気をつけましょう。
終わりに
実は、上に挙げた一通りのプロンプトですが、実際に私がやってしまった失敗例です。
(生成する前に気付いて、未遂で済んだものも含みます)
あと、複数カッコの例は、もしかしたら数字を明示的に指定していたら、掛け算や割り算で処理していないのかも。(数字を優先する?)
どちらにせよ、複数カッコは(訳がわからなくなるので)あまり使用するべきではないな、と思いました。
それでは、また。
この記事が気に入ったらサポートをしてみませんか?