1.stable diffusionに同じ絵を描いて貰うためにはどうすれば良いか?まとめ
・人工知能に画像生成して貰う際にはpromptに加えてseedが与えられている
・seedは生成する画像にランダム性を持たせるために使われる大きな数字
・同じモデルを使ってpromptとseedを固定すれば他のPCで画像を再現可能
2.Repeatable Seedsとは?
2023年9月追記)使用しているツール、及びツールのVersionによってプロンプトの解釈方法が微妙に異なる場合があり、そういったケースでは同じシードでも生成されるイラストが異なってくる場合があります。
画像生成人工知能に絵を描いて貰う際には「どんな絵を描いて欲しいか?」を文章で指示する必要があり、この指示をprompt(プロンプト)と言います。
プロンプトの言い回しを工夫すると見栄えの良い画像が出来る事があるので、どんなプロンプトが有効なのかを皆が試行錯誤(これをプロンプトエンジニアリングと言います)しているのですが、実は人工知能に画像生成して貰う際には、もう一つ、裏で入力として与えられているものがあり、これが、seed(シード)です。
シードの実体は大きな数字です。生成する画像にランダム性を持たせるために使われます。逆に言えば、プロンプトとシードを固定すればランダム性は失われるため、実行するパソコンが異なっても同じモデル(今回の例だとCompVis/stable-diffusion-v1-4)を使っていればほぼ同じ画像を生成する事が出来ます。
DALL·E 2やMidjourneyなどでも生成した画像を元に似た画像を生成する機能がありますが、あれは、シードを固定して異なるプロンプトを与えているという事です。
数日前にstable diffusionでシードを明示的に指定する事が出来るColabが公開されました。(厳密にはstable diffusionと連携して動作するhuggingface/diffusers側の実装です。CompVis/stable-diffusion側の実装にはまだ取りこまれていないので自分のPCにCompVisの実装をcloneしている場合はまだ動かないかもしれません。関連リンクにhuggingface/diffusersのColabへのリンクを張っておきます)。
これにより、シードを固定したまま、プロンプトを変更する事が出来るようになり追加したプロンプトの効果が非常にわかりやすく整理できるようになりました。
以下、経験則によるものですが、私の実験結果をまとめます。
stable diffusionにおけるプロンプトの効果
(1)2種類のシードを使用
「68500306243898」と「3274144978572459」です。この2つはプロンプト実験中に比較的、顔が崩れにくかったため採用しています。
(2)ベースとなるプロンプト
以下の3つを使用しています。XXXXXの部分は後述の形容詞で差し替えます。
(2-1)「Image of Close-up of a XXXXX young woman’s face」
写真系の画像が生成される事を期待するプロンプトです。
(2-2)「Image of Close-up of a XXXXX girl’s face, by Studio Ghibli, Hayao Miyazaki, Nausicaa, Kushana, San, Sheeta, Clarisse」
ジブリ系のアニメ画像が生成される事を期待するプロンプトです。
(2-3)「Image of Close-up of a XXXXX girl’s face, trending on artstation”
美麗なイラスト系の画像が生成される事を期待するプロンプトです。
(3)形容詞の組み合わせ
(1)と(2)に対して「女性に対する形容詞として使われる事のある単語」を組み合わせます。
「何故、女性だけなのか?」と公平性やルッキズムの観点から突っ込みもあるかもしれませんが、本ページを作るために3000枚超の画像で試行錯誤しており、作業量的にそのような配慮をする余裕はございませんでした。しかし、評判が良いようだったら男性編もやるかもしれないのでTwitter等でご反応ください。
(4)形容詞以外の組み合わせ
(3)の結果に更に職業、装飾品、表情、場所などを追加します。
従って、(1)のシードのどちらかと(2)と(3)と(4)のプロンプト組み合わせを再現する事で、以下の画像は(huggingfaceの無料アカウント登録が必要ではありますが)全て関連リンクのColabで再現できますので余裕がある方は挑戦してみてください。
それではレッツスタート!
形容詞の効果
シードとベースプロンプトによって形容詞への敏感度が非常に異なってくる事がわかります。
形容詞以外の効果
形容詞をBreathtakingに固定し、職業、装飾物、表情、場所などを更に組み合わせた結果が以下になります。同じプロンプトでも全体的に変わってしまうものや、ほとんど変化が見られないものもあります。
シード再利用に関する考察
この結果から考えるに、シードをランダムにしたままでプロンプトの有効度を探るのは非常に困難な作業なので、トライアンドエラーでプロンプトを改良してみる場合はある程度シードを限定した方が効率が良いのではないかと思います。
また「シードとプロンプトを固定する事で画像の再現が他のパソコンでも可能」と言う事実は深く考えさせられるものがあります。
ちょっとひっかかる書き方に感じるかもしれませんが、ある意味、私は、計算機のボタンをランダムに押して、その結果、ランダムな数字が表示される事に感動しているお猿さんのようなものですね。
同じ順番で同じボタンを押せば同じ結果が得られるのです。
つまり「人工知能が人間より凄い想像力を発揮して人間以上の絵を描く事が出来るようになった!」と考えてしまいがちですが、シードとプロンプトの組み合わせを考えるのはあくまで人間ですし、出力の品質にはかなりのブレがあります。
そのため、理想を高く持つならば現時点の画像生成人工知能はまだまだツールの枠を出ていないなぁ、と思います。
しかし、逆に考えると、人間の創造性も同じ事なのかもしれません。つまり、ニューラルネットワークがランダム性を排除する事で内部が非常に高度で複雑な計算であっても同じ出力を出せると言う事であれば、人間の脳もランダム性を排除する事で同じ事になるのかもしれません。
そうすると、人間の自由意志や独創性というものは実は存在せず、私達もDNAによって組まれたアルゴリズムの命ずるままに、ランダム性に左右されながら動いているだけ説は一考の余地があるのかもしれません。
様々な絵柄を無限に創造していくかのように見えるstable diffusionによる画像群を見ながら、脳のアルゴリズムや人生について思いをはせました。
3.stable diffusionに同じ絵を描いて貰うためにはどうすれば良いか?関連リンク
1)colab.research.google.com
pcuenca / diffusers-examples