【StableDiffusion】自然言語プロンプトについて
自然言語プロンプトとは
まずはこちらの画像を見てください。
なかなかいい生成結果じゃないでしょうか。右の女の子の頭の上に少しおかしな背景と繋いだ手の指に目を瞑れば、どんなシチュエーションなのか、想像し難くはないでしょう。
これのプロンプトは以下のものです。
absurdres, highres, ultra detailed,Two girls playing in puddles wearing rain boots. In the center of the puddles, there is a clear reflection of the transparent water surface with bright light reflecting upon it. The girls are dressed in yellow raincoats and wearing boots, allowing them to play in the puddles without getting wet. One of them is an energetic girl with her hair tied up in pigtails, while the other has cute short twin tails. Holding hands, they jump and frolic, creating splashes of water. The weather is fine after the rain, and a vibrant rainbow stretches across the background. The colors of the rainbow harmonize with the girls' smiles, creating a joyful atmosphere.
(プロンプトはコピペです、コピペ元はMajinAIに掲載されているもののためURLを貼ると不適切な内容が表示されかねないので、元画像のIDだけ載せます、お許し下さい。mU9CAfW )
プロンプトの一部しか反映されていないじゃないですか!虹はどこにもないじゃないですか!
はい、これが自然言語プロンプトと称されるものです。StableDiffusionの使い方を検索すれば、言葉を並べて記述するやり方を推奨する記事が多いでしょう。その理由は上記の例から明らかで、長々と文章を書いても、多くの要素が無視されるからです。
しかし、自然言語プロンプトは単なる無駄なのでしょうか。私はそう思いません。というのも、WAKAME理論が示したように、AIはプロンプトを読み飛ばさず、きちんと最初から最後まで確認して、反映できない単語があっても、それをスキップするのではなく、AIなりの判断で生成結果に影響を与えているのです。
AIは文章が読めるのか
自然言語プロンプトは英語の作文力が低くても、chatGPTに助けてもらえば、単語ベースよりも簡単に作成できます。
今回は私が以前いい感じに生成できていた、「お父さんのものと私のものと一緒に洗わないでよ」を例に検証していきたいと思います。
しかし、今回は成功例と同じプロンプトではなく、改にGPTに「洗濯物に指を指して父親と口論する娘」を生成してもらいましょう。自然言語プロンプトを作る時、「彼女は涙を流しながらありがとうと言った」よりも、「女の子は泣きながら話している」という文脈を無視した書き方の方が上手くいく時が多いと感じます。
はい、一発でそれっぽい構図が出ました。AIには普通の家庭は洗濯機を一台しか置かないという文化的概念がないようです。
仮に自然言語プロンプトの効果はその中のAIが読み取れそうな名詞と動詞の効果だけなら、上述のプロンプトを名詞と動詞の羅列に書き直しても、生成結果の概ねの印象は変わらないはずです。
例えば、「洗濯物に指を差す」を表現するために「laundry, apeal」を抽出しても、この2つの単語だけを見て、ここまでの過程が知らない人間が「このプロンプトは洗濯物に指を差す様子を表現したいでしょう」と推論できません。つまり、人間側からすれば、一方(自然言語)は読めばシチュエーションが想像できる文章であるのに対して、もう一方(抽出された言葉の羅列)は状況が特定しにくい不完全な情報です。もしこの2つの生成結果がほとんど変わらなければ、「AIは抽出された不完全な情報を補完する力があり、自然言語プロンプトの文章は無駄です。」ということが言えます。逆に結果が変わったら「文章はAIが状況の特定するのを手伝っている」ということです。
抽出された単語ベースプロンプトで生成した結果はこちらです。
さほど変化があるように見えませんよね。
実はそれぞれ100回を生成しました。成功例通りの構図は自然言語が28%で、単語ベースが27%です。また、失敗する時はどういう失敗をしたのかも統計しました。自然言語のほうが若干キャラクターの不備が多く、単語ベースのほうがアクションが違うことが多かったが、顕著な差は見られませんでした。
ということで、誠に残念ながら、画像生成AIはあくまで画像生成が仕事で、文章を読み解くのが得意じゃないようです。
メリットとデメリット
自然言語プロンプトの長い文章は単語ベースプロンプトよりポジティブな作用はないが、単語ベースと比べて生成結果に悪影響を与えることもなさそうです。
しかし、AIにとっては別にどちらでもいいかもしれませんが、人間にとって明らかにそれぞれのメリットとデメリットがあります。
1.手書きの時、自然言語プロンプトのほうが直感的に書ける分、書かないといけない文字量が多いです。
2.プロンプトを読む時、自然言語プロンプトであれば何を描写したいのかが明白です。
3.自然言語プロンプトでは複数回の言及や文脈が存在するので、修正する手間がかかります。
といったところでしょうか。日本語をメインに使っている人だとあえて英語で自然言語プロンプトを書く人はなかなかいないはずなので、大体はGPTなどが生成してくれるものなのではないかと思います。そういう時は、生成した自然言語プロンプトは単語ベースプロンプトと同等な効果があると考えても問題はないと考えても大丈夫、というのが今回の結論です。
ただ、最初に述べたように、やはり私としては文章を構成するあらゆる単語はきちんと読み取られていると考えているので、今後は別の角度やケースで試し続けて、何か発見があればまた記事にしたいと思います。
この記事が気に入ったらサポートをしてみませんか?